2017-04-13 195 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計算區域內使用的設備例程。當然,這些不是針對稀疏矩陣操作進行調整的。