cusparse

请教一个关于cusparse的问题:
图1中,cusparseScsrmv() 是一个cusparse函数,该函数计算矩阵与向量的乘积,矩阵采用的是CSR存储格式。
其输入参数的第三行,是 const cusparseMatDescr_t desrA,这是矩阵的shape 和 properties 的描述,如图2所示。
在这个结构体中,第1个元素是关于矩阵类型的描述,如图3所示。图3表明,矩阵有四种类型,其中,第二种类型是对称矩阵。
我的问题是,如果一个矩阵是对称稀疏矩阵,那么,采用CSR格式存储该矩阵时,应该也可以利用矩阵的对称性吧??
比如图4所示的矩阵:
如果不考虑对称性,则CSR格式的存储向量为:[1 2 3 4 2 5 4 6],即每一行的非零元都要储存;
如果考虑对称性,是否是:[1 2 3 4 5 6],即是否是只要储存上三角部分??
注:CSR格式的另外两个数组未列出。

[attach]3421[/attach]
图1

[attach]3423[/attach]
图2

[attach]3422[/attach]
图3

[attach]3424[/attach]
图4

楼主您好,我不懂cusparse, 建议其他会员、 版主、 NVIDIA官方支持、总版主为您解答。

LZ您好:

我也不懂cusparse,不过刚才现查了cusparse的相关文档,发现在您提供的图3上其实就有说明:对于对称阵,厄米阵,和三角阵,均假定仅有上三角部分或者下三角部分是被保存的。

您不妨予以尝试。

祝您编码顺利~

嗯,好的,谢谢两位版主,我先试一下,看结果如何!:slight_smile:

版主,是可以的。只是,矩阵的描述,还要加上cusparseFillMode_t,以指定存储的是上三角部分还是下三角部分。:slight_smile:

嗯嗯,感谢您反馈经验~

祝您编码顺利~

是在版主的指点下才找到的,谢谢版主!

不客气的,这是您自己劳动的结果!

欢迎您常来论坛~