soo*_*ngk 2 cuda nvidia openacc
我在OpenACC上使用NVIDIA GPU(NVIDIA GeForce960,编译器:PGI 15.7)
NVIDIA GPU是否支持分支预测?我的代码在长循环中有条件执行代码.但是当我在GPU上运行代码时,需要很长时间.
下面是示例代码.
#pragma acc parallel loop
for(i=0; i<1000; i++) // NVIDIA GPU kernel with OpenACC
for(j=0; j<1000; j++)
if(a[i][j]==value)
// do something...
else if(a[i][j]==value2)
// do another something...
else
// do another something...
Run Code Online (Sandbox Code Playgroud)
如果此代码在CPU上编译并运行,则CPU将对条件执行循环执行分支预测.NVIDIA GPU是否具有与CPU分支预测相同或类似的技能?
如果有,我该如何启用它?
附加问题:
PGI 15.7编译器可以编译GPU的优化代码吗?我知道通常的编译器(gcc ...等)可以使用优化技能进行编译,比如更改条件代码执行顺序.
NVIDIA GPU是否具有与CPU分支预测相同或类似的技能?
目前的NVIDIA GPU不支持分支预测.
PGI 15.7编译器可以编译GPU的优化代码吗?
是的,PGI工具可以执行各种优化.使用-Ox命令行开关(例如-O3)将其控制在高水平,就像gcc/g ++一样.这种优化可以在编译的各个阶段进行,例如将OpenACC源转换为CUDA PTX,以及将CUDA PTX转换为CUDA SASS.