您现在的位置是:首页 >技术杂谈 >BSR:Block compressed Sparse Row matrix format网站首页技术杂谈

BSR:Block compressed Sparse Row matrix format

delibk 2024-06-14 17:19:50
简介BSR:Block compressed Sparse Row matrix format

BSR块压缩存储是CSR行压缩存储的升级变形;可以降低图数据存储空间。

有以下图的矩阵表示:
在这里插入图片描述

一、CSR表示

rowIndex = [0        4          8    10     12       16    20] 
columns  = [0 1 2 3 | 0 1 2 3 | 2 3 | 2 3 | 2 3 4 5 | 2 3 4 5] 
values  =  [1 0 6 7 | 2 1 8 2 | 1 4 | 5 1 | 4 3 7 2 | 0 0 0 0]

|rowIndex|+|columns|+|values|= 7 + 20 + 20 = 47

二、BSR 表示

假设:块(Block)的大小=2;

rowIndex = [0   2   3   5]
columns  = [0 1 | 1 | 1 2]
values  =  [1 0 2 1 | 6 7 8 2 | 1 4 5 1 | 4 3 0 0 | 7 2 0 0]

BSR:****|rowIndex|+|columns|+|values|= 7 + 20 + 20 = 47

以块为单位:

rowIndex[i]: 记录每个块行i的偏移量,i ∈ [0, blockrows]。

rowIndex[i+1] - rowIndex[i] 表示:第i块行中非零块数;
例如rowIndex[1] - rowIndex[0] = 2 - 0 =2;表示第0行有2个块;

rowIndex[blockrows] 表示: 非零块的总个数。
例如rowIndex[3]=5;表示总共有5个块;

columns[i] 表示第i个非零块的列坐标;columns的大小(长度) 与非零块的总个数相同;
columns[2]=1表示第3个块在第1列(以块为单位);

values 按行存储非零块的值。

三、空间节省:

CSR:****|rowIndex|+|columns|+|values|= 7 + 20 + 20 = 47
BSR:****|rowIndex|+|columns|+|values|= 7 + 20 + 20 = 47
r =(47-29)/ 47 = 38.3%

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。