[发明专利]申威26010众核CPU上GEMM稠密矩阵乘高性能实现方法有效
申请号: | 201710310445.3 | 申请日: | 2017-05-05 |
公开(公告)号: | CN107168683B | 公开(公告)日: | 2020-06-09 |
发明(设计)人: | 杨超;蒋丽娟;尹万旺;敖玉龙;魏迪;袁欣辉;刘芳芳;张鹏 | 申请(专利权)人: | 中国科学院软件研究所;无锡江南计算技术研究所 |
主分类号: | G06F9/302 | 分类号: | G06F9/302;G06F9/38 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;顾炜 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了申威26010众核CPU上GEMM稠密矩阵乘高性能实现方法,针对申威众核处理器26010,并基于存储结构、访存、硬件流水线以及寄存器级通信机制等平台特性,优化矩阵分块与核间数据映射方法,设计了自顶向下的三级分块并行块矩阵乘算法,基于寄存器级通信机制设计从核计算资源数据共享方法,并利用主从核间异步DMA数据传输机制,设计了计算与访存重叠的双缓冲策略,在单个从核上,设计了循环展开策略与软件流水线排布方法,使用了高效的寄存器分块模式以及SIMD向量化乘加指令,实现函数优化。该高性能GEMM函数性能与单核开源BLAS数学库GotoBLAS相比,平均加速比为227.94,最高加速比为296.93。 | ||
搜索关键词: | 申威 26010 众核 cpu gemm 稠密 矩阵 性能 实现 方法 | ||
【主权项】:
国产申威26010众核CPU上GEMM稠密矩阵乘高性能实现方法,其特征在于:申威26010众核平台存储结构体系自底向上包含主内存,从核LDM,寄存器三级存储结构,受限于各级存储结构存储空间的大小,设计三级分块并行矩阵乘算法,以将数据传输到从核上利用从核阵列强大的计算资源进行计算,其中从核阵列包含组织成8行8列mesh结构的64个从核,设C为待更新矩阵,A,B为运算矩阵,C、A、B维度分别为m*n,m*k,k*n,在主内存分别将矩阵C、A、B划分成大小为bm*bn的子矩阵BCij,1≤i≤m/bm,1≤j≤n/bn,bm*bk的子矩阵BAil,1≤i≤m/bm,1≤l≤n/bn和bk*bn的子矩阵BBlj,1≤l≤k/bk,1≤j≤n/bn,在从核LDM分别将子矩阵BCij,BAil,BBlj平均划分成64份大小为pm*pn的子矩阵PCuv,1≤u≤8,1≤v≤8,pm*pk的子矩阵PAuw,1≤u≤8,1≤w≤8和pk*pn的子矩阵PBwv,1≤w≤8,1≤v≤8,将数据从LDM传输到寄存器进行运算时,将子矩阵PCuv划分成大小为rm*rn的子矩阵进行更新;所述三级分块并行矩阵乘算法具体步骤如下:第一步,采用n‑k‑m三层嵌套循环算法,控制矩阵C以子矩阵BCij为单位,串行更新;第二步,更新子矩阵BCij时,利用主从核间异步DMA数据传输机制,通过计算与访存重叠的双缓冲策略,将计算所需的子矩阵BCij,BAil和BBlj从主内存传输到从核LDM中,且进行数据传输时,将子矩阵BCij,BAil和BBlj进一步划分的子矩阵PCuv,PAuw和PBwv,分别映射到64个从核上,每个从核得到相应的子矩阵PCuv,PAuw和PBwv;第三步,更新子矩阵BCij时,利用已传输到从核阵列上的子矩阵BAil和BBlj,在64个从核上,并行计算核心操作BAil*BBlj,每个从核负责映射到本地LDM子矩阵PCuv的更新,且在并行计算时,通过寄存器通信机制实现从核阵列间的数据共享;第四步,每个从核更新子矩阵PCuv时,主要执行运算PAuw*PBwv,对此核心操作,设计循环展开策略与软件流水线排布方法,在最内层循环使用高效的寄存器分块模式,以rm*rn的C子矩阵为单位进行更新,并256位SIMD向量化以及乘加指令,实现函数优化;第五步,将已经更新的子矩阵BCij,通过DMA方式从从核LDM中写回主内存中。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所;无锡江南计算技术研究所,未经中国科学院软件研究所;无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710310445.3/,转载请声明来源钻瓜专利网。