Результаты целевых директив OpenMP по PGI

Я использую PGI для компиляции следующей программы, которая использует целевые директивы OpenMP для разгрузки работы на графический процессор:

#include <iostream>
#include <cmath>

int main(){
const int SIZE = 400000;

double *m;
m = new double[SIZE];

#pragma omp target teams distribute parallel for
for(int i=0;i<SIZE;i++)
m[i] = std::sin((double)i);

for(int i=0;i<SIZE;i++)
std::cout<<m[i]<<"\n";
}

Моя строка компиляции выглядит следующим образом:

pgc++ -omp -ta=tesla,pinned,cc60 -Minfo=accel  -fast test2.cpp

Компиляция завершается успешно, но в ней отсутствует серия выводов, которые я получаю с OpenACC, которые говорят мне, что компилятор на самом деле делал с директивой, вот так:

main:
8, Accelerator kernel generated
Generating Tesla code
11, #pragma acc loop gang, vector(128) /* blockIdx.x threadIdx.x */
8, Generating implicit copyout(m[:400000])

Как я могу получить похожую информацию для OpenMP? -Minfo само по себе, похоже, не принесло ничего полезного.

1

Решение

«-Minfo» (что совпадает с «-Minfo = all») или «-Minfo = mp» выдаст вам сообщения обратной связи компилятора для компиляции OpenMP.

Хотя PGI поддерживает директивы OpenMP 4.5 только с нашими внутренними компиляторами LLVM. Они доступны по умолчанию в системах на базе IBM Power или в составе наших бета-компиляторов LLVM на x86. Бета-компиляторы x86 можно найти по адресу http://www.pgroup.com/support/download_llvm.php но требуется лицензия Professional Edition.

Кроме того, наш текущий OpenMP 4.5 предназначен только для многоядерных процессоров. Мы также работаем над целевой загрузкой графического процессора, но эта поддержка не будет доступна некоторое время.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]