所以,我有一个要移植到 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/