ЗГУ 18,1 против ЗГУ 18,4

Есть ли какие-либо изменения в PGi версии 18.1 до 18.4 в отношении подпрограммы #pragma seq, код, который у меня работает, отлично работает с версией 18.1, но выдает ошибку, когда я использую более новую версию. Я генерирую ядра, используя математическую библиотеку.

использование пространства имен std; #pragma acc рутина double myfunc(double x) { return(fabs(x)); }

Параллелизм по умолчанию для рутинной директивы является (или был) последовательным. то есть #pragma acc рутина эквивалентна #pragma acc рутина seq

Это прекрасно работает в версии 18.1. Но я думаю, что в новой версии могут быть какие-то изменения, поскольку, когда я компилирую версию 18.4, она выдает ошибку, сообщающую о функции математической библиотеки.

Как ни странно и вызывает ошибку

#include cmath

#include "openacc.h"

использование пространства имен std;

#pragma acc routine seq
double sine( double x )
{
    return ( sin( x ) );
} 

Выдает ошибку компиляции, но когда я изменяю библиотеку математики на math.h, это прекрасно, может кто-нибудь объяснить, почему не работает с pgC++?

1 ответ

Какую же ошибку вы получаете? Я получаю ту же ошибку с PGI 18.1 и 18.4:

% pgc++ -c test1.cpp -ta=tesla -Minfo=accel -w -V18.1
PGCC-S-1000-Call in OpenACC region to procedure 'sin' which has no acc routine information (test1.cpp: 10)
PGCC-S-0155-Compiler failed to translate accelerator region (see -Minfo messages)  (test1.cpp: 10)
sine(double):
     10, Generating acc routine seq
         Generating Tesla code
         11, Accelerator restriction: call to 'sin' with no acc routine information

Решением здесь является включение PGI-заголовка "accelmath.h", чтобы получить версию устройства для математических встроенных функций C99.

% diff test1.cpp test2.cpp
4a5
> #include "accelmath.h"
% pgc++ -c test2.cpp -ta=tesla -Minfo=accel -w -V18.1
sine(double):
     12, Generating acc routine seq
         Generating Tesla code
% pgc++ -c test2.cpp -ta=tesla -Minfo=accel -w -V18.4
sine(double):
     12, Generating acc routine seq
         Generating Tesla code
Другие вопросы по тегам