BSR:Block compressed Sparse Row matrix format

BSR(BlockSparseRow)是CSR(CompressedSparseRow)的优化版本,通过以固定大小的块来压缩图数据的存储。在给定的例子中,块大小为2,BSR相比于CSR能节省约21.6%的空间。BSR的rowIndex记录块的偏移量,columns指示非零块的列坐标,values存储非零块的值,从而有效地减少了存储需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

一、CSR表示

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

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

二、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 = 29

以块为单位:

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 = 37
BSR:****|rowIndex|+|columns|+|values|= 7 + 20 + 20 = 29
r =(37-29)/ 37 = 21.6%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值