[发明专利]面向通用多核DSP的矩阵乘加速方法有效

专利信息
申请号: 201410541958.1 申请日: 2014-10-15
公开(公告)号: CN104346318A 公开(公告)日: 2015-02-11
发明(设计)人: 迟利华;刘杰;甘新标;晏益慧;徐涵;胡庆丰;蒋杰;李胜国;王庆林;皇甫永硕;崔显涛;周陈 申请(专利权)人: 中国人民解放军国防科学技术大学
主分类号: G06F17/16 分类号: G06F17/16
代理公司: 国防科技大学专利服务中心 43202 代理人: 郭敏
地址: 410073 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种面向通用多核DSP的矩阵乘加速方法,目的是提高矩阵乘的运算速度和最大化通用多核DSP的计算效率。技术方案是先对进行DSP配置并初始化:然后对矩阵A和矩阵B进行划分,依据VPU的拓扑结构mg×ng将原矩阵乘运算转换为分块矩阵乘运算;接着每个VPU同时并行执行数据迁移操作;最后依据数据分布原理,将各VPU中AM的结果归并组成结果矩阵C=A×B的计算结果。采用本发明可以提高通用多核DSP结构的矩阵乘运算速度和通用多核DSP系统的计算资源利用率。
搜索关键词: 面向 通用 多核 dsp 矩阵 加速 方法
【主权项】:
一种面向通用多核DSP的矩阵乘加速方法,其特征在于包括以下步骤:第一步、DSP配置与初始化:1.1 定义矩阵A的维度为M×K,矩阵B的维度为K×N,A和B相乘的结果矩阵C的维度为M×N,M,K,N均为正整数;A的元素为apq(0≤p≤M‑1,0≤q≤K‑1),B的元素为bst(0≤s≤K‑1,0≤t≤N‑1);1.2 查询体系结构手册获取DSP中DSP计算核,即虚拟处理单元VPU的拓扑结构mg×ng,即DSP中有mg×ng个VPU,物理分布为mg行×ng列,依次编号为(0,0),(0,1),…(0,ng‑1),(1,0),(1,1),…(1,ng‑1),……(mg‑1,0),(mg‑1,1),…(mg‑1,ng‑1);1.3 查询体系结构手册获取每个VPU拥有的浮点乘累加功能部件VPE的数目me;1.4 利用系统软件提供的初始化函数完成DSP初始化;第二步、对矩阵A和矩阵B进行划分,依据VPU的拓扑结构mg×ng将原矩阵乘运算转换为分块矩阵乘运算;第三步、每个VPU同时并行执行如下数据迁移操作:3.1 令A块矩阵行变量i'=0;3.2 令A块矩阵列变量j'=0;3.3 核(i',j')从DSP存储空间读A块矩阵Ai'j'到存储器AM,Ai'j'占用的存储空间记为3.4 令B块矩阵列变量k″=0;3.5 核(j',k″)从DSP存储空间读B块矩阵Bj'k″到标量数据缓冲区L1D;3.6 每个VPU并行执行如下向量乘法操作:3.7 获取A块矩阵Ai'j'的维度m'0×k0,1≤m'0≤m,1≤k0≤k;3.8 令列长度变量j″=0;3.9 初始化向量循环变量v=0;3.10 定义向量循环次数表示下取整;3.11 初始化广播变量r=0;3.12 从A块矩阵Ai'j'的第j″列的第v*me个元素开始连续读取me个元素,组成me维的向量<mrow><msub><mi>V</mi><mi>a</mi></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>a</mi><mrow><mrow><mo>(</mo><msub><mi>vm</mi><mi>e</mi></msub><mo>+</mo><mn>0</mn><mo>)</mo></mrow><msup><mi>j</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mrow><mo>(</mo><msub><mi>vm</mi><mi>e</mi></msub><mo>+</mo><mn>1</mn><mo>)</mo></mrow><msup><mi>j</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup></mrow></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>a</mi><mrow><mrow><mo>(</mo><msub><mi>vm</mi><mi>e</mi></msub><mo>+</mo><mrow><mo>(</mo><msub><mi>m</mi><mi>e</mi></msub><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><msup><mi>j</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup></mrow></msub><mo>)</mo></mrow><mo>;</mo></mrow>3.13 取矩阵Bj′k′第j″行中的第r个元素广播成一个me维的向量3.14 向量Va与Vb对应元素相乘,得到矩阵C第j″列连续me个元素的部分乘积,具体相乘规则如下:3.15 将3.14得到的矩阵C第j″列连续me个元素的部分乘积传回至AM,这me个元素占据的存储空间记为3.16 如果j″>0,转3.17,否则,转3.18;3.17 将3.15传回的第j″列连续me个元素的部分乘积与AM中存储的j″‑1列连续me个元素的部分乘积对应相加,具体相加方法如下:3.17.1 令i3=vme+0;3.17.2 Ci'k″(i3,j″)=Ci'k″(i3,j″)+Ci'k″(i3,j″‑1),Ci'k″(i3,j″)表示结果矩阵的块矩阵Ci'k″的元素;3.17.3 i3=i3+1;3.17.4 如果i3≤vme+(me‑1),转3.17.2,否则,转3.17.5;3.17.5 将3.17.2累加结果传回至阵列存储器,占用的存储空间记为3.18 广播变量r=r+1;3.19 如果r<k0,转3.12,否则,转3.21;3.20 向量循环变量v=v+1;3.21 如果v<Vz,转3.11,否则,转3.23;3.22 定义向量循环余数vr=m0‑v*me;3.23 从A块矩阵Ai'j'的第j″列的第v*me个元素开始连续读取vr个元素构成一个me维的向量的前vr个分量,后面me‑vr个分量以0补充,组成向量3.24 如果v=Vz,转3.13,否则,转3.26;3.25 j″=j″+1;3.26 如果j″<n0;转3.9,否则,转3.28;3.27 k″=k″+1;3.28 如果k″≤ng‑1,转3.5,否则,转3.30;3.29 j'=j'+1;3.30 如果j'≤ng‑1,转3.3,否则,转3.32;3.31 i'=i'+1;3.32 如果i≤mg‑1,转3.2,否则,转第四步;第四步、依据数据分布原理,将各VPU中阵列存储器的结果归并组成结果矩阵C=A×B的计算结果;第五步、结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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