Функции среды выполнения OpenMP 4.5 не поддерживаются в PGI

Когда я пытаюсь скомпилировать следующий код

#include <omp.h>
#include <stdio.h>
#include <accel.h>

int main (void) {
int sum = 0;

#pragma omp target teams distribute parallel for reduction(+:sum) defaultmap(tofrom:scalar)
for(int i = 0 ; i < 2000000000; i++) {
sum += i%11;
}

printf("sum = %d\n",sum);

printf("devices %d\n", omp_get_num_devices());
printf("default device %d\n", omp_get_default_device());
printf("device id %d\n", omp_get_initial_device());
return 0;
}

с

pgc++ -mp foo.cpp

Я получаю ошибку

error: identifier "omp_get_num_devices" is undefined

Остальные функции времени выполнения OpenMP также не определены. Код прекрасно компилируется с gcc7. Поддерживаются ли эти функции компилятором PGI 17.10 Community Edition? Согласно их веб-сайту, компилятор редакции сообщества PGI 17.10 поддерживает OpenMP 4.5. Что я делаю неправильно?

Я попробовал это с Ubuntu 16.04 и 17.04.

2

Решение

PGI добавил поддержку задач, связывания, SIMD, синхронизации, сокращения, атомарных и других функций CPU для процессоров Linux / OpenPOWER в 17.7. Эти функции поддерживаются в версии 18.1 компиляторов PGI LLVM для Linux x86-64. PGI планирует начать работу над OpenMP 4.x target особенности в 2018 году.

Больше деталей: https://www.pgroup.com/resources/accel.htm#openmp

2

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

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

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