Параметры для use_device() openACC
Разрешено ли передавать объекты вместо указателя на следующую директиву
прагма в соответствии с host_data use_device(myobject)
здесь код, Pn - объект, а Pn.P - указатель на массив, в котором хранятся данные
#pragma acc data pcopyin( rank,N )
{
#pragma acc host_data use_device( Pn )
{
cufftPlan1d( &plan, 1000 , CUFFT_Z2Z, 1 );
cufftExecZ2Z( plan, (cufftDoubleComplex*)Pn.P, (cufftDoubleComplex *)Pn.P, CUFFT_FORWARD );
}
}
бег дает Seg Fault
2 ответа
Попробуйте "host_data use_device( Pn.P)", чтобы использовать адрес устройства "P".
Когда вы передаете "Pn.P" в качестве аргумента, вы получаете доступ к "Pn" на хосте, чтобы получить адрес "P". Следовательно, помещая "Pn" в область host_data, код использует адрес устройства, который, в свою очередь, вызывает segv.