在CUDA组合中__device__,__host__允许从device和来调用函数host.
我的问题是:使用两者的任何例子是否真的比仅定义__device__ 或__host__?
规范的例子是在CUDA中使用C++类.在CUDA C++模型中,如果要在设备和主机内存空间中实例化该类,则必须在主机和设备代码中定义类的每个成员函数.
最简单的案例是一个简单的类:
class example
{
public:
float a, b;
example(float _a, float _b) : a(_a), b(_b) {};
}
Run Code Online (Sandbox Code Playgroud)
在CUDA中无法在类中使用它,您必须在设备和主机代码中定义构造函数,因此:
class example
{
public:
float a, b;
__device__ __host__
example(float _a, float _b) : a(_a), b(_b) {};
}
Run Code Online (Sandbox Code Playgroud)