[daily paper 3]2023 03 01 2014 116 Performance Optimization Using Partitioned SpMV on GPUs and CPUs

文章提出了一种新的矩阵划分方法,旨在解决GPU上的负载均衡问题。该方法基于稀疏矩阵行的非零元素数量,通过排序和分配策略优化计算单元的工作负载。虽然不是所有情况下都最优,但在特定条件下可减少存储需求。文章还提及了与华为软件精英挑战赛中类似的问题,探讨了动态资源分配的复杂性。
摘要由CSDN通过智能技术生成

论文链接

这篇文章和上一篇是一个团队写的,时间上应该是靠后一些,感觉干货没上一篇多。我觉得主要的工作在于介绍了一种新的矩阵划分方法,并证明了它有一定的优越性。

矩阵划分依旧是基于稀疏矩阵每一行的非零元素数量,把矩阵划分为多个行的组合,以将每个组的任务分配给具有不同工作能力的的CPU/GPU。daily_paper_1中讲了SpMV在GPU上运行的瓶颈有两个:负载均衡、内存带宽。其中GPU负载均衡两个层面:block之间的负载均衡、thread之间的负载均衡。在CPU/GPU异构架构下依旧有负载均衡这个问题,是在不同GPU/CPU之间的的负载均衡。

划分算法的具体流程是这样的:

  • 每个CPU/GPU有一个工作能力,将稀疏矩阵非零元个数按照工作能力分配给不同CPU/GPU

  • 将矩阵每一行按非零元素个数升序排序

  • 矩阵行分配有一个规则,相同数量的行最好分配给一个计算单元。就这样对每个计算单元一个个分配,直到有一组相同长度的塞不进去了,就塞一部分,刚好能填充它的工作能力。然后填充下一个工作单元,重复此步骤,直到分配完所有矩阵行。

GPU有一个global memory,如果给分配工作的大于global memory,需要对这一部分行子集继续运行该算法。

之后论文又证明了这个算法的优越性,不过并不是绝对就优秀的,有一个限制条件,分配后的每个工作单元的非零元素数量,如果和用该算法分配后每个工作单元的非零元素数量全都一样,那么如果每个运算单元如果都用ELL那种存储方式的话,该算法的分配方式占用空间是最少的。这个限制条件也不算特别强,因为如果要按工作能力分配,不同的算法分配后,每个工作单元差不多都是满的,只有一点点的差距。

论文中似乎没说工作单元的顺序是什么,但例子用的是升序的。

这个情形让我想到了原来参加华为软件精英挑战赛的时候,那一年的题目也是关于负载均衡的,是说有不同的服务器,每个服务器有CPU和MEM资源,每天会过来用户对虚拟机的申请,虚拟机有不同的规格,我们的挑战就是该怎么分配虚拟机,到不同的云服务器上。有两个难点,一个是云服务器需要自己购买,每天都可以购买云服务器,云服务器有非常多种规格;另一个是这个负载均衡是关于时间的、动态的。还有一个小的难点,是每台服务器的资源分成相等的两半,虚拟机有两种架构,一种是只占一半的资源,另一种是两半的资源都占,也是相等。这个题目和上面说的有一个相似的点,就是每天来虚拟机的请求,虚拟机有大有小,剩余的服务器也有大有小,该怎么分配?一种是小虚拟机填小服务器,一种是小虚拟机填大服务器,不过我们当时比赛也没得出什么好的结论。比赛还有一个多的点,就是空闲的服务器不收电费,想想还是挺复杂的。比赛题目和这个论文还有一个类似的点,比赛题目中如果一个服务器CPU占满了,那么剩下的MEM再多也没用,反之也一样;矩阵行分配中呢,是如果有某一行很长,其他行很短,就会很吃亏,因为其他行的任务做完了,还要等长的这一行。总的来说,两者都是多级的负载均衡问题。

这篇论文和上一篇论文都是基于行的,只统计了每行的非零元素个数。如果统计列的非零元素个数,那会有什么用吗?首先这个操作也将是不怎么费时间的,和统计行差不多一样。想起daily_paper_1中,有一个垂直划分的操作,就是竖着切几刀。如果利用列的PMF信息,是不是可以进行更好的切分。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值