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 ...など)は、条件付きコードの実行順序を変更するなど、最適化スキルでコンパイルできることを知っています。