[发明专利]一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法有效
申请号: | 201710023923.2 | 申请日: | 2017-01-13 |
公开(公告)号: | CN106775594B | 公开(公告)日: | 2019-03-19 |
发明(设计)人: | 刘芳芳;杨超;吴长茂 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;顾炜 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,由于稀疏矩阵的非零元分布很不规则,该方法设计了静态、动态两种不同的任务划分方法,以适应不同的稀疏矩阵;提出了一套动静态的缓存机制,以提升向量x的访存命中率;提出了一套自适应的优化方法,针对输入的稀疏矩阵,可以动态选出最优的执行参数,以提升其运行性能。本发明采用Matrix Market矩阵集中的16个稀疏矩阵进行测试,相比申威处理器单主核运行版SpMV最高有10倍左右加速,平均加速比为6.51。 | ||
搜索关键词: | 一种 基于 国产 26010 处理器 稀疏 矩阵 向量 乘异构众 核实 方法 | ||
【主权项】:
1.一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于包括:自适应优化、任务划分和向量x访存三个步骤,首先针对输入的稀疏矩阵进行稀疏矩阵向量乘SpMV计算时的三个参数,即调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置进行自适应优化,从而获得该稀疏矩阵的SpMV最优性能;然后根据优化后的调度方式进行任务划分;最后基于优化后的调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置三个参数进行从核计算,每个从核计算时对向量x访存采用动静态的访存机制,从而实现基于申威26010处理器的SpMV异构众核的过程;其中,所述自适应优化过程如下:针对每个输入稀疏矩阵,选取最适用的三个参数:调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置,首先选择最优的向量x的静态缓冲区大小,起始为128,最大值为max_x_size,每128递增;然后选取最优的向量x静态缓冲区读取的起始位置;最后选择最优的调度方式,所有参数的选择都采用预先运行SpMV的相应函数并选取最小执行时间对应的参数的方法来进行;所述任务划分如下:对于稀疏矩阵,采用一维划分方式,所述一维划分方式又有两种:静态任务划分和动态任务划分;所述两种方式分别适用于不同类型的稀疏矩阵;静态任务划分适用于每行非零元分布比较均匀,且向量x的访存行为差异不大的稀疏矩阵;动态任务划分则相反;所述静态任务划分是将稀疏矩阵按行等分,每个从核计算m/64行,从核内部循环执行,每次只计算稀疏矩阵的srow行,其中srow为当前申威26010众核处理器一个从核的LDM可以容纳的最多稀疏行大小;所述静态任务划分方式每个从核执行的稀疏矩阵行数基本相同;所述动态任务划分是将稀疏矩阵中的srow行的计算视为一个子任务,形成任务池,每个从核一次只负责一个子任务,执行结束后再取下一个子任务进行计算;所述动态任务划分方式时每个从核执行的稀疏矩阵的行数根据当前从核的执行情况动态调整,每个从核执行的稀疏矩阵的行数可能大不相同。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710023923.2/,转载请声明来源钻瓜专利网。