openACC例程中的cuSPARSE库调用

时间:2019-02-07 18:31:16

标签: cuda gpu-programming openacc

是否可以从例程指令中调用cuSPARSE库。我在主机上有一个双for循环,该循环调用在GPU上运行的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 :(得分:1)

通常使用acc parallelacc kernels指令来描述OpenACC 加速器区域。 OpenACC routine指令is intended to delineate的功能或过程可能会从加速器区域调用。

加速器区域支持的功能可能会有所不同,具体取决于该区域是或将要定位的加速器类型。

对于以CUDA GPU为目标的加速器区域,这些区域将由OpenACC编译器转换为CUDA设备代码。 cuSPARSE函数只能从主机代码中调用,而不能从CUDA设备代码中调用。因此,它们不能在以CUDA设备为目标的OpenACC加速器区域(或从加速器区域调用的OpenACC例程)中使用。