小编jjc*_*mar的帖子

在 vscode 中打开 ipynb 文件时,JSON 中位置 0 出现意外标记 #

我有一个 ipynb 文件(一个 jupyter 笔记本),我在 vscode 中使用 python 扩展名打开它。我收到标题中的错误

Unexpected token # in JSON at position 0

我根本不明白,因为该文件应该被解释为 python 文件。

我可以将扩展名更改为 .py 并通过 vscode 很好地打开它,但我没有装饰器来运行/调试单元格,如此处定义的(https://code.visualstudio.com/docs/python/jupyter-support-py) 。

我知道该文件是正确的,因为我已在另一台计算机上的另一个 vscode 安装中使用它并且工作正常。

我不知道我的环境中可能配置错误......任何顶部都会非常有帮助。

这是我的实际 python 代码,它在我的实际环境中产生了上述错误。

问题.ipynb

# %%
import world as w
import world_eg as weg
import world_case1 as wc1
import simulator_static as simulation
import numpy as np
from scipy.optimize import minimize
import matplotlib.pyplot as plt```

From the error, I understand that is parsing the file as a JSON file …
Run Code Online (Sandbox Code Playgroud)

python jupyter visual-studio-code

12
推荐指数
2
解决办法
3万
查看次数

在C ++中创建类型的类型列表组合

我试图创建一些工具来创建基于其他类型组合的类型列表。

可以说我们有三种类型

struct A{};
struct B{};
struct C{};
Run Code Online (Sandbox Code Playgroud)

我想获得一个元组列表,其中包含N,A,B或C个类型的所有可能组合。

对于N = 2的情况,这将是

std::tuple<A,A>
std::tuple<A,B>
std::tuple<A,C>
std::tuple<B,A>
std::tuple<B,B>
std::tuple<B,C>
std::tuple<C,A>
std::tuple<C,B>
std::tuple<C,C>
Run Code Online (Sandbox Code Playgroud)

这个想法是创建一个元组来容纳所有这些类型的容器,因此我以后可以在容器列表中存储任何这些类型。

template <typename ...Combinations>
using CombinationList = std::tuple<std::vector<Combinations>...>;
Run Code Online (Sandbox Code Playgroud)

我已经有一种机制可以在适合的容器中插入一个特殊的元素,但是我对如何创建组合一无所知。

在人们建议使用的评论上std::vector<Combination<std::variant<A,C,B>, std::variant<A,B,C>>>。尽管这从技术上解决了问题,但我不喜欢使用它,因为A,BC的大小非常不同,并且我不想在运行时访问变体。另外,在某些时候,我需要将所有数据上传到

std::tuple<std::vector<Combination>...>
Run Code Online (Sandbox Code Playgroud)

到GPU,所以我不能在这里使用std :: variant。

我该怎么办?

谢谢!

PD:这与一个问题有关(一个枚举值(729个组合...)的组合爆炸)。 在这个问题中,我问我如何轻松生成将放入容器内的类型。现在我需要生成容器。

c++ cartesian-product template-meta-programming variadic-templates c++14

11
推荐指数
2
解决办法
804
查看次数

理解 AMD GPU 中的 oneAPI 和 SYCL

我是一名 GPGPU 开发人员,我使用 CUDA 完成了所有工作。最近,我为我的家庭设置购买了 AMD GPU,并且我一直在阅读有关 SYCL 和 oneAPI 的文章,但我不确定我是否理解它们是什么,它们是如何互补的。如果我理解正确的话,SYCL 是 Khronos 开发的一个标准,它允许在 C++ 中创建并行软件。它需要一个由 SYCL 实现提供的自定义工具链,并且存在多个实现。

另一方面,oneAPI 是 SYCL 的一个实现,带有一些额外的扩展(将来可能会添加到 SYCL 标准中)和一些带有典型并行库的库,对吗?

因为我有一个AMD GPU,我想用它来做一些GPGPU,但生态系统有点吓人。我们有台面驱动程序、AMD 驱动程序、不同的 openCL 实现、HIP ……这一切是如何组合在一起的?

amd-gpu hip sycl intel-oneapi

10
推荐指数
1
解决办法
1781
查看次数

将类模板的实例存储在另一个类模板中

假设我有一个如下所示的模板

template <typename T>
struct A {};
Run Code Online (Sandbox Code Playgroud)

在另一个类中存储该模板的不同实例化向量的最佳方法是什么?

我考虑过类似的事情,但是当然,它迫使我声明所有我不想支持的类型,在我的特殊情况下,这可能会迅速升级。

template <typename ...Args>
struct Holder
{

std::tuple<std::vector<Args>...> tup;

template <typename T>
void push_back(T &&t); // Method to insert in the appropiate vector, considering only one match
}
Run Code Online (Sandbox Code Playgroud)

鉴于我有 Push_back 方法,我用它来将元素插入元组中的适当向量中,并且除了使用 Push_back 方法插入的类型之外我不需要任何其他类型,是否有更好的方法来定义持有者?

编辑:理想情况下,我希望能够在元组的不同元素上调用函数模板。

通用调用

template <typename T>
void foo(T t)
Run Code Online (Sandbox Code Playgroud)

对 A 的实际实例化的专门调用

template <typename T>
void foo(A<T> t)
Run Code Online (Sandbox Code Playgroud)

c++ templates tuples

5
推荐指数
1
解决办法
96
查看次数

使用 CMake 在 Windows(MSVC) 中查找库

我在尝试链接 MSVC 中的库时遇到问题。我为发布和调试编译了一些外部依赖项,并将它们设置在不同的文件夹中(${PROJECT_SOURCE_DIR}/External/Debug/lib 和 ${PROJECT_SOURCE_DIR}/External/Release/lib)。我已经编写了一些 FindFoo.cmake 模块,它们作为 find_library 命令的提示 ${EXTERNAL_LIB_DIR},它根据 ${CMAKE_BUILD_TYPE} 设置。

这项工作在 Linux 上很完美,但在 Windows 中失败(它总是将 EXTERNAL_LIB_DIR 路径设置为调试路径)并且由于 _ITERATOR_DEBUG_LEVEL 而无法链接。

这是我正在使用的 FindFoo.cmake 的示例。

FIND_PATH(SOIL_INCLUDE_DIR                                                                                    
NAMES SOIL/SOIL.h                                                                                         
PATHS                                                                                                     
${EXTERNAL_DIR}/soil/inc                                                                                  
NO_DEFAULT_PATH                                                                                           
)                                                                                                         


find_library(                                                                                                 
SOIL_LIBRARY                                                                                              
    NAMES SOIL soil soil_debug                                                                            
PATHS                                                                                                     
    ${EXTERNAL_LIB_DIR}                                                                                   
    NO_DEFAULT_PATH                                                                                       
)                                                                                                         


INCLUDE(FindPackageHandleStandardArgs)                                                                        

FIND_PACKAGE_HANDLE_STANDARD_ARGS(SOIL DEFAULT_MSG SOIL_LIBRARY S 
SOIL_INCLUDE_DIR)                             


if (${SOIL_FOUND})                                                                                            
SET(SOIL_INCLUDE_DIRS ${SOIL_INCLUDE_DIR})                                                                
SET(SOIL_LIBRARIES    ${SOIL_LIBRARY})                                                                    
endif()                                                                                                       


MARK_AS_ADVANCED( SOIL_LIBRARY SOIL_INCLUDE_DIR ) 
Run Code Online (Sandbox Code Playgroud)

而这里创建EXTERNAL_LIB_DIR #设置外部库

set(EXTERNAL_DIR ${PROJECT_SOURCE_DIR}/External)                                                              

if (${CMAKE_BUILD_TYPE} MATCHES Debug)                                                                        
set(EXTERNAL_LIB_DIR ${PROJECT_SOURCE_DIR}/External/lib/Debug)                                            
else()                                                                                                        
set(EXTERNAL_LIB_DIR ${PROJECT_SOURCE_DIR}/External/lib/Release)                                          

endif()                                                                                                       
message(STATUS "Using libraries in ${EXTERNAL_LIB_DIR}") 
Run Code Online (Sandbox Code Playgroud)

我应该如何修改创建 EXTERNAL_LIB_DIR 变量的 …

c++ windows cmake visual-studio

4
推荐指数
1
解决办法
963
查看次数

在 python 中解压枚举的 zip

我想用索引迭代三个列表。为此,我尝试使用enumerate(zip(x, y, z)),但是当我尝试解压它时,它失败了

[f.write('mVtet0.row({}) = Eigen::Vector3d({}, {}, {})\n'.format(i, x,y,z) for i, x, y, z in enumerate(zip(x,y,z))]
Run Code Online (Sandbox Code Playgroud)

给出以下错误:ValueError: not enough values to unpack (expected 4, got 2)

我理解这个问题, enumerate 创建一个带有索引和 zip 结果的元组。打开所有东西的正确方法是什么?

python

3
推荐指数
1
解决办法
771
查看次数

无法在 std::array 上使用 std::apply

我正在尝试将 lambda 应用于 std::array 的元素。

\n
    std::array<int, 4> fixIndices = {1, 60, 127, 187};\n\n    std::apply(\n        [](int id) {\n            std::cout << id;\n        },\n        fixIndices);\n
Run Code Online (Sandbox Code Playgroud)\n

但是,这个简单的代码无法编译

\n
/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include/c++/tuple:1727:27: error: no matching function for call to \xe2\x80\x98__invoke(****)::<lambda(int)>, int&, int&, int&, int&)\xe2\x80\x99\n 1727 |       return std::__invoke(std::forward<_Fn>(__f),\n      |              ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~\n 1728 |       std::get<_Idx>(std::forward<_Tuple>(__t))...);\n
Run Code Online (Sandbox Code Playgroud)\n

我缺少什么?

\n

c++ arrays apply

3
推荐指数
2
解决办法
658
查看次数

if constexpr 块未编译

我有一个类,可以从空结构或具有某些成员的结构继承,具体取决于bool. 使用相同的方法bool,我添加一个if constexpr块来访问基类的成员,但出现编译器错误

struct A{};
struct B{};
struct C{};

template <typename J0, typename J1>
struct HasFriction {
    constexpr static bool value = false;
};

template <> struct HasFriction<A,B> {
    constexpr static bool value = true;
};

template <bool> struct Friction { };
template <> struct Friction<true> { int value = 4; };

template <typename J0, typename J1>
struct MyStruct : public Friction<HasFriction<J0, J1>::value> {};

int main()
{
    if constexpr (HasFriction<A, C>::value) {
        MyStruct<A,C> f; …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming c++17 if-constexpr

3
推荐指数
1
解决办法
165
查看次数

求和两个向量并存储 stl 算法

我有两个向量,我想做类似的事情

v2[i] = v1[i] +v2[i];
Run Code Online (Sandbox Code Playgroud)

我试过了std::copy,但显然只能这样做v2[i] = v1[i];

STL 中是否有任何算法可以执行此求和?

c++ stl

2
推荐指数
1
解决办法
66
查看次数

clangd for vscode 具有多个构建目录

我正在尝试使用 clangd 在 vscode 中完成代码。我正在使用 CMake 进行项目设置,并创建一个编译数据库。但是,我有几个具有不同标志的构建目录(调试、发布...),并且 clangd 要求在源目录中包含编译数据库。这是不可能的,因为每种构建类型的编译数据库都不同......

当您有多种构建类型时,有什么方法可以使用 clangd 吗?

visual-studio-code clangd

2
推荐指数
1
解决办法
2851
查看次数