[daily paper 2]2023 02 28 2014 189 Performance Analysisand Optimization for SpMV on GPU Using PMF

论文链接

这篇论文使用定量分析的方式,来估计使用不同格式的SpMV在GPU上运算所需的时间,由此可以挑选合适的格式进行计算。

其结果是预测值和实际值较为接近,所以说计算的公式对GPU真实计算情况提供了比较准确的描述。

定量分析的数学基础是Probabilistic Modeling Function(PMF),可以理解为离散变量的概率分布。

设矩阵有N行M列, b i , 0 ≤ i ≤ M b_i,0\le i\le M bi,0iM表示有矩阵中i个非零元素的行数。bi的分布也就代表了矩阵行稀疏的分布。而矩阵每行的稀疏分布对不同格式,如CSR,HYB(ELL+COO),计算所需时间影响是很大的。比如ELL,如果大多数行非零元都很少且均匀,只有少部分行有很多非零元,那么就会多出巨量的填零。这些填零可以用HYB格式消除,就是说每行大于K个的非零值都用COO存储。不过如何挑选阈值K又成了问题。本文的方法也可以给出阈值K的挑选方法。

计算的过程非常详细,以后需要的时候可以查,这里我直接列出结果,首先是一些变量的定义:

变量定义

然后是空间分析结果:

空间分析结果

其中COO和ELL都给了两个,ELL两个公式都有K,不知道是什么意思。还有这个Ne也没说。

计算时间分析的结果:

这个前面的分析过程还是有点意义的

首先时间分为数据传输时间和计算时间两部分,T=DTT+CT

数据传输时间DTT分为host to device和device to host两部分,host to device传稀疏矩阵和向量,device to host传结果向量。DTT=(size of data)/B,B表示CPU和GPU之间的传输带宽。

计算时间CT也分为两部分,核心计算时间和访存时间(global memory,读和写)。CT=CTC+AM。

核心计算时间CTC也分为两部分,分别是乘法和加法的计算时间CTC=CTCm+CTCa,这两个的比例可以认为是一样的,因为主要是矩阵每一行和向量点乘的计算,这里面乘法和加法差不多一样。

用F代表乘/加的频率,分为整数、float、double三部分,F=Fi+Fs+Fd。

访存AM也分为两部分,读稀疏矩阵和读/写向量。用BW代表GPU的global memory带宽。

A M = ⌈ s i z e   o f   D S R W ⌉ AM=\lceil\frac{size\ of\ DS}{RW}\rceil AM=RWsize of DS

DS是存在global memory上的data set,会读一次。RW是连续data的长度,并且RW比BW要小。CR是global memory的时钟频率。

最终结果:

COO:

COO

CSR:

CSR

ELL:

ELL

HYB:

HYB

这些公式疑似有点复杂了,不是很想细看。

总结一下,这篇论文使用PMF的数学方法,结合硬件结构,对不同存储结构的SpMV占用空间以及在GPU上的运算时间做出了定量估计,由此可以选出花费时间最少的方式进行计算。该方法的优点是适用性广,对各种稀疏矩阵结构都有较好的估计效果,因为PMF对稀疏矩阵的结构做出了不错的描述。

最后还有一点没提到,就是这个方法运行本身需要的时间多吗?主要的部分是统计每一行的非零元素个数,就可以构建PMF,如果是CSR格式的话,只需要O(num_row)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值