如何将OpenACC中的循环与" min"并行化。

时间:2018-04-12 21:39:17

标签: c++ min openacc

我想将此循环与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

谢谢

1 个答案:

答案 0 :(得分:0)

&#34;的std ::分钟&#34;包含异常处理程序,因此有关在并行区域之外分支的消息。要解决此问题,请添加标记&#34; - no_exceptions&#34;禁用异常处理。