如何使用内部的 "min" 函数并行化 OpenACC 中的循环

How to parallelize a loop in OpenACC with a "min" fuction inside

我想将此循环与 OpenACC 中的 "min" 函数并行,但这是不可能的。编译器在编译后显示以下消息:

121行属于for(k=j+1;k<=bi;k++)

PGCC-S-0155-加速器区域无效:不允许分支进出区域 (LATSONEopenacc.cpp: 121)
主要:
121, Invalid accelerator region: 分支进出区域是不允许的 const T1 & std::min(const T1 &, const T1 &):
1、包括"iostream"
39、包括"ostream"
38、包括"ios"
40,包括"char_traits.h"
39、包括"stl_algobase.h"
194,生成隐式 acc 例程 seq
生成 acc 例程 seq
生成 Tesla 代码
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

谢谢

"std::min" 包含异常处理程序,因此会出现有关在并行区域之外分支的消息。要解决此问题,请添加标志“--no_exceptions”以禁用异常处理。