我正在尝试创建一个将在设备上分配的类。我希望构造函数在设备上运行,以便包括内部字段在内的整个对象在设备上自动分配,而不必创建主机对象然后手动将其复制到设备。
我正在使用推力 device_new
这是我的代码:
using namespace thrust;
class Particle
{
public:
int* data;
__device__ Particle()
{
data = new int[10];
for (int i=0; i<10; i++)
{
data[i] = i*2;
}
}
};
__global__ void test(Particle* p)
{
for (int i=0; i<10; i++)
printf("%d\n", p->data[i]);
}
int main() {
device_ptr<Particle> p = device_new<Particle>();
test<<<1,1>>>(thrust::raw_pointer_cast(p));
cudaDeviceSynchronize();
printf("Done!\n");
}
我用 device_new (推力)注释了构造函数__device__
,但这不起作用,有人可以向我解释为什么吗?
为帮助喝彩