【发布时间】:2015-07-19 01:34:00
【问题描述】:
最近在 CUDA TOOLKIT 6.5 中使用 cuSparse 和 cuBLAS 进行稀疏矩阵乘法时,我发现 cuSPARSE 在所有情况下都比 cuBLAS 慢得多!
在我所有的实验中,我在 cuSparse 中使用了cusparseScsrmm,在 cuBLAS 中使用了cublasSgemm。在稀疏矩阵中,总元素的一半为零。我使用的 GPU 是 NVIDIA Titan Black。此外,所有消耗的时间都是通过NVIDIA提供的nvvp工具获得的。以下是部分结果:
实验 A:
- 稀疏矩阵大小:192x2400
- 密集矩阵大小:2400x256
- cusparse 时间:1.4ms
- cublas时间:0.21ms
实验 B:
- 稀疏矩阵大小:192x75
- 密集矩阵大小:75x1024
- cusparse 时间:0.27ms
- cublas时间:0.04ms
所以,看到上面列出的结果很奇怪。因为 cuSPARSE 是专门为处理稀疏矩阵操作而设计的,它怎么可能比 cuBLAS 还要慢!如果是这样,那么根本不需要使用 cuSPARSE。你能给我解释一下结果吗?另外,您能否建议任何其他方法来加快稀疏矩阵乘法?
【问题讨论】:
标签: matrix cuda multiplication sparse-matrix cublas