BCSR(Block Compressed Sparse Row)

前言:

上图是BCSR的示例

BCSR是最流行的块稀疏矩阵格式之一。在BCSR中,所有的块都有相同的大小。为了理解这种格式,想象一个块大小为1的稀疏矩阵。在这种情况下,CSR和BCSR矩阵表示是等效的。块大小的增加不会影响列指针数组和行指针数组。相反,它只是扩展了values数组。也就是说,列和行指针数组包含块的值。块连续地存储在值数组中,极大地降低了内存空间需求。

负载划分策略: 

这里我们给出两种BSpMV的负载划分策略,这两种策略都是让一个warp来负责进行一个块行与稠密向量单位乘积,都需要进行warp内的规约,不同之处是:策略1是让一个要求一个warp能覆盖整数个完整的块,策略2要求一个warp能够覆盖整数个完整的列。具体如下:

策略1:

 上图展示的是策略1对矩阵A的访存模式,以block size = 2为例,因为一个warp(8个线程)要覆盖完整的块,所以每轮迭代可以处理两个完整的块,同一块行剩下的元素需要在下一轮迭代中被访问,伪码如下:

其中r,c分别对应着在block中的行和列 

 reduce如上图所示

策略2:

上图展示了策略2的访存模式,block size为3。可以看到,因为我们放宽了对warp覆盖完整块的要求,转变为能够覆盖完整列,这样的负载分配策略允许单个warp能够处理更大的block size,并且较策略1,能够减少inactive threads的数目,此时一个warp中的32个线程中有30个线程处于活跃状态(32%3  = 2),伪码如下:

 明天任务:研究加入shared memory

研究失败,这玩意sdata赋初值的过程够官方库跑几个来回的了

下一阶段目标:用shf1完成reduce

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值