c++ - 设备代码中 CUDA 类静态成员的成语?

标签 c++ c++11 cuda static-members gpu

所以,我有一个要移植到 CUDA 9 的 C++14 库。我实际上(我认为)非常了解 CUDA,但自那以后我没有直接接触过它CUDA 6.

通常,我在代码中使用大量模板和小类。令我惊讶的是,在 CUDA 9 中仍然不能有 static __device__ 类成员,但全局变量没问题。对此有好的成语或解决方法吗?人们通常做什么?

编辑:我应该清楚,我的意思是专门针对模板类。如果该类未模板化,则非常简单。

编辑 2:这是一些示例代码

在正常的主机端 C++ 中,我这样做:

template <typename T>
class MyClass {
    static T my_static_member;
};

在设备上,这不会编译,那么什么是好的等价物?

template <typename T>
class MyClass {
    static __device__ T my_static_member;
};

最佳答案

如果您compile your CUDA with clang,您的原始代码就可以工作.

关于c++ - 设备代码中 CUDA 类静态成员的成语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029906/

相关文章:

c++ - 为什么我不能使用函数按值对 map 进行排序?

c++ - 二叉树插入(按顺序排序)

c++ - 具有元组类型子集相应参数的模板函数

c++ - 推力按键即时排序还是不同的方法?

c++ - 如何在 VS2019 CUDA 项目中启用 C++17 代码生成

Cuda,尝试为设备中的整数分配内存时出错

python - 在 C++ 中初始化非常大的 vector

c++ - 使用指向成员函数的指针 C++ 将成员函数作为参数传递

c++ - 如何重载模板函数

c++ - 如何向集合中插入一个新值并同时删除另一个值?