2017-04-13 196 views
0

我在C++中使用OpenACC进行稀疏矩阵计算。 我需要在OpenACC区域内使用矩阵运算。OpenACC - 稀疏矩阵库

是否有与OpenACC兼容的稀疏矩阵库?

我已经习惯了征,但它似乎是不兼容OpenACC的,除非我手动修改源代码,这听起来不是个好主意......

+1

您需要更多地解释一下“兼容”的含义,如果您尝试在OpenACC计算区域内使用库,如果库本身已经使用OpenACC加速,或者您只是想要在OpenACC代码和库之间共享数据。例如,如果您的目标是NVIDIA GPU,则OpenACC可以与cuSparse进行互操作,这意味着您可以在调用库和OpenACC代码之间共享数据。假设您正在使用PGI,可以在$ PGI/linux86-64/2016/examples/CUDA-Libraries/cuSPARSE/ –

+0

中找到示例感谢您的评论!是的,我想在OpenAcc地区使用该库(我编辑了我的答案以指出这一点)。似乎做了cuSPARSE的工作,谢谢!你可以把它作为答案,我会接受它。 –

回答

1

如果您指定了NVIDIA GPU,PG​​I的OpenACC实现与cuSparse可互操作,这意味着您可以在库和OpenACC代码之间共享数据。假设您使用PGI,可以在$ PGI/linux86-64/2016/examples/CUDA-Libraries/cuSPARSE /中找到示例。请注意,cuSPARSE没有设备端例程,必须从主机调用。但是,OpenACC管理的设备数据可以通过“host_data”指令传递给cuSPARSE例程。

cuBLAS确实具有可在OpenACC计算区域内使用的设备例程。当然,这些不是针对稀疏矩阵操作进行调整的。