【发布时间】:2012-07-07 09:43:28
【问题描述】:
我正在使用 mex 桥对 Matlab 中的稀疏矩阵执行一些操作。 为此,我需要将输入矩阵转换为 CSR(压缩行存储)格式,因为 Matlab 将稀疏矩阵存储在 CSC(压缩列存储)中。
我能够得到 value 数组和 column_indices 数组。但是,我正在努力获取 CSR 格式的 row_pointer 数组。是否有任何 C 库可以帮助从 CSC 转换为 CSR?
此外,在编写 CUDA 内核时,将 CSR 格式用于稀疏操作是否有效,或者我应该只使用以下数组:- 行索引、列索引和值?
哪个可以让我更好地控制数据,最大限度地减少自定义内核中的 for 循环数?
【问题讨论】:
-
这似乎是两个完全不相关的问题——一个与稀疏矩阵格式转换有关,另一个与 CUDA 编程问题有关。是哪个?
-
第二个。因为我可能最终会使用三元组格式或三个数组来表示 row_indices、col_indices 和 values。因为我无法找到获取“CSR”格式的 row_ptrs 的方法...... .
-
CUSPARSE 怎么样?它具有转换例程,包括您所询问的例程,以及全面的稀疏 BLAS 操作,所有这些都无需您编写一行代码。它随 CUDA 一起提供,所以你已经拥有了它......
-
@talonmies ....是的,我知道 CUSPARSE 和 CUSP,我也知道使用库总是一个更好的选择,但是,我想知道它是否有效在CUDA中为稀疏矩阵加法/乘法编写我自己的内核...感谢有关cuSPARSE中转换例程的信息...虽然没有从CSC到CSR的方向转换...我必须创建一个中间密集矩阵对于那部分......
标签: matlab cuda sparse-matrix mex