[发明专利]一种基于龙芯3A的单精度矩阵乘法优化方法有效
申请号: | 201110191133.8 | 申请日: | 2011-07-08 |
公开(公告)号: | CN102214160A | 公开(公告)日: | 2011-10-12 |
发明(设计)人: | 顾乃杰;何颂颂;张斌;许耿纯 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 汪祥虬 |
地址: | 230026*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 精度 矩阵 乘法 优化 方法 | ||
1.一种基于龙芯3A的单精度矩阵乘法优化方法,先将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分成为两个子矩阵,然后将分块形成的子矩阵块拷贝到一个连续的地址空间中,再通过使用龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码来完成子矩阵与子矩阵的乘法;其特征在于:所述将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分采取分别不大于一级缓存一半和不大于二级缓存一半的原则划分成为两个子矩阵;在所述龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码中采用龙芯3A的128位访存指令和并行单精度浮点指令,并采用两倍的运算数据集大小减去运算数据单元大小预取地址计算方式来对数据进行预取;
具体操作步骤如下:
第一步、数据分块并拷贝步骤
先将龙芯3A的两个单精度源矩阵分块,使第一个源矩阵的子块大小不大于龙芯3A一级缓存容量的一半,第二个源矩阵的子块大小为不大于龙芯3A二级缓存容量的一半,然后将两个子块分别拷贝到连续的两个地址空间中;
第二步、核心计算代码编写步骤
通过使用128位访存指令,每次将4个单精度浮点数取到2个64位的浮点寄存器中;
使用低高位合并指令将存于寄存器高32位的单精度浮点数提取出来,使用并行单精度浮点乘加指令实现并行单精度浮点乘加运算;
循环展开度设为4*4,即每次从两个子块中各取4个单精度浮点数,两两分别相乘后得到16个结果累加到目标矩阵中;指令调度中,由4条指令组成一个小组,每个小组包含浮点操作指令2条,取数指令和空操作指令各一条或空操作指令2条,由5个小组组成一个大组,浮点计算需要用的操作数全部提前2个大组通过128位访存指令和低高位合并指令放到指定寄存器中;
在核心计算代码的最开头,对结果矩阵和第二个源矩阵子块进行预取,其中结果矩阵的预取地址设为两倍的运算数据集大小减去运算数据单元大小,第二个源矩阵子块的预取地址设为运算数据集大小,预取指令的频率等于高速缓冲存储器行的大小除以计算数据集的大小。
2.如权利要求1所述基于龙芯3A的单精度矩阵乘法优化方法,特征在于所述数据分块并拷贝步骤采取将龙芯3A的两个单精度源矩阵数据分别以龙芯3A一级缓存容量的1/4为间隔拷贝到目标地址空间中,使两个子块的拷贝目标地址所对应的一级缓存地址不在同一组。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110191133.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:水喷射真空除氧器
- 下一篇:超临界直流锅炉不带泵启动系统及启动方法