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 に答える