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

dre*_*ash 3 c cuda gpu

CUDA组合中__device__,__host__允许从device和来调用函数host.

我的问题是:使用两者的任何例子是否真的比仅定义__device____host__

tal*_*ies 5

规范的例子是在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)