我想将此循环与OpenACC中的 " min" 功能并行,但这是不可能的。编译后编译器显示以下消息:
121行属于for(k = j + 1; k <= bi; k ++)
PGCC-S-0155-加速器区域无效:不允许进入或离开区域(LATSONEopenacc.cpp:121)
主:
121,加速器区域无效:不允许分支进入或离开区域
const T1&amp; std :: min(const T1&amp;,const T1&amp;):
1,包括&#34; iostream&#34;
39,包括&#34; ostream&#34;
38,包括&#34; ios&#34;
40,包括&#34; char_traits.h&#34;
39,包括&#34; stl_algobase.h&#34;
194,生成隐式acc例程seq
生成acc例程seq
生成特斯拉代码
PGCC / x86 Linux 17.10-0:编译完成时出现严重错误
//code in c++
#pragma acc parallel loop reduction(min:mini)
for(k=j+1;k<=bi;k++){
resultt=( ((auxx[i][k]-auxx[i][j])*(auxx[i][k]-auxx[i][j]))+((auxy[i][k]-auxy[i][j])*(auxy[i][k]-auxy[i][j])));
mini=std::min(resultt,mini);
}
编译时,我使用的命令是:
pgc++ -acc -ta=nvidia,time -Minfo=accel LATSONEopenacc.cpp -o output
谢谢
答案 0 :(得分:0)
&#34;的std ::分钟&#34;包含异常处理程序,因此有关在并行区域之外分支的消息。要解决此问题,请添加标记&#34; - no_exceptions&#34;禁用异常处理。