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

稀疏矩阵库 我在C++中使用OpenACC进行稀疏矩阵计算。 我需要在OpenACC区域内使用矩阵运算,c++,sparse-matrix,eigen,openacc,C++,Sparse Matrix,Eigen,Openacc,有与OpenACC兼容的稀疏矩阵库吗 我习惯于Eigen,但它似乎与OpenACC不兼容,除非我手动修改源代码,这听起来不是一个好主意…如果您的目标是NVIDIA GPU,PGI的OpenACC实现可以与cuSparse互操作,这意味着您可以在对库的调用和OpenACC代码之间共享数据。假设您使用的是PGI,示例可以在$PGI/linux86-64/2016/examples/CUDA Libraries/cuSPARSE/中找到。注意,cuSPARSE没有设备端例程,必须从主机调用。但是,Op

有与OpenACC兼容的稀疏矩阵库吗


我习惯于Eigen,但它似乎与OpenACC不兼容,除非我手动修改源代码,这听起来不是一个好主意…

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


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

您需要进一步解释什么是兼容,如果您试图在OpenACC计算区域内使用库,如果库本身已经使用OpenACC进行了加速,或者如果您只想在OpenACC代码和库之间共享数据。例如,如果您的目标是NVIDIA GPU,则OpenACC可与cuSparse互操作,这意味着您可以在对库的调用和OpenACC代码之间共享数据。假设您使用的是PGI,示例可以在$PGI/linux86-64/2016/examples/CUDA Libraries/cuSPARSE/感谢您的评论!是的,我想使用OpenAcc区域内的库,我编辑了我的答案来指出这一点。cuSPARSE似乎完成了这项工作,谢谢!你可以回答,我会接受的。