[发明专利]一种基于龙芯3A的单精度矩阵乘法优化方法有效
申请号: | 201110191133.8 | 申请日: | 2011-07-08 |
公开(公告)号: | CN102214160A | 公开(公告)日: | 2011-10-12 |
发明(设计)人: | 顾乃杰;何颂颂;张斌;许耿纯 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 汪祥虬 |
地址: | 230026*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 精度 矩阵 乘法 优化 方法 | ||
技术领域
本发明属于电数字数据处理技术领域,具体涉及基于龙芯3A的单精度矩阵乘法的优化方法。
背景技术
龙芯3A是中国第一个具有完全自主知识产权的四核中央处理器(CPU)。在高性能计算领域,龙芯3A需要基础线性代数子程序库的支持。龙芯3A上能够使用的较优的基础线性代数子程序库是美国德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)。德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)通过使用矩阵分块、数据拷贝、循环展开和指令调度等优化技术,实现了高效的单精度矩阵乘法。龙芯3A拥有128位访存、并行单精度浮点等特有指令,但由于德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)并不是针对龙芯3A的特点所做的专门优化,因此它所采用的单精度矩阵乘法在龙芯3A平台上执行的性能并不高。
发明内容
本发明提出一种基于龙芯3A的单精度矩阵乘法优化方法,以克服现有技术的上述缺陷,达到在龙芯3A平台上单精度矩阵乘法的高效实现。
本发明基于龙芯3A的单精度矩阵乘法优化方法,先将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分成为两个子矩阵,然后将分块形成的子矩阵块拷贝到一个连续的地址空间中,再通过使用龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码来完成子矩阵与子矩阵的乘法;其特征在于:所述将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分采取分别不大于一级缓存一半和不大于二级缓存一半的原则划分成为两个子矩阵;在所述龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码中采用龙芯3A的128位访存指令和并行单精度浮点指令,并采用两倍的运算数据集大小减去运算数据单元大小预取地址计算方式来对数据进行预取;
具体操作步骤如下:
第一步、数据分块并拷贝步骤
先将龙芯3A的两个单精度源矩阵分块,使第一个源矩阵的子块大小不大于龙芯3A一级缓存容量的一半,第二个源矩阵的子块大小为不大于龙芯3A二级缓存容量的一半,然后将两个子块分别拷贝到互相连续的两个地址空间中;
第二步、核心计算代码编写步骤
通过使用128位访存指令,每次将4个单精度浮点数取到2个64位的浮点寄存器中;
使用低高位合并指令plu.ps将存于寄存器高32位的单精度浮点数提取出来,使用并行单精度浮点乘加指令madd.ps实现并行单精度浮点乘加运算;
循环展开度设为4*4,即每次从两个子块中各取4个单精度浮点数,两两分别相乘后得到16个结果累加到目标矩阵中;指令调度中,由4条指令组成一个小组,每个小组包含浮点操作指令2条,取数指令和空操作指令各一条或空操作指令2条,由5个小组组成一个大组,浮点计算需要用的操作数全部提前2个大组通过128位访存指令和低高位合并指令放到指定寄存器中;
在核心计算代码的最开头,对结果矩阵和第二个源矩阵子块进行预取,其中结果矩阵的预取地址设为两倍的运算数据集大小减去运算数据单元大小,第二个源矩阵子块的预取地址设为运算数据集大小,预取指令的频率等于高速缓冲存储器(Cache)行的大小除以计算数据集的大小。
本发明基于龙芯3A的单精度矩阵乘法优化方法还可以将所述数据分块并拷贝步骤中子块拷贝到连续空间的方法进一步改进为将两个源矩阵数据分别以龙芯3A一级缓存容量的1/4为间隔拷贝到目标地址空间中,使两个子块的拷贝目标地址所对应的一级缓存地址不在同一组。
与现有技术相比较,本发明提出的这种基于龙芯3A的单精度矩阵乘法优化方法,通过使用128位访存和并行单精度浮点等龙芯3A的特有指令,使取数和浮点部件运算效率有所提高;由于本发明根据龙芯3A指令流水特点,在核心计算代码中巧妙地排列指令顺序,使浮点运算部件基本上能够满负荷运转;由于本发明改进了预取地址计算方式,克服了地址非对齐数据预取无效的问题,从而使地址非对齐的单精度矩阵乘法执行效率达到接近于地址对齐的单精度矩阵乘法。采用本发明方法优化后的单精度矩阵乘法的运算速度比德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)版本2-1.07中的实现平均提高了90%以上。
具体实施方式
实施例1:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110191133.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:水喷射真空除氧器
- 下一篇:超临界直流锅炉不带泵启动系统及启动方法