相关疑难解决方法(0)

CUDA设备代码支持哪些真正的C++语言结构?

3.2版本的CUDA文档的附录D是指CUDA设备代码中的C++支持.
很明显,CUDA支持"计算能力2.x设备的类".但是,我正在使用计算能力1.1和1.3的设备,我可以使用此功能!

例如,此代码有效:

// class definition voluntary simplified
class Foo {
  private:
    int x_;

  public:
    __device__ Foo() { x_ = 42; }
    __device__ void bar() { return x_; }
};


//kernel using the previous class
__global__ void testKernel(uint32_t* ddata) {
    Foo f;
    ddata[threadIdx.x] = f.bar(); 
}
Run Code Online (Sandbox Code Playgroud)

我也可以使用广泛的库,如Thrust :: random random generation classes.我唯一的猜测是,由于__device__标记函数的自动内联,我能够这样做,但这并不能解释成员变量的处理方式.

您是否曾在相同的条件下使用过这些功能,或者您能解释一下为什么我的CUDA代码会以这种方式运行吗?参考指南中有什么问题吗?

c++ cuda gpu gpgpu class

10
推荐指数
1
解决办法
4538
查看次数

标签 统计

c++ ×1

class ×1

cuda ×1

gpgpu ×1

gpu ×1