2016-09-01 7 views
1

アトミック関数をOpenACCディレクティブで使用したいと考えています。助けることができるpgC++のコンパイルオプションは何ですか?特定のヘッダーファイルを使用する必要がありますか?OpenACCのアトミック関数を使用する

+1

OpenACCのすべてのアトミック操作は、#pragma acc atomicディレクティブによって提供されます。あなたのコンパイラは標準のV2.0をサポートする必要があります – talonmies

+0

私はこれらの指示文を試しましたが、コンパイルエラーが発生しました。 #pragma acc atomic {res [i] [res] [i] [i] + x}の場合、コンパイルエラーはありませんが、 [i] + x res [j] [j] = res [j] [j] + y}、PGCC-S-0155を取得します。 –

答えて

0

確認するべきこと:適切なデータを使用していますか? this forumでは、すべてのアクセラレータがすべてのデータ型を受け入れるわけではなく、すべてのデータ型にアトミックにアクセスできるわけではありません。表13のthis linkは、Nvidia上のアトミックが32ビットの整数型および浮動小数点型のデータ型でのみ使用可能であるように見えることを示しています。計算容量6.x +では64ビットが使用可能です。あなたはあなたのコードがどのように見えると言う

#pragma acc atomic 
{ 
    res[i][i]=res[i][i]+x; 
    res[j][j]=res[j][j]+y; 
} 

しかし、私はあなたが一緒にそのような入れ子に複数のアトミックはできるとは思いません。代わりに、試してみてください:

#pragma acc atomic update 
res[i][i]=res[i][i]+x; 

#pragma acc atomic update 
res[j][j]=res[j][j]+y; 
関連する問題