是否允许传递对象而不是指向以下指令的指针
这里是代码,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 );
}
}
runing给出Seg Fault
答案 0 :(得分:0)
尝试" host_data use_device(Pn.P)"以便使用" P"的设备地址。
当你通过" Pn.P"作为一个论点,你正在访问" Pn"在主机上获取" P"的地址。因此,通过放置" Pn"在host_data区域中,代码使用设备地址,而设备地址又导致segv。
答案 1 :(得分:0)
使用版本PGI 18.1解决了这个问题