如何在cuSparse中转置稀疏矩阵?

时间:2019-08-06 02:07:03

标签: cuda

我正在尝试使用cuSparse计算A^TAA是一个大而稀疏的矩阵。基于documentation使用的正确功能是cusparseDcsrgemm2。但是,这是少数不支持输入矩阵的可选内置转置的cuSparse操作之一。文档中有一行说

  

仅支持NN版本。对于其他模式,用户必须   显式转置A或B。

问题是我在cuSparse中找不到可以执行转置的函数。我知道我可以在CPU中进行转置并将其复制到GPU,但这会使应用程序变慢。我想念什么吗?使用cuSparse计算A^TA的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

对于CSR(或CSC)格式的矩阵:

矩阵的CSR稀疏表示与转置的CSC稀疏表示具有相同的格式/内存布局。

因此,如果我们使用cusparse provided function to convert a CSR format matrix into a CSC format,则所得的CSC格式矩阵实际上与原始矩阵的转置的CSR表示相同。因此,可以使用此CSR到CSC的转换例程来查找CSR格式的稀疏矩阵的转置。 (它可以类似地用于查找CSC格式的稀疏矩阵的转置。)