Вызов библиотеки cuSPARSE внутри подпрограммы openACC - PullRequest
0 голосов
/ 07 февраля 2019

Можно ли вызвать библиотеку cuSPARSE из директивы рутины.У меня есть двойной цикл for на хосте, который вызывает функцию cuSPARSE, которая работает на графическом процессоре, я предполагаю, что установка цикла for на устройстве поможет некоторым с производительностью.

    for ( int j = 0; j < nxChunk; j++ )
    {
       for ( int i = 0; i < nyChunk; i++ )
       {            
         #pragma acc parallel 
         setDiag( eig );

        triDiagCusparse( dl, ds, du, tmpMGReal );

         }
      }

Спасибо за помощь.

1 Ответ

0 голосов
/ 07 февраля 2019

Область акселератора OpenACC обычно обозначается директивой acc parallel или acc kernels.Директива OpenACC routine предназначена для определения функций или процедур, которые могут быть вызваны из области ускорителя.

Поддерживаемые функции для области ускорителя могут различаться в зависимости от типа ускорителя.регион является или будет целевым.

Что касается областей ускорителей, которые предназначены для графических процессоров CUDA, эти области будут преобразованы компилятором OpenACC в код устройства CUDA.Функции cuSPARSE предназначены для вызова только из кода хоста и не могут быть вызваны из кода устройства CUDA.Поэтому их нельзя использовать в области ускорителя OpenACC (или в подпрограмме OpenACC, которая вызывается из области ускорителя), предназначенной для устройств CUDA.

...