我们应该使用__device__和__host__的示例

时间:2012-11-27 16:04:09

标签: c cuda gpu

CUDA合并__device____host__允许从devicehost调用函数。

我的问题是:使用两者的示例是否真的更适合仅定义__device____host__

1 个答案:

答案 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) {};
}