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

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

0 голосов
/ 25 октября 2018

Есть ли какие-либо изменения в 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, она выдает ошибку, сообщающую о функции математической библиотеки.

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

# includecmath

# include "openacc.h"

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

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

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

1 Ответ

0 голосов
/ 29 октября 2018

Какую ошибку вы получаете?Я получаю одинаковую ошибку как с 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
...