我正在尝试使用cuSparse计算A^TA
。 A
是一个大而稀疏的矩阵。基于documentation使用的正确功能是cusparseDcsrgemm2
。但是,这是少数不支持输入矩阵的可选内置转置的cuSparse操作之一。文档中有一行说
仅支持NN版本。对于其他模式,用户必须 显式转置A或B。
问题是我在cuSparse中找不到可以执行转置的函数。我知道我可以在CPU中进行转置并将其复制到GPU,但这会使应用程序变慢。我想念什么吗?使用cuSparse计算A^TA
的正确方法是什么?
答案 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格式的稀疏矩阵的转置。)