har*_*ism 54
在#include的头文件中定义类,就像在C++中一样.
必须从设备代码调用的任何方法都应使用__device__和__host__declspecs 定义,包括构造函数和析构函数(如果您计划在设备上使用new/)delete(注意new/ delete需要CUDA 4.0和计算能力2.0或更高的GPU).
您可能想要定义一个宏
#ifdef __CUDACC__
#define CUDA_CALLABLE_MEMBER __host__ __device__
#else
#define CUDA_CALLABLE_MEMBER
#endif
Run Code Online (Sandbox Code Playgroud)
然后在您的成员函数上使用此宏
class Foo {
public:
CUDA_CALLABLE_MEMBER Foo() {}
CUDA_CALLABLE_MEMBER ~Foo() {}
CUDA_CALLABLE_MEMBER void aMethod() {}
};
Run Code Online (Sandbox Code Playgroud)
原因是只有CUDA编译器知道__device__并且__host__- 您的主机C++编译器会引发错误.
编辑:注意__CUDACC__由NVCC在编译CUDA文件时定义.这可以在使用NVCC编译.cu文件时,也可以在使用命令行选项编译任何文件时使用-x cu.
| 归档时间: |
|
| 查看次数: |
26947 次 |
| 最近记录: |