mkl各个类型sparse matrix store type
Posted 菜鸟决心努力A-A
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mkl各个类型sparse matrix store type相关的知识,希望对你有一定的参考价值。
csr:(表格里是1-based的,也就是index都加一)(红球球那个例子是0-based的)
(Intel的代码我也是醉了。csr这个格式,在他们的函数里,使用的类型就存在不一致的情况,比如mkl_?csrgemv中采用的是上图这种格式,但是在mkl_?csrmm中采用的就是https://software.intel.com/zh-cn/node/599882中提供的格式,醉醉哒)
bsr:和csr一个意思,只不过是先把矩阵分成一个一个小方块。如本来6*6矩阵,按照2*2的block压缩,就变成3*3的矩阵,然后按照csr的方式存储“元素不全为0的block”。
这样数据压缩率降低了些,但是rowIndex和columns的长度缩减很多。
coo:
略
dia:
“元素不全为0的Diagonal”的个数 = ndiag = 5(图中例子)
原则:在values矩阵(行数*ndiag)中,每一列存储原矩阵中的一个“元素不全为0的Diagonal”,然后再有一个数组distance来标识每一个列存储的是哪一Diagonal,这样就可以复原原来的矩阵了。例子如下图所示:
(每个diagonal中元素存储时,保留行号)
备注:
在mkl中使用mkl_?diagemv函数时,需要将values矩阵转置一下才可以得到正确结果,虽然这个问题在函数说明中并未体现
sky:
csc:
以上是关于mkl各个类型sparse matrix store type的主要内容,如果未能解决你的问题,请参考以下文章
scipy.sparse.csr.csr_matrix 未显示在变量资源管理器中
python使用scipy中的sparse.csr_matrix函数将numpy数组转化为稀疏矩阵(Create A Sparse Matrix)