2017-02-20 3 views
0

私はforループを持っています。ターゲットハードウェアがNVIDIAの場合はOpenACCと並列化し、ターゲットハードウェアがAMDの場合はシリアルに実行します。OpenACCでdevice_typeを正しく使用する

でコンパイル
#pragma acc loop \ 
    device_type(tesla) parallel \ 
    device_type(radeon) seq 
for (int z = 0; z < size_z; ++z) 
{ 
    // do stuff... 
} 

:私は次のことを試してみましたpgc++ -std=c++11 -O4 -ta=tesla -Minfo:accel main.cpp

しかし、私は取得する並列化レポートに:<line_number>, #pragma acc loop seq

コンパイラが唯一のアカウントにディレクティブの最後の行を取ることが表示されます。何が起こっているのでしょうか? pgc++ --versionを実行すると、以下を提供します

pgc++ 16.10-0 64-bit target on x86-64 Linux -tp sandybridge

答えて

1

あなたは正しく「DEVICE_TYPE」を使用しているが、我々(PGI)は、まだいくつかのOpenACCが欠落しているが、「DEVICE_TYPE」句を介して複数のループのスケジュールを定義するなどの機能します。現在の制限は、PGIリリースノートのセクション4.4にリストされています。http://www.pgroup.com/doc/pgirn-x64.pdf

+0

ああ素晴らしいです!私の友達に返信いただきありがとうございます! – AstrOne

関連する問題