从open acc例程指令返回错误代码

时间:2018-08-13 18:08:42

标签: gpu openacc pgi

我正在使用OPENACC将CPU代码移植到GPU, 例程返回退出代码

int myFunction()
{
// so stuff 
// it has a check for division by zero
int returnVal=SUCCESS;
if(fabs(a)<1e-14)
{
returnVal=1;
}
return(returnVal);
}

添加

#pragma acc routine seq
int myFunction()
{
// so stuff 
// it has a check for division by zero
int returnVal=SUCCESS;
if(fabs(a)<1e-14)
{
returnVal=1;
}
return(returnVal);
}

会出现以下错误, 调用cuStreamSynchronize返回错误719:启动失败(通常是无效的指针取消引用)

对cuMemFreeHost的调用返回错误719:启动失败(通常是无效的指针取消引用)


主要作业正常终止,但是返回了1个进程 一个非零的退出代码。按用户方向,作业已中止。

如果我通过将返回值更改为void来消除收益,则效果很好, 正确的做法是什么? 考虑到这是在循环内调用的事实,我确实了解竞态条件,是否应该私有化返回值,然后对其进行折减?

0 个答案:

没有答案