[daily paper 10]2023 03 10 2014 217 Efficient SpMV on GPUs using the CSR storage format

这篇论文也是用的CSR格式在GPU上计算,是AMD发的一篇研究。上一篇论文说这一片论文是SpMV GPU计算的SOTA。

首先简单介绍一下AMD GPU的结构,如下图所示:

在这里插入图片描述

主要就是有一个LDS,每个CU(Computing Unit)本地的存储,也叫Shared Memory。

稀疏矩阵每一行的计算有两个极端,一种是每个线程一行,另一种是所有线程一行。

传统的CSR格式算法也有两个极端,CSR-Scalar和CSR-Vector,分别对应上述两个极端。但是传统的CSR-Scalar在CPU上运行的不错,在GPU上就不行了:

在这里插入图片描述

这是因为访问内粗不规则。

文中提出了一种针对GPU的类似于CSR-Scalar的算法,叫CSR-Stream。就是把数据先Stream到LDS上,然后再每个线程一行计算:

在这里插入图片描述

CSR-Stream对短行集合效果不错,但是如果行很长,就不能用这种方法了,可以中CSR-Vector。这两者结合,就形成了CSR-Adaptive算法,它会先将行划分成一个个row blocks,划分的标准应该是能否装到LDS里去。如果blocks行数过少,说明每行非零元过多,所以要用CSR-Vector,否则就用CSR-Stream。

文中做了实验确定了一些参数,一个是每个workgroup多少个非零元,结果是1024最好,然后行数为1或2的workgroup使用CSR-Vector。最终的效果非常好。

我觉得这篇文章提速的关键在于利用了LDS(shared memory)这个GPU存储结构,使得原来内存带宽的瓶颈缓解了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值