我正在使用GCC编译以下程序,该程序使用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++)
m[i] = std::sin((double)i);
for(int i=0;i<SIZE;i++)
std::cout<<m[i]<<"\n";
}
我的编译字符串如下:
g++ -O3 test2.cpp -fopenmp -omptargets=nvptx64sm_35-nvidia-linux
编译成功,但是很安静。
使用PGI + 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])
如何从GCC获取类似信息? -fopt-info-all
是一团糟。