[发明专利]一种复数矩阵的优化方法有效
申请号: | 201210167484.X | 申请日: | 2012-05-28 |
公开(公告)号: | CN102722472A | 公开(公告)日: | 2012-10-10 |
发明(设计)人: | 顾乃杰;杨阳朝;陈强;吴淅 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 汪祥虬 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种复数矩阵的优化方法,特征是先计算在龙芯体系结构下特定的展开粒度,对复数矩阵进行四乘四循环展开,将矩阵分块大小nb选取为一个小于52并使得24乘以矩阵分块大小nb的平方小于龙芯处理器一级数据缓存64千字节的最大的值,得到在龙芯上最优的理想矩阵分块大小;并利用数据存储的连续性和局部性对矩阵乘法中的矩阵进行合理划分与合并,减少龙芯的一级数据缓存访问次数;对复数矩阵运算中的普通复数乘加运算利用复数经典算法中两个复数之间的乘法算法,从而减小了运行规模,使得复数矩阵乘法运算在龙芯3A上的计算性能提高了大约50%,可使BLAS库在龙芯3A上的运算速度达到原来的2.5倍以上。 | ||
搜索关键词: | 一种 复数 矩阵 优化 方法 | ||
【主权项】:
一种在龙芯上的复数矩阵的优化方法,其特征在于操作步骤如下:第一步:利用展开粒度公式KAKB/(KA+KB)=m/n计算最优取数比,其中KA和KB分别为矩阵A和矩阵B的展开粒度,m/n为最优运算取数比,令两个矩阵展开粒度的乘积除以两个矩阵的展开粒度之和所得的值与最优取数比相同,在龙芯上调整两个矩阵的展开粒度KA和KB,使得在循环结构中保证矩阵A和矩阵B的运算取数比m∶n为2∶1,则所得的展开粒度即为在运算中一次循环需要展开的运算次数;第二步:在矩阵运算时,对于矩阵内数据大于500的大规模矩阵计算,对每一分块进行运算时在循环中采用4×4的展开,每个展开的运算对应龙芯的一个发射槽,通过发射槽发射运算指令给龙芯运算器进行乘加运算;根据矩阵分块公式24×(nb)2≤NK,其中NK为龙芯的一级数据缓存cache的大小,将矩阵分块大小nb选取为一个小于52并使得24乘以矩阵分块大小nb的平方(nb)2小于龙芯处理器一级数据缓存64千字节的最大的值,得到在龙芯上最优的理想矩阵分块大小;第三步:对于在复数矩阵运算中出现的普通复数乘加运算,利用复数经典算法中两个复数之间的乘法算法,设第一复数为A=x+yi,第二复数为B=m+ni,第三复数为C=p+qi,计算第一复数A乘以第二复数B后再加第三复数C的值,将此值赋给第三复数作为第三复数的新值,算法流程如下:计算第一复数A的实部x乘以第二复数B的实部m的值为第一实数e←x×m,计算第一复数A的虚部y乘以第二复数B的虚部n的值为第二实数f←y×n,计算第三复数C的实部p加第一实数e后减去第二实数f的值,并将此值付给第三复数C的实部p←p+e‑f,计算第一复数A的实部x加第一复数A的虚部y的值为第三实数k←x+y,计算第二复数B的实部m加第二复数B的虚部n的值为第四实数t←m+n,计算第三复数C的虚部q加第三实数k乘以第四实数t的积再减去第一实数e和第二实数f的值,并将此值付给第三实数k的虚部q←q+k×t‑e‑f,则得到第三复数C的新值,通过龙芯发射槽传给运算器参与分块矩阵的运算。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210167484.X/,转载请声明来源钻瓜专利网。
- 上一篇:照明装置、电光装置及电子设备
- 下一篇:超声波探伤厚壁钢管纵向内壁缺陷的方法