0

是否允许传递对象而不是指向以下指令的指针

pragma acc 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

4

2 回答 2

1

尝试“host_data use_device(Pn.P)”,以便使用“P”的设备地址。

当您将“Pn.P”作为参数传递时,您正在访问主机上的“Pn”以获取“P”的地址。因此,通过将“Pn”放在 host_data 区域中,代码正在使用设备地址,这反过来会导致 segv。

于 2018-02-22T22:37:20.800 回答
0

使用 PGI 18.1 版本解决了这个问题

于 2018-03-02T16:02:41.517 回答