[发明专利]一种GPU加速的批处理同构稀疏矩阵乘满向量的处理方法有效
申请号: | 201610814518.8 | 申请日: | 2016-09-12 |
公开(公告)号: | CN106407158B | 公开(公告)日: | 2019-01-29 |
发明(设计)人: | 周赣;孙立成;秦成明;张旭;柏瑞;冯燕钧;傅萌 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F17/16 | 分类号: | G06F17/16;G06T1/20 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 张婧 |
地址: | 210009 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种GPU加速的批处理同构稀疏矩阵乘满向量的处理方法,所述方法包括:(1)在CPU中将所有矩阵A1~Abs存储为行压缩存储格式;(2)CPU将GPU内核函数所需数据传输给GPU;(3)将矩阵A1~Abs的乘满向量任务分配给GPU线程,并优化内存访问模式;(4)GPU中执行批处理同构稀疏矩阵乘满向量内核函数spmv_batch,调用内核函数来批处理并行计算同构稀疏矩阵乘满向量。本发明中CPU负责控制程序的整体流程和准备数据,GPU负责计算密集的向量乘法,利用批处理模式提高了算法并行度和访存效率,大幅降低了批量稀疏矩阵乘满向量的计算时间。 | ||
搜索关键词: | 一种 gpu 加速 批处理 同构 稀疏 矩阵 向量 处理 方法 | ||
【主权项】:
1.一种GPU加速的批处理同构稀疏矩阵乘满向量的处理方法,大量同构稀疏矩阵A1~Abs的乘满向量操作:A1x1=b1,…,Absxbs=bbs,其中x1~xbs为被乘的满向量,b1~bbs为结果满向量,bs为批处理的矩阵数量,其特征在于:所述方法包括如下步骤:(1)在CPU中将所有矩阵A1~Abs存储为行压缩存储格式,矩阵A1~Abs共享相同的行偏移数组CSR_Row和列号数组CSR_Col,行偏移数组元素CSR_Row[k]中存储的是矩阵第k行之前的非零元总数,k取值范围从1到n+1;每个矩阵具体的数值存储于各自的数值数组CSR_Val1~CSR_Valbs中,被乘满向量存储于数组x1~xbs中,结果满向量存储于数组b1~bbs中,数组CSR_Val1~CSR_Valbs、数组x1~xbs和数组b1~bbs都按照矩阵编号递增顺序连续存储;(2)CPU将GPU内核函数所需数据传输给GPU;(3)将矩阵A1~Abs的乘满向量任务分配给GPU线程,一个线程块负责矩阵A1~Abs中特定一行的乘满向量计算,并优化内存访问模式;(4)GPU中执行批处理同构稀疏矩阵乘满向量内核函数spmv_batch,批处理同构稀疏矩阵乘满向量内核函数定义为spmv_batch,其线程块大小Nthread为bs,线程块数量Nblocks=n,总线程数量为:Nblocks×Nthreads;调用内核函数spmv_batch来批处理并行计算同构稀疏矩阵乘满向量;所述内核函数spmv_batch的计算流程为:(4.1)CUDA自动为每个线程分配线程块索引blockID和线程块中的线程索引threadID;(4.2)将blockID和threadID赋值给变量bid和t,之后通过bid和t来索引bid号线程块中的t号线程;(4.3)第bid号线程块负责所有矩阵第bid行的乘满向量操作;(4.4)第bid号线程块中,每个线程负责一个矩阵的第bid行乘满向量,具体步骤如下:1)读取当前行以及下一行的第一个非零元的索引CSR_Row[bid]和CSR_Row[bid+1],定义变量j=CSR_Row[bid];2)判断j是否小于CSR_Row[bid+1],否则线程结束执行;3)读取当前列CSR_Col[j],并把它赋值给变量cur_col;4)更新结果满向量bt的bid号元素值bt[bid]+=CSR_Valt[j]×xt[cur_col];5)j=j+1,返回2)。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610814518.8/,转载请声明来源钻瓜专利网。
- 上一篇:通用串行总线音频锁频的装置和方法
- 下一篇:一种减少试验样本量的指标鉴定方法