C++ PGI上OpenMP目标指令的结果
我正在使用PGI编译以下程序,该程序使用OpenMP的目标指令将工作卸载到GPU:C++ PGI上OpenMP目标指令的结果,c++,openmp,pgi,C++,Openmp,Pgi,我正在使用PGI编译以下程序,该程序使用OpenMP的目标指令将工作卸载到GPU: #include <iostream> #include <cmath> int main(){ const int SIZE = 400000; double *m; m = new double[SIZE]; #pragma omp target teams distribute parallel for for(int i=0;i<SIZE;i++)
#include <iostream>
#include <cmath>
int main(){
const int SIZE = 400000;
double *m;
m = new double[SIZE];
#pragma omp target teams distribute parallel for
for(int i=0;i<SIZE;i++)
m[i] = std::sin((double)i);
for(int i=0;i<SIZE;i++)
std::cout<<m[i]<<"\n";
}
编译成功,但它缺少OpenACC的一系列输出,这些输出告诉我编译器对指令的实际操作,如:
main:
8, Accelerator kernel generated
Generating Tesla code
11, #pragma acc loop gang, vector(128) /* blockIdx.x threadIdx.x */
8, Generating implicit copyout(m[:400000])
如何获取OpenMP的类似信息<代码>-Minfo本身似乎没有产生任何有用的结果。“-Minfo”(与“-Minfo=all”相同)或“-Minfo=mp”将为OpenMP编译提供编译器反馈消息
尽管如此,PGI仅在我们的LLVM后端编译器中支持OpenMP 4.5指令。默认情况下,在基于IBM Power的系统上或作为x86上LLVM beta编译器的一部分,这些工具都可用。x86测试版编译器可以在上找到,但需要专业版许可证
此外,我们当前的OpenMP 4.5仅针对多核CPU。我们也在进行GPU目标卸载,但此支持暂时无法提供。谢谢!我一直希望使用OpenMP 4.5在我的GPU上获得更细粒度的控制。它似乎还没有在任何编译器上得到很好的支持:-/
main:
8, Accelerator kernel generated
Generating Tesla code
11, #pragma acc loop gang, vector(128) /* blockIdx.x threadIdx.x */
8, Generating implicit copyout(m[:400000])