CUDA CSR Matrix-Matrix产品自行转置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CUDA CSR Matrix-Matrix产品自行转置相关的知识,希望对你有一定的参考价值。

我有一个非常大的,非常稀疏的最小二乘设计矩阵(A),我想自己乘以,如下:N = A ^ T * A,其中A和N以CSR格式存储。显然,A的行数多于列数。我通常直接逐行地形成N,但是在CSR的情况下,我必须首先形成图形,以便确定N的哪些元素是非零的。我可以做到这一点(甚至有一些旧的c代码),但我希望得到一个开发较少的解决方案。我正在使用CUDA,所以这可以在GPU或CPU上完成,在那里我可以看到使用GPU的优势。我已经勾勒出一个算法,但希望这个问题已经解决了。除了直接的A * x = l QR求解器(其中A =(m,n)),我在CUDA工具箱中找不到任何东西。谷歌也不是很有帮助。

我正在使用C ++。

有没有人有这方面的经验?

答案

订购general COO sparse matrix into CSR/CSC format,特别是transposition / conversion between CSR and CSC formats是相对便宜的操作,并且在cuSPARSE library中很容易获得。

在将矩阵A从CSR格式转换为CSC之后,您可以轻松应用平凡算法来计算N = A ^ T * A. 通过让每个线程处理A的一列来生成一个输出,这也可以很容易地与CUDA并行化。

另一答案

刚刚注意到CUDA工具包中的cuSparse实际上有一个csr-gemm,它支持在任一矩阵上进行转置。我不知道我是怎么忽视这一点的。见https://docs.nvidia.com/cuda/cusparse/index.html#cusparse-lt-t-gt-csrgemm。看起来像最简单的解决方案......

以上是关于CUDA CSR Matrix-Matrix产品自行转置的主要内容,如果未能解决你的问题,请参考以下文章

使用CUSP打印矩阵的csr格式

关于蓝牙模块产品的音质怎么样_和CSR的比较起来差别在哪里

CSR8670项目实战:BlueDongle 蓝牙音频测试dongle

markdown 如何生成SSL CSR或自签名SSL证书

CUDA[4] sample program: matrix-vector multiplication

CSR 量产 烧录 软件