cuSPARSE密集时间稀疏

时间:2013-07-11 11:11:22

标签: cuda sparse-matrix

我需要计算以下矩阵数学:
D * A
其中D是密集的,A是稀疏的,以CSC格式 cuSPARSE允许乘以稀疏*密集,其中稀疏矩阵是CSR格式。

根据相关问题,我可以简单地通过转置A.来将CSC“转换”为CSR 我也可以计算(A ^ T * D ^ T)^ T,因为我可以处理转换的结果 在这种方法中,我也可以避免“转置”A,因为CSR ^ T是CSC。

唯一的问题是cuSPARSE不支持在此操作中转置D,因此我必须预先转置它,或将其转换为CSR,这是完全浪费,因为它非常密集。

有没有解决方法?
谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决方法 我在整个代码中将内存访问更改为D. 如果D是mxn矩阵,并且我曾经D[j * m + i]访问它,现在我正在通过D[i * n + j]访问它,这意味着我将其设为行 - 主要而不是列 - 主要。
cuSPARSE以列主格式预测矩阵,并且因为rows-major转置是column-major,我可以将D传递给cuSPARSE函数作为伪转置而无需进行转置。