[发明专利]一种大型稀疏矩阵乘以其转置矩阵的GPU加速方法在审
申请号: | 201811464467.6 | 申请日: | 2018-12-03 |
公开(公告)号: | CN109597691A | 公开(公告)日: | 2019-04-09 |
发明(设计)人: | 周赣;姚瑶;冯燕钧;傅萌;张涛;鹿军;贺欢;李强;李静 | 申请(专利权)人: | 东南大学;国网辽宁省电力有限公司鞍山供电公司;中国电力科学研究院有限公司;国家电网有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F7/78 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 张婧 |
地址: | 210000 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 稀疏矩阵 存储格式 转置矩阵 稀疏 内核函数 电力系统状态估计 浮点运算 基础数据 数据传输 信息矩阵 转置 调用 耗时 存储 | ||
1.一种大型稀疏矩阵乘以其转置矩阵的GPU加速方法,其特征在于,所述方法包括如下步骤:
(1)、CPU中将大型稀疏矩阵A以CSR稀疏存储格式存储,稀疏矩阵A的CSR稀疏存储格式存储到三个向量中,分别是行偏移A_RowPtr,列号A_ColInd以及数值A_Val;
(2)、CPU中调用cuSPARSE函数cusparseDcsrgemm2执行A×AT,得到稀疏矩阵C的CSR稀疏存储格式,并生成COO稀疏存储格式;所述稀疏矩阵C的CSR稀疏存储格式:行偏移C_RowPtr、列号C_ColInd和数值C_Val,所述稀疏矩阵C的COO稀疏存储格式中的行号C_RowInd;
(3)、CPU将GPU内核函数计算所需数据传输给GPU;
(4)、GPU中执行稀疏矩阵乘以其转置矩阵的内核函数SparseMM:C=A×AT,该稀疏矩阵乘以其转置矩阵内核函数定义为SparseMM<Nblocks,Nthreads>,其线程块数量Nblocks取值为稀疏矩阵C的非零元个数nnzC和65535中较小者,线程块大小Nthreads固定为32。
2.根据权利要求1所述的一种大型稀疏矩阵乘以其转置矩阵的GPU加速方法,其特征在于:步骤(3)中所述所需数据包括:稀疏矩阵C的非零元个数nnzC,行号C_RowInd和列号C_ColInd;稀疏矩阵A的行偏移A_RowPtr,列号A_ColInd和数值A_Val。
3.根据权利要求1所述的一种大型稀疏矩阵乘以其转置矩阵的GPU加速方法,其特征在于:步骤(4)中所述内核函数SparseMM<Nblocks,Nthreads>的计算流程为:
(4.1)、CUDA自动为每个线程分配线程块索引blockID和线程块中的线程索引threadID;
(4.2)、将blockID和threadID赋值给变量bid和tx,之后通过bid和tx来索引bid号线程块中的tx号线程;
(4.3)、第bid号线程块负责稀疏矩阵C的第bid个非零元数值C_Val[bid]的计算;
(4.4)、第bid号线程块中,将稀疏矩阵C的第bid个非零元的行号和列号分别赋值给变量i和j:i=C_RowInd[bid],j=C_ColInd[bid];在线程块中执行Cij=A(i,:)*AT(:,j),即Cij=A(i,:)*A(j,:),其中,Cij表示稀疏矩阵C的第i行第j列的非零元,A(i,:)和A(j,:)分别表示稀疏矩阵A的第i行和第j行非零元,AT(:,j)表示稀疏矩阵A的转置矩阵AT的第j列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学;国网辽宁省电力有限公司鞍山供电公司;中国电力科学研究院有限公司;国家电网有限公司,未经东南大学;国网辽宁省电力有限公司鞍山供电公司;中国电力科学研究院有限公司;国家电网有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811464467.6/1.html,转载请声明来源钻瓜专利网。