[发明专利]面向异构融合体系结构的矩阵乘加速方法有效

专利信息
申请号: 201910076766.0 申请日: 2019-01-27
公开(公告)号: CN109871512B 公开(公告)日: 2020-05-22
发明(设计)人: 甘新标;曾瑞庚;杨志辉;孙泽文;吴涛;刘杰;龚春叶;李胜国;杨博;徐涵;晏益慧 申请(专利权)人: 中国人民解放军国防科技大学
主分类号: G06F17/16 分类号: G06F17/16;G06F7/523
代理公司: 长沙中科启明知识产权代理事务所(普通合伙) 43226 代理人: 任合明
地址: 410003 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 面向 融合 体系结构 矩阵 加速 方法
【权利要求书】:

1.一种面向异构融合体系结构的矩阵乘加速方法,其特征在于包括以下步骤:

第一步、设计面向异构融合体系结构的分块矩阵乘版本,具体步骤如下:

1.1异构融合体系结构配置与初始化,具体方法是:

定义矩阵A的维度为M×K,矩阵B的维度为K×N,A和B相乘的结果矩阵C的维度为M×N,M,K,N均为正整数;A的第p行第q列元素为apq,0≤p≤M-1,0≤q≤K-1,B的第q行第t列元素为bqt,0≤t≤N-1;

1.2若异构融合体系结构仅由CPU组成,对CPU进行初始化,方法如下:

1.2.1.查询体系结构手册获取一个CPU中计算核的拓扑结构,如果多核CPU中的拓扑结构为mg×ng,即一个CPU中有mg×ng个计算核,物理分布为mg行×ng列,将计算核依次编号为(0,0),(0,1),…(0,ng-1),(1,0),(1,1),…(1,ng-1),……,(i,0),(i,1),…,(i,j),(i,ng-1),……(mg-1,0),(mg-1,1),…(mg-1,ng-1),0≤i≤mg-1,0≤j≤ng-1;

1.2.2.查询体系结构手册获取每个CPU计算核拥有的浮点向量乘累加功能部件FMA的数目me

1.2.3.利用操作系统提供的初始化函数完成多核CPU初始化;

1.3依据CPU的拓扑结构对A和B进行矩阵划分,将矩阵A划分为mg×ng个A块矩阵,mg×ng个A块矩阵的排布方式与mg×ng个计算核的排布方式相同,第i行第j列个A块矩阵用Aij表示,0≤i≤mg-1,0≤j≤ng-1,每个块矩阵的维度为m×k,其中表示上取整;将K*N的矩阵B划分为ng×mg个B块矩阵,ng×mg个B块矩阵的排布方式与mg×ng个计算核的排布方式相同,第r行第s列B块矩阵用Brs表示,0≤r≤mg-1,0≤s≤ng-1,每个块矩阵的维度为k×n,

1.4初始化结果矩阵C=0,即将C中各元素均赋值为0,令C(mo,no)=0,C(mo,no) 表示结果矩阵第mo行第no列的元素,0≤mo≤M-1,0≤no≤N-1;

1.5矩阵乘加速,得到mg×ng×me个C块矩阵:mg×ng×me个FMA以CPU计算核共享存储空间为共享存储空间,以标量数据缓冲区为数据缓冲区,并行执行分块矩阵乘法操作,使得矩阵乘加速,每个FMA独立完成分配给自己的块矩阵乘,编号为(i',j')的FMA完成块矩阵乘

1.6结果归并,即依据数据分布原理,以CPU计算核共享存储空间为共享存储空间,将共享存储空间的结果归并组成结果矩阵C,按1.2~1.6采用MPI编程方式实现的矩阵乘即为CPU矩阵乘加速版本vcpu

1.7若异构融合体系结构由CPU和GPU组成,采用CUDA编程方式实现面向GPU的矩阵乘加速版本vgpu,具体方法如下:

1.7.1查询体系结构手册获取每个GPU中计算核的拓扑结构,即GPU中的线程处理器TPU拓扑结构mg×ng,即GPU中有mg×ng个TPU,物理分布为mg行×ng列,依次编号为(0,0),(0,1),…(0,ng-1),

(1,0),(1,1),…(1,ng-1),……,(i,0),(i,1),…,(i,j),…,(i,ng-1),……(mg-1,0),(mg-1,1),…(mg-1,ng-1);

1.7.2查询体系结构手册获取每个TPU拥有的向量浮点乘累加功能部件FMA的数目me

1.7.3利用操作系统提供的函数完成初始化;

1.7.4矩阵划分,基于GPU的拓扑结构采用1.3步所述的矩阵划分方法对A和B进行分块,得到mg×ng个A块矩阵和ng×mg个B块矩阵;

1.7.5 mg×ng×me个FMA以GPU的Shared Memory为共享存储空间,以GPU的ConstantMemory为数据缓冲区,采用1.5步所述的矩阵乘加速方法并行执行矩阵乘法,每个FMA独立完成分配给自己的块矩阵乘,编号为(i',j')的FMA完成块矩阵乘

1.7.6以GPU的Shared Memory为共享存储空间,采用1.6步所述的结果归并方法完成各FMA计算的C块矩阵结果归并,得到C;

1.8若异构融合体系结构由CPU与MIC组成,采用Offload编程方式实现的MIC矩阵乘加速版本vmic,具体方法如下:

1.8.1查询体系结构手册获取每个MIC中计算核,即如MIC中的向量处理器VPU拓扑结构mg×ng,即一个MIC中有mg×ng个VPU,物理分布为mg行×ng列,依次编号为(0,0),(0,1),…(0,ng-1),(1,0),(1,1),…(1,ng-1),……,(i,0),(i,1),…,(i,j),…,(i,ng-1),……(mg-1,0),(mg-1,1),…(mg-1,ng-1);

1.8.2查询体系结构手册获取每个VPU拥有的向量浮点乘累加功能部件FMA的数目me

1.8.3利用操作体系提供的函数完成初始化;

1.8.4矩阵划分,基于VPU的拓扑结构采用1.3步所述的矩阵划分方法对A和B进行分块,得到mg×ng个A块矩阵和ng×mg个B块矩阵;

1.8.5 mg×ng×me个FMA以MIC的内存空间即内存为共享存储空间,以共享存储空间便携式Cache为数据缓冲区,采用1.5步所述的矩阵乘加速方法并行执行矩阵乘法,每个FMA独立完成分配给自己的块矩阵乘,编号为(i',j')的FMA完成块矩阵乘

1.8.6以MIC的内存空间为共享存储空间,采用1.6步所述的结果归并方法完成各FMA计算的C块矩阵结果归并,得到C;

1.9若异构融合体系结构由CPU与Matrix2000组成,若Matrix2000采用SCIF编程模式,则采用SCIF编程模式实现矩阵乘加速版本vscif,具体方法如下:

1.9.1查询体系结构手册获取每个Matrix2000中计算核,即Matrix2000中的向量处理单元VPE拓扑结构mg×ng,即Matrix2000中有mg×ng个VPE,物理分布为mg行×ng列,依次编号为(0,0),(0,1),…(0,ng-1),(1,0),(1,1),…(1,ng-1),……,(i,0),(i,1),…,(i,j),…,(i,ng-1),……(mg-1,0),(mg-1,1),…(mg-1,ng-1);

1.9.2查询体系结构手册获取每个VPE拥有的向量浮点乘累加功能部件FMA(FusedMultiply Add)的数目me

1.9.3利用操作系统提供的函数完成初始化;

1.9.4矩阵划分,基于VPE的拓扑结构采用1.3步所述的矩阵划分方法对A和B进行分块,得到mg×ng个A块矩阵和ng×mg个B块矩阵;

1.9.5 mg×ng×me个FMA以Matrix2000的全局空间Global Cache为共享存储空间,以共享存储空间Array Memory为数据缓冲区,采用1.5步所述的矩阵乘加速方法并行执行矩阵乘法;每个FMA独立完成分配给自己的块矩阵乘,编号为(i',j')的FMA完成块矩阵乘

1.9.6以Matrix2000中的共享存储空间Array Memory为共享存储空间,采用1.6步所述的结果归并方法完成各FMA计算的C块矩阵结果归并,得到C;

1.10若异构融合体系结构由CPU与Matrix2000组成,若Matrix2000采用COI编程模式,则采用COI编程模式实现矩阵乘加速版本vcoi,具体方法如下:

1.10.1查询体系结构手册获取系统中计算核,若Matrix2000中的向量处理单元VPE拓扑结构为mg×ng,即Matrix2000中有mg×ng个VPE,物理分布为mg行×ng列,依次编号为(0,0),(0,1),…(0,ng-1),(1,0),(1,1),…(1,ng-1),……,(i,0),(i,1),…,(i,j),…,(i,ng-1),……(mg-1,0),(mg-1,1),…(mg-1,ng-1);

1.10.2查询体系结构手册获取每个VPE拥有的向量浮点乘累加功能部件FMA的数目me

1.10.3利用系统软件提供的函数完成初始化;

1.10.4矩阵划分,基于VPE的拓扑结构采用1.3步所述的矩阵划分方法对A和B 进行分块,得到mg×ng个A块矩阵和ng×mg个B块矩阵;

1.10.5 mg×ng×me个FMA以Matrix2000的全局空间Global Cache为共享存储空间,以共享存储空间Array Memory为数据缓冲区,采用1.5步所述的矩阵乘加速方法并行执行矩阵乘法;每个FMA独立完成分配给自己的块矩阵乘,编号为(i',j')的FMA完成块矩阵乘

1.10.6以Matrix2000中的共享存储空间Array Memory为共享存储空间,采用1.6步所述的结果归并方法完成各FMA计算的C块矩阵结果归并,得到C;

1.11若异构融合体系结构由CPU与Matrix2000组成,若Matrix2000采用OpenMP taget编程模式,则采用OpenMP taget编程模式实现OpenMP taget矩阵乘加速版本vtarget,具体方法如下:

1.11.1查询体系结构手册获取系统中计算核,即如Matrix2000中的向量处理单元VPE拓扑结构mg×ng,即系统中有mg×ng个VPE,物理分布为mg行×ng列,依次编号为(0,0),(0,1),…(0,ng-1),(1,0),(1,1),…(1,ng-1),……,(i,0),(i,1),…,(i,j),…,(i,ng-1),……(mg-1,0),(mg-1,1),…(mg-1,ng-1);

1.11.2查询体系结构手册获取每个VPE拥有的向量浮点乘累加功能部件FMA(FusedMultiply Add)的数目me

1.11.3利用系统软件提供的函数完成初始化;

1.11.4矩阵划分,基于VPE的拓扑结构采用1.3步所述的矩阵划分方法对A和B进行分块,得到mg×ng个A块矩阵和ng×mg个B块矩阵;

1.11.5基于Matrix2000的全局空间Global Cache和共享存储空间Array Memory,mg×ng×me个FMA以Matrix2000的全局空间Global Cache为共享存储空间,以共享存储空间Array Memory为数据缓冲区,采用1.5步所述的矩阵乘加速方法并行执行矩阵乘法;每个FMA独立完成分配给自己的块矩阵乘,编号为(i',j')的FMA完成块矩阵乘

1.11.6以Matrix2000中的共享存储空间Array Memory为共享存储空间,采用1.6步所述的结果归并方法完成各FMA完成的C块矩阵结果归并,得到C;

第二步:集成异构融合多版本矩阵乘,方法如下:

2.1分别编译vcpu、vgpu、vmic、vtarget、vcoi和vscif对应的源代码,生成vcpu、vgpu、vmic、vtarget、vcoi和vscif的可执行文件;

2.2利用tar命令将vcpu、vgpu、vmic、vtarget、vcoi和vscif的可执行文件打包生成异构融合版本的库文件HU-xgemm;

第三步、适配异构融合体系结构中的加速器,方法如下:

3.1利用操作系统命令lspci|grep processor查询异构融合体系结构中加速器类型,令加速器类型变量arc为加速器类型;

3.2若arc=Matrix2000,转3.2.1:否则,转3.3;

3.2.1.查询Matrix2000编程技术手册,确认支持的编程模型,赋值给编程模型变量prolan;

3.2.2.若prolan=OpenMP taget,调用HU-xgemm中的vcpu和vtarget分别完成主处理器CPU端和加速器Matrix2000端的矩阵乘计算;否则,转3.2.3;

3.2.3.若prolan=COI,调用HU-xgemm中的vcpu和vcoi分别完成主处理器CPU端和加速器Matrix2000端的矩阵乘计算;否则,转3.2.4;

3.2.4.若prolan=SCIF,调用HU-xgemm中的vcpu和vscif分别完成主处理器CPU端和加速器Matrix2000端的矩阵乘计算;否则,转3.3;

3.3若arc=MIC,调用HU-xgemm中的vcpu和vmic分别完成主处理器CPU端和加速器MIC端的矩阵乘计算;否则,转3.4;

3.4若arc=GPU,调用HU-xgemm中的vcpu和vgpu分别完成主处理器CPU端和加速器GPU端的矩阵乘计算;否则,转3.5;

3.5若系统中无专用加速器,即只有CPU,调用HU-xgemm中的vcpu完成矩阵乘计算。

2.如权利要求1所述的面向异构融合体系结构的矩阵乘加速方法,其特征在于1.2.3步所述操作系统提供的初始化函数指init函数。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/pat/books/201910076766.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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