[发明专利]面向CPU+DSP异构系统的矩阵乘加速方法有效
申请号: | 201410544785.9 | 申请日: | 2014-10-15 |
公开(公告)号: | CN104317768A | 公开(公告)日: | 2015-01-28 |
发明(设计)人: | 刘杰;迟利华;甘新标;晏益慧;徐涵;胡庆丰;蒋杰;李胜国;王庆林;皇甫永硕;崔显涛;周陈 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F15/16 | 分类号: | G06F15/16;G06F17/16 |
代理公司: | 国防科技大学专利服务中心 43202 | 代理人: | 郭敏 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: |
本发明公开了一种面向CPU+DSP异构系统的矩阵乘加速方法,目的是面向CPU+DSP异构系统提出一种高效协同的矩阵乘加速方法,以提高矩阵乘的运算速度和最大化CPU+DSP异构系统的计算效率。技术方案是先初始化参数并对CPU+DSP异构系统信息配置,依据主处理器CPU和加速器DSP设计目标和计算性能的差异,将分配给计算结点待处理的数据划分给CPU和DSP协同处理,然后CPU和DSP并行进行数据传输与协同计算,得到 |
||
搜索关键词: | 面向 cpu dsp 系统 矩阵 加速 方法 | ||
【主权项】:
一种面向CPU+DSP异构系统的矩阵乘加速方法,其特征在于包括以下步骤:第一步、初始化参数并对CPU+DSP异构系统信息配置,具体步骤如下:1.1定义矩阵A的维度为M×K,矩阵B的维度为K×N,则A与B相乘的结果矩阵C的维度为M×N,M,K,N均为正整数;1.2查询CPU+DSP异构计算系统体系结构文档获取计算节点配置,即一个计算节点由C颗CPU和D颗DSP组成;1.3查询CPU+DSP异构计算系统体系结构文档获取计算结点的拓扑结构m×n,即,CPU+DSP异构系统由m×n个计算节点组成,每行有n个计算节点,每列有m个计算节点;1.4依据计算结点中DSP的个数,将DSP分别标识为0,1,…d,…(D‑1),0≤d<D;1.5依据CPU+DSP异构计算系统提供的基础软件工具集中的相关函数完成DSP初始化;1.6查询CPU+DSP异构计算系统体系结构文档,获取各处理器体系结构信息,即每个计算结点中用于数据传输和流程控制的CPU核个数pcl、用于计算的CPU核个数pct、每个用于计算的CPU核拥有的浮点乘累加功能部件的数目m及主频f,每个DSP单元拥有的浮点乘累加功能部件的数目m'及主频f';1.7计算主处理器的理论计算峰值Rpeak=pct*m*f;1.8计算加速器的理论计算峰值R'peak=D*m'*f';1.9确定矩阵数据划分因子η=R'peak/Rpeak;第二步、依据主处理器CPU和加速器DSP设计目标和计算性能的差异,将分配给计算结点待处理的数据划分给CPU和DSP协同处理,具体方法如下:2.1将M*K的矩阵A划分成m*K的块矩阵Ai,![]()
表示上取整,具体分块方法如下:2.1.1令i=1;2.1.2选取矩阵A的第(i‑1)*m+1行至第i*m行组成块矩阵Ai;2.1.3i=i+1;2.1.4若
转2.1.2,否则,转2.1.5,进行尾部处理;2.1.5选取矩阵A的第(i‑1)*m+1行至第M行组成块矩阵Ai;2.2将K*N的矩阵B划分成K*n的子块矩阵Bj,![]()
表示上取整,具体分块方法如下:2.2.1令j=1;2.2.2选取矩阵B的第(j‑1)*n列至第j*n列组成块矩阵Bj;2.2.3j=j+1;2.2.4若
转2.2.2,否则,转2.2.5,进行尾部处理;2.2.5选取矩阵B的第(j‑1)*n列至第N列组成块矩阵Bj;2.3依据矩阵数据划分因子η将块矩阵Bj划分为1Bj和2Bj两个子矩阵,具体方法如下:2.3.1令j=1;2.3.2依据矩阵数据划分因子η将块矩阵Bj划分为1Bj和2Bj两个子矩阵,子矩阵1Bj的维度为K*n1,2Bj的维度为K*n2,并且n1,n2满足公式(1):
2.3.3j=j+1;2.3.4若
转2.3.2,否则,转第三步;第三步、CPU和DSP并行进行数据传输与协同计算,具体方法如下:3.1令i=1,j=1;3.2采用CPU+DSP异构系统数据传输函数将块矩阵数据Ai和2Bj传输至DSP端存储空间,具体步骤如下:3.2.1在DSP端申请大小为size=M×k×sizeof(aij)的存储空间,sizeof(aij)表示矩阵A中元素aij的存储长度,单位为字节;3.2.2采用CPU+DSP异构系统提供的数据传输函数将块矩阵Ai传输至DSP端存储空间,将DSP端存储空间中存储块矩阵Ai的空间称为
3.2.3i=i+1;3.2.4在DSP端申请大小为size=k*n2×sizeof(bij)的存储空间,sizeof(bij)表示矩阵B中元素bij的存储长度为多少字节;3.2.5采用CPU+DSP异构系统提供的数据传输函数将子矩阵2Bj传输至DSP端存储空间,将DSP端存储空间中存储块矩阵2Bj的空间称为
3.2.6j=j+1;3.3采用3.2.1和3.2.2所述方法传输块矩阵数据Ai传输至
3.4采用3.2.4和3.2.5所述方法传输块子矩阵数据2Bj传输至
3.5CPU和DSP同时并行执行以下操作:3.5.1用于数据传输和流程控制的CPU核上的主线程负责CPU和DSP之间的通信和交互,同时,主线程创建两个子线程Tc和Td分别控制CPU端和DSP端的矩阵计算;3.5.2Tc调用矩阵乘库函数完成A(i‑1)×1B(j‑1)的矩阵计算,其计算结果为结果矩阵C的块矩阵C(i‑1)(j‑1)的子矩阵1C(i‑1)(j‑1);3.5.3Td调用面向DSP体系结构的矩阵库函数完成A(i‑1)×2B(j‑1)的矩阵计算,其计算结果为结果矩阵C的块矩阵C(i‑1)(j‑1)的子矩阵2C(i‑1)(j‑1);3.5.4主线程将子矩阵2C(i‑1)(j‑1)传回至CPU端存储空间;3.5.5释放
3.5.6由子矩阵1C(i‑1)(j‑1)组成块矩阵C(i‑1)(j‑1)第1至第n1列,由子矩阵2C(i‑1)(j‑1)组成块矩阵C(i‑1)(j‑1)第n1+1至第N列,其中,n1+n2=N;3.6j=j+1;3.7如果
转3.4,否则,转3.8,进行尾部计算;3.8释放
3.9i=i+1;3.10如果
转3.3,否则,转第四步;第四步、将
个块矩阵C(i‑1)(j‑1)归并,组成M×N的结果矩阵C,具体方法如下:4.1令i=1,j=1;4.2由块矩阵C(i‑1)(j‑1)的第1至第m行的第1列至第n列组成结果矩阵C的第(i‑1)*m+1行至i*m行的第(j‑1)*n+1列至第j*n列;4.3j=j+1;4.4如果
转4.2,否则,转4.5,进行列尾部处理;4.5由块矩阵C(i‑1)(j‑1)的第1至第m行的第1列至第N‑(i‑1)*n列组成结果矩阵C的第(i‑1)*m+1行至第i*m行的第(j‑1)*n+1列至第N列;4.6i=i+1;4.7如果
转4.2,否则,转4.8,进行行尾部处理;4.8由块矩阵C(i‑1)(j‑1)的第1行第M‑(i‑1)*m行的第1列至第N‑(i‑1)*n列组成结果矩阵C的第(i‑1)*m+1行至第M行的第(j‑1)*n+1列至第N列;第五步、结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410544785.9/,转载请声明来源钻瓜专利网。
- 上一篇:圣诞球自动插球机
- 下一篇:一种大型铸件类螺纹镶堵修复工具