장치에 할당 할 클래스를 만들려고합니다. 생성자를 장치에서 실행하여 필드를 포함하여 전체 개체가 호스트 개체를 만들지 않고 장치에 자동으로 할당되도록 한 다음 장치에 수동으로 복사해야합니다.장치에 필드가있는 개체를 직접 만듭니다.
내가 추력을 사용하고있어 device_new 여기
내 코드입니다 : 내가__device__
와 생성자를 주석과 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");
}
나 왜? 도움
"작동하지 않음"은 문제에 대한 올바른 설명이 아닙니다. 문제가 무엇인지 정확하게 설명하십시오. – talonmies
커널이 아무 것도 인쇄하지 않습니다. –
이 코드에는 * no * 오류 검사가 없습니다. 몇 가지 방법을 추가하여 시작하십시오 (방법은 [이 질문] (http://stackoverflow.com/q/14038589/681865) 참조). 그러면 무엇이 실패했는지 자세히 알 수 있습니다. – talonmies