У меня есть цикл for
, и я хочу распараллелить его с помощью OpenACC, если целевое оборудование - это NVIDIA или запускается серийно, когда целевым аппаратным обеспечением является AMD. Я попытался следующие:Правильное использование device_type в OpenACC
#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