私は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
ああ素晴らしいです!私の友達に返信いただきありがとうございます! – AstrOne