稀疏矩阵压缩格式(Sparse Matrix Compression Formats)

BCCSBlock Compressed Column Storage format
BCRSBlock Compressed Row Storage format
BNDLinpack Banded format
BSRBlock Sparse Row format
CCSCompressed Column Storage format
COOCoordinate format
CRSCompressed Row Storage format
CSCCompressed Sparse Column format
CSRCompressed Sparse Row format
DIADiagonal format
DNSDense format
ELLEllpack-Itpack generalized diagonal format
JADJagged Diagonal format
LNKLinked list storage format
MSRModified Compressed Sparse Row format
NSKNonsymmetric Skyline format
SSKSymmetric Skyline format
SSSSymmetric Sparse Skyline format
USSUnsymmetric Sparse Skyline format
VBRVariable Block Row format

Example

Uncompressed Matrix

 

 Nj
A=
1112131400
02223000
0033343536
00044450
0000056
0000066
Ni

 

Variables
iRow index
jColumn index
kElement index in compressed data vector
a(i,j)Element at matrix row i, column j
 
Abbreviations
NNumber of elements per side of the matrix
NBNumber of elements per side of the Block
NDZNumber of Diagonal Zeros
NNZNumber of Non-Zeros
NNZBNumber of Non-Zero Blocks
NRNumber of blocks per side of the matrix
OOrder of magnitude

Compressed Row Storage / Compressed Sparse Row

 i1234567O
Row Start Indexk1   5 7   11 131415Ni+1
 k1234567891011121314  
Column Indexj12342334564566 NNZ
Dataa(i,j)1112131422233334353644455666 NNZ
Row Start Index :1 ≤ i ≤ Ni:if Data(k) = a(i,j) then RowStartIndex(i) ≤ k < RowStartIndex(i+1)
i = Ni+1:k = NNZ+1

Order is 2*NNZ + Ni + 1 (=35)

Compressed Column Storage / Compressed Sparse Column / Harwell-Boeing Sparse Matrix

 j1234567O
Column Start Indexk12 4  7  10 12  15Nj+1
 k1234567891011121314  
Row Indexi11212313434356 NNZ
Dataa(i,j)1112221323331434443545365666 NNZ
Column Start Index :1 ≤ j ≤ Nj:if Data(k) = a(i,j) then ColumnStartIndex(j) ≤ k < ColumnStartIndex(j+1)
j = Nj+1:k = NNZ+1

Order is 2*NNZ + Nj + 1 (=35)

Modified Compressed Sparse Row

 k12345678910111213141516O
Indexk;j8111215161717234345656NNZ+NDZ+1
Dataa(i,j)11223344066 121314233435364556NNZ+NDZ+1
kIndexData
1 ≤ k ≤ NiRow Start Indexa(k,k)
Ni+1NNZ+NDZ+1
Ni+2 ≤ k ≤ NNZ+NDZ+1Column Indexa(i,j), i<>j

Order is 2*NNZ + 2*NDZ + 2 (=32)

Modified Compressed Sparse Column

 k12345678910111213141516O
Indexk;i88911131517112133435NNZ+NDZ+1
Dataa(i,j)11223344066 121323143435453656NNZ+NDZ+1
kIndexData
1 ≤ k ≤ NjColumn Start Indexa(k,k)
Nj+1NNZ+NDZ+1
Nj+2 ≤ k ≤ NNZ+NDZ+1Row Indexa(i,j), i<>j

Order is 2*NNZ + 2*NDZ + 2 (=32)

Block Compressed Row Storage / Block Sparse Row

 i1234O
Row Start Indexk1 3 56NRi+1
 k12345  
Column Indexj1 3 3 5 5  NNZB
Dataa(i,j)1112131433343536056 NNZB*NBi*NBj
022230044450066

NRi = Ni/NBi
Order is NNZB*NBi*NBj + NNZB + NRi + 1 (=29)

以上内内容来自传送门

更多参考1参考2cuSparse文档

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值