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