【发布时间】:2011-02-27 00:57:44
【问题描述】:
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();
}
我还可以使用广泛的库,例如 Thrust::random 随机生成类。
我唯一的猜测是,由于__device__ 标记函数的自动内联,我能够做到这一点,但这并不能解释成员变量的处理。
您是否曾经在相同条件下使用过这些功能,或者您能向我解释一下为什么我的 CUDA 代码会这样吗?参考指南有什么问题吗?
【问题讨论】: