[发明专利]一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法有效

专利信息
申请号: 201610130123.6 申请日: 2016-03-08
公开(公告)号: CN105808309B 公开(公告)日: 2019-04-05
发明(设计)人: 刘昊;杨超;刘芳芳;赵玉文;张鹏;孙乔 申请(专利权)人: 中国科学院软件研究所
主分类号: G06F8/30 分类号: G06F8/30;G06F8/41
代理公司: 北京科迪生专利代理有限责任公司 11251 代理人: 成金玉;孟卜娟
地址: 100190 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明提出了一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,针对国产申威SW1600平台,采用“interface接口‑driver驱动‑kernel汇编核心代码”的三层代码设计框架,使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术等与平台架构相关的技术手段,实现汇编级手工优化,解决了编译器针对计算密集型函数GEMM优化不足的问题,大幅提升函数性能,与开源BLAS数学库GotoBLAS相较,平均加速比为4.72,最高加速比为5.61。
搜索关键词: 一种 基于 平台 基础 线性代数 blas 三级 函数 gemm 性能 实现 方法
【主权项】:
1.一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,其特征在于:基于申威SW1600平台的一个CPU进行设计,采用interface接口层函数‑driver驱动层函数‑kernel汇编核心层函数的三层代码设计框架,支持两个矩阵A、B各自为转置或非转置多种情况,框架内部调用关系为interface‑driver‑kernel,具体实现如下:(1)interface接口层函数:该层为函数接口,负责输入参数检查,判断矩阵规模参数是否合法,当输入参数不合法时返回错误码;判断两个输入矩阵A、B的转置情况,依据不同情况调用对应的driver驱动层函数;(2)driver驱动层函数:由interface接口层函数调用,并调用下层的kernel汇编核心层函数;该driver驱动层函数负责矩阵数据重排,以适应kernel汇编核心层函数的寄存器分块情况,计算过程包含矩阵的N维和M维两重嵌套循环,在N维循环内进行输入矩阵B重排,在M维循环内进行输入矩阵A重排,保证kernel汇编核心层函数连续从cache中获取数据,以减少cache不命中的情况,提高性能;(3)kernel汇编核心层函数:为底层核心层函数,由driver驱动层函数调用,负责实际计算的高性能实现;kernel汇编核心层函数基于申威SW1600的扩展ALPHA架构指令集,使用256位的SIMD向量化运算与乘加指令提高计算性能;基于该平台的ALPHA架构特征,使用F0至F31共32个浮点向量寄存器,采用寄存器分块策略进行算法设计;利用GEMM的计算密集型特性,手工实现汇编级的循环展开与指令重排,使用计算指令掩盖访存延迟,保证CPU利用率;使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术、矩阵分块与数据重排的技术手段,大幅提升函数性能。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201610130123.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top