2

我正在使用带有 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 ...等)可以使用优化技能进行编译,例如更改条件代码执行顺序。

4

1 回答 1

6

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

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

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

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

于 2015-09-16T14:41:29.807 回答