デバイスに割り当てられるクラスを作成しようとしています。ホストオブジェクトを作成して手動でデバイスにコピーするのではなく、内部のフィールドを含むオブジェクト全体がデバイスに自動的に割り当てられるように、コンストラクターをデバイスで実行したいと考えています。
スラスト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__
device_new (thrust) を使用しましたが、これは機能しません。誰かが理由を説明してもらえますか?
助けを求める乾杯