是否可以从例程指令中调用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 );
}
}
感谢您的帮助。
答案 0 :(得分:1)
通常使用acc parallel
或acc kernels
指令来描述OpenACC 加速器区域。 OpenACC routine
指令is intended to delineate的功能或过程可能会从加速器区域调用。
加速器区域支持的功能可能会有所不同,具体取决于该区域是或将要定位的加速器类型。
对于以CUDA GPU为目标的加速器区域,这些区域将由OpenACC编译器转换为CUDA设备代码。 cuSPARSE函数只能从主机代码中调用,而不能从CUDA设备代码中调用。因此,它们不能在以CUDA设备为目标的OpenACC加速器区域(或从加速器区域调用的OpenACC例程)中使用。