NVIDIA GPU支持分支预测? (使用OpenACC)

时间:2015-09-16 02:57:08

标签: 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...

如果在CPU上编译并运行此代码,CPU将对条件执行循环执行分支预测。 NVIDIA GPU是否具有与CPU分支预测相同或类似的技能?

如果有,我该如何启用它?

附加问题:

PGI 15.7编译器可以编译GPU的优化代码吗? 我知道通常的编译器(gcc ......等)可以使用优化技能进行编译,比如更改条件代码执行顺序。

1 个答案:

答案 0 :(得分:5)

  

NVIDIA GPU是否具有相同或相似的技能,如CPU的分支预测?

目前的NVIDIA GPU不支持分支预测。

  

PGI 15.7编译器是否可以为GPU编译优化代码?

是的,PGI工具可以执行各种优化。使用-Ox命令行开关(例如-O3)将其控制在较高级别,就像gcc / g ++一样。这种优化可以在编译的各个阶段进行,例如将OpenACC源转换为CUDA PTX,以及将CUDA PTX转换为CUDA SASS。