《面向通用多核DSP的矩阵乘加速方法.pdf》由会员分享,可在线阅读,更多相关《面向通用多核DSP的矩阵乘加速方法.pdf(12页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104346318 A (43)申请公布日 2015.02.11 CN 104346318 A (21)申请号 201410541958.1 (22)申请日 2014.10.15 G06F 17/16(2006.01) (71)申请人 中国人民解放军国防科学技术大学 地址 410073 湖南省长沙市开福区德雅路 109 号 (72)发明人 迟利华 刘杰 甘新标 晏益慧 徐涵 胡庆丰 蒋杰 李胜国 王庆林 皇甫永硕 崔显涛 周陈 (74)专利代理机构 国防科技大学专利服务中心 43202 代理人 郭敏 (54) 发明名称 面向通用多核 DSP 的矩阵乘加速方法 (57)。
2、 摘要 本发明公开了一种面向通用多核 DSP 的矩阵 乘加速方法, 目的是提高矩阵乘的运算速度和最 大化通用多核 DSP 的计算效率。技术方案是先对 进行 DSP 配置并初始化 : 然后对矩阵 A 和矩阵 B 进行划分, 依据 VPU 的拓扑结构 mgng 将原矩阵 乘运算转换为分块矩阵乘运算 ; 接着每个 VPU 同 时并行执行数据迁移操作 ; 最后依据数据分布原 理, 将各 VPU 中 AM 的结果归并组成结果矩阵 C AB 的计算结果。采用本发明可以提高通用多核 DSP 结构的矩阵乘运算速度和通用多核 DSP 系统 的计算资源利用率。 (51)Int.Cl. 权利要求书 4 页 说明书 。
3、5 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书5页 附图2页 (10)申请公布号 CN 104346318 A CN 104346318 A 1/4 页 2 1. 一种面向通用多核 DSP 的矩阵乘加速方法, 其特征在于包括以下步骤 : 第一步、 DSP 配置与初始化 : 1.1 定义矩阵 A 的维度为 MK, 矩阵 B 的维度为 KN, A 和 B 相乘的结果矩阵 C 的 维度为 MN, M,K,N 均为正整数 ; A 的元素为 apq(0 p M-1,0 q K-1), B 的元素为 bst(0 s K-1,0 t N-1) ; 1。
4、.2 查询体系结构手册获取 DSP 中 DSP 计算核, 即虚拟处理单元 VPU 的拓扑结构 mgng, 即 DSP 中有 mgng 个 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。
5、ng 将原矩阵乘运算转 换为分块矩阵乘运算 ; 第三步、 每个 VPU 同时并行执行如下数据迁移操作 : 3.1 令 A 块矩阵行变量 i 0 ; 3.2 令 A 块矩阵列变量 j 0 ; 3.3 核 (i,j) 从 DSP 存储空间读 A 块矩阵 Aij到存储器 AM, Aij占用的存储空间记 为 3.4 令 B 块矩阵列变量 k 0 ; 3.5 核 (j,k ) 从 DSP 存储空间读 B 块矩阵 Bjk到标量数据缓冲区 L1D ; 3.6 每个 VPU 并行执行如下向量乘法操作 : 3.7 获取 A 块矩阵 Aij的维度 m0k0, 1 m0 m,1 k0 k ; 3.8 令列长度变量 。
6、j 0 ; 3.9 初始化向量循环变量 v 0 ; 3.10 定义向量循环次数表示下取整 ; 3.11 初始化广播变量 r 0 ; 3.12 从 A 块矩阵 Aij的第 j列的第 v*me个元素开始连续读取 me个元素, 组成 me维 的向量 3.13 取 矩 阵 Bj k 第 j 行 中 的 第 r 个 元 素 广 播 成 一 个 me维 的 向 量 3.14 向量 Va与 Vb对应元素相乘, 得到矩阵 C 第 j列连续 me个元素的部分乘积, 具体 相乘规则如下 : 权 利 要 求 书 CN 104346318 A 2 2/4 页 3 3.15 将 3.14 得到的矩阵 C 第 j列连续 。
7、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 Cik(i3,j ) Cik(i3,j )+Cik(i3,j -1), Cik(i3,j ) 表示结果 矩阵的块矩阵 Cik的元素 ; 3.17.3 i3 i3+1 ; 3.17.4 如果 i3 vme+(me-1), 转 3.17.2, 否则, 转。
8、 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 块 矩 阵 Aij的 第 j 列 的 第 v*me个 元 素 开 始 连 续 读 取 vr 个 元 素 构 成 一 个 me维 的 向 量 的 前 vr 个 分 量, 后 面 me-vr 个 分 量 以 0 补 充。
9、, 组 成 向 量 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中阵列存储器的结果归并组成结果矩阵CAB 的计算结果 ; 第五步、 结束。 2.。
10、 如权利要求 1 所述的面向通用多核 DSP 的矩阵乘加速方法, 其特征在于对矩阵 A 和 矩阵 B 进行划分的方法是 : 2.1 将 M*K 的矩阵 A 采用矩阵划分方法划分为 mgng 个 A 块矩阵, A 块矩阵表示 为 Aij, 0 i mg-1,0 j ng-1, 每个块矩阵的维度为 mk, 其中 1 m M,1k , mg*m+mod(M,mg) M, 其中, mod(M,mg) 表示对 M 用 mg 求余, ng*k+mod(K,ng) K, 其中, 权 利 要 求 书 CN 104346318 A 3 3/4 页 4 mod(K,ng) 表示对 K 用 ng 求余 ; 边缘 A。
11、 块矩阵的维度需要特殊处理 ; 具体的矩阵划分方法 如下 : 2.1.1 令 A 块矩阵行变量 i 0 ; 2.1.2 令 A 块矩阵列变量 j 0 ; 2.1.3 令 A 行坐标变量 s 0 ; 2.1.4 令 A 列坐标变量 e 0 ; 2.1.5 令 A 块矩阵元素行变量 m 0 ; 2.1.6 令 A 块矩阵元素列变量 n 0 ; 2.1.7 s m*i+m ; 2.1.8 e n*j+n ; 2.1.9 如果 s M-1, 转 2.1.10, 否则, 矩阵 A 划分完毕, 转 2.2 ; 2.1.10 如果 e K-1, 转 2.1.11, 否则, 矩阵 A 划分完毕, 转 2.2 。
12、; 2.1.11 选取矩阵 A 的元素 ase组成 A 块矩阵 Aij的元素 amn; 2.1.12 n n+1 ; 2.1.13 如果 n k-1, 转 2.1.7, 否则, 转 2.1.14 ; 2.1.14 m m+1 ; 2.1.15 如果 m m-1, 转 2.1.6, 否则, 转 2.1.16 ; 2.1.16 j j+1 ; 2.1.17 如果 j ng-1, 转 2.1.3, 否则, 转 2.1.18 ; 2.1.18 i i+1 ; 2.1.19 如果 i mg-1, 转 2.1.2, 否则, 矩阵 A 划分完毕, 转 2.2 ; 2.2 将K*N的矩阵B采用矩阵划分方法划分。
13、为mgng个B块矩阵, B块矩阵表示为Bpq, 0 p mg-1,0 q ng-1, 每个 B 块矩阵的维度为 kn, 其中 1 k K,1 n N, mg*k+mod(K,mg) K, 其中, mod(K,mg) 表示求对 K 用 mg 求余, ng*n+mod(K,ng) N, 其中, mod(K,ng) 表示对 K 用 ng 求余 ; 边缘 B 块矩阵的维度需要特殊处理, 具体的矩阵划分方法 如下 : 2.2.1 令 B 块矩阵行变量 p 0 ; 2.2.2 令 B 块矩阵列变量 q 0 ; 2.2.3 令 B 行坐标变量 s 0 ; 2.2.4 令 B 列坐标变量 e 0 ; 2.2.。
14、5 令 B 块矩阵元素行变量 k 0 ; 2.2.6 令 B 块矩阵元素列变量 n 0 ; 2.2.7 s k*p+k ; 2.2.8 e n*q+n ; 2.2.9 如果 s K-1, 转 2.2.10, 否则, 矩阵 B 划分完毕, 转 2.3 ; 2.2.10 如果 e N-1, 转 2.2.11, 否则, 矩阵 B 划分完毕, 转 2.3 ; 2.2.11 选取矩阵 B 的元素 bse组成块矩阵 Bpq的元素 bkn; 2.2.12 n n +1 ; 2.2.13 如果 n n-1, 转 2.2.7, 否则, 转 2.2.14 ; 权 利 要 求 书 CN 104346318 A 4 。
15、4/4 页 5 2.2.14 k k+1 ; 2.2.15 如果 k k-1, 转 2.2.6, 否则, 转 2.2.16 ; 2.2.16 q q+1 ; 2.2.17 如果 j2 ng-1, 转 2.2.3, 否则, 转 2.2.18 ; 2.2.18 p p+1 ; 2.2.19 如果 i2 mg-1, 转 2.2.2, 否则, 矩阵 B 划分完毕, 转 2.3 ; 2.3 初始化结果矩阵 C 0, 即令 C 中所有元素都为 0, 即元素 C(m0,n0) 0, 1 m0 M,1 n0 N。 3. 如权利要求 1 所述的面向通用多核 DSP 的矩阵乘加速方法, 其特征在于第四步将各 VP。
16、U 中阵列存储器的结果归并组成结果矩阵 C AB 的计算结果的具体方法如下 : 3.1 令矩阵 C 行变量 u 0 ; 3.2 令矩阵 C 列变量 v 0 ; 3.3 将块矩阵 Cuv的计算结果传回至 DSP 全局存储器 Global Memory ; 3.4 获取块矩阵 Cuv的维度 mcnc, 1 mc m,1 nc n ; 3.5 令行坐标变量 ic 0 ; 3.6 令列坐标变量 jc 0 ; 3.7 C(ic,jc) C(ic,jc)+Cuv(ic,jc), C(ic,jc) 表示矩阵 C 的元素, Cuv(ic,jc) 表示块矩 阵 Cuv的元素 ; 3.8 jc jc+1 ; 3.。
17、9 如果 jc nc ; 转 4.7, 否则, 转 4.10 ; 3.10 ic ic+1 ; 3.11 如果 ic mc, 转 4.6, 否则, 转 4.12 ; 3.12 v v+1 ; 3.13 如果 v ng-1 ; 转 4.3, 否则, 转 4.14 ; 3.14 u u+1 ; 3.15 如果 u mg-1, 转 4.2, 否则, 归并完毕。 权 利 要 求 书 CN 104346318 A 5 1/5 页 6 面向通用多核 DSP 的矩阵乘加速方法 技术领域 0001 本发明涉及矩阵乘加速方法, 尤指面向通用多核 DSP 结构的矩阵乘加速方法。 背景技术 0002 随着通用 DS。
18、P 计算性能的不断攀升和通用 DSP 的广泛应用, 通用多核 DSP 必将成 为高性能计算重要的发展方向。矩阵乘是数值计算中最常用的一类操作, 很多应用中都包 含矩阵乘的计算过程, 面向通用多核 DSP 设计高效的矩阵乘方法可以有效提高应用的计算 速度和提升通用多核 DSP 的计算效率, 以达到通用多核 DSP 的设计目标。 0003 矩阵乘是将被乘矩阵 A 的一行和乘数矩阵 B 的一列相乘得到结果矩阵 C 中的一个 元素。 面向多核系统的矩阵乘法通常需要将矩阵乘计算过程合理分布在各个处理器计算核 之间并行完成计算过程, 以提高矩阵乘的运算速度和最大化异构系统的计算效率。 0004 由于处理器。
19、设计目标和指令集结构的不同, 传统的面向通用处理器的矩阵乘实现 技术很难满足面向特定应用而设计的处理器 DSP(Digital Signal Processing, 数字信号 处理 ) 的性能要求, 因此, 必须面向 DSP 体系结构定制高效的矩阵乘, 以提高矩阵乘的运算 速度, 最大限度满足处理器设计目标。随着通用多核 DSP 计算性能的不断攀升和广泛应用, 面向通用多核 DSP 定制高效矩阵乘是 DSP 在高性能计算领域发展的关键技术。 0005 高效的矩阵乘与处理器体系结构紧密相关。因此, 面向通用多核 DSP 体系结构, 如 图 1 所示, 如何面向多核 DSP 结构对矩阵乘进行加速是。
20、本领域技术人员亟需解决的技术难 题。 发明内容 0006 本发明要解决的技术问题在于 : 面向通用多核 DSP 体系结构提出一种面向通用多 核 DSP 的矩阵乘加速方法, 以提高矩阵乘的运算速度和最大化通用多核 DSP 的计算效率。 0007 为了解决上述技术问题, 本发明的具体技术方案为 : 0008 第一步、 DSP 配置与初始化。 0009 1.1 定义矩阵 A 的维度为 MK, 矩阵 B 的维度为 KN, 则 A 和 B 相乘的结果矩阵 C 的维度为 MN, M,K,N 均为正整数 ; A 的元素为 apq(0 p M-1,0 q K-1), B 的元素为 bst(0 s K-1,0 。
21、t N-1) ; 0010 1.2 查询体系结构手册获取 DSP 中 DSP 计算核, 即虚拟处理单元 VPU(Virtual Processing Unit) 的 拓 扑 结 构 mgng, 即 DSP 中 有 mgng 个 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) ; 0011 1.3 查询体系结构手册获取每个 VPU 拥有的浮点乘累加功能部件 VPE(Virtual Processing Element) 的数目 。
22、me; 0012 1.4 利用系统软件提供的初始化函数 ( 如 init) 完成 DSP 初始化 ; 0013 第二步、 对矩阵 A 和矩阵 B 进行划分, 依据 VPU 的拓扑结构 mgng 将原矩阵乘运 说 明 书 CN 104346318 A 6 2/5 页 7 算转换为分块矩阵乘运算, 具体方法如下 : 0014 2.1将M*K的矩阵A采用矩阵划分方法划分为mgng个A块矩阵, A块矩阵表示为 Aij(0 i mg-1,0 j ng-1), 每个块矩阵的维度为 mk, 其中 1 m M, 1 k K, mg*m+mod(M,mg) M, 其中, mod(M,mg) 表示对 M 用 mg。
23、 求余, ng*k+mod(K,ng) K, 其中, mod(K,ng) 表示对 K 用 ng 求余 ; 边缘 A 块矩阵的维度需要特殊处理。具体的矩阵划分方法 如下 : 0015 2.1.1 令 A 块矩阵行变量 i 0 ; 0016 2.1.2 令 A 块矩阵列变量 j 0 ; 0017 2.1.3 令 A 行坐标变量 s 0 ; 0018 2.1.4 令 A 列坐标变量 e 0 ; 0019 2.1.5 令 A 块矩阵元素行变量 m 0 ; 0020 2.1.6 令 A 块矩阵元素列变量 n 0 ; 0021 2.1.7s m*i+m ; 0022 2.1.8e n*j+n ; 0023。
24、 2.1.9 如果 s M-1, 转 2.1.10, 否则, 矩阵 A 划分完毕, 转 2.2 ; 0024 2.1.10 如果 e K-1, 转 2.1.11, 否则, 矩阵 A 划分完毕, 转 2.2 ; 0025 2.1.11 选取矩阵 A 的元素 ase组成 A 块矩阵 Aij的元素 amn; 0026 2.1.12n n+1 ; 0027 2.1.13 如果 n k-1, 转 2.1.7, 否则, 转 2.1.14 ; 0028 2.1.14m m+1 ; 0029 2.1.15 如果 m m-1, 转 2.1.6, 否则, 转 2.1.16 ; 0030 2.1.16j j+1 ;。
25、 0031 2.1.17 如果 j ng-1, 转 2.1.3, 否则, 转 2.1.18 ; 0032 2.1.18i i+1 ; 0033 2.1.19 如果 i mg-1, 转 2.1.2, 否则, 矩阵 A 划分完毕, 转 2.2 ; 0034 2.2将K*N的矩阵B采用矩阵划分方法划分为mgng个B块矩阵, B块矩阵表示为 Bpq, 0 p mg-1,0 q ng-1, 每个 B 块矩阵的维度为 kn, 其中 1 k K,1 n N, mg*k+mod(K,mg) K, 其中, mod(K,mg) 表示求对 K 用 mg 求余, ng*n+mod(K,ng) N, 其中, mod(K。
26、,ng) 表示对 K 用 ng 求余 ; 边缘 B 块矩阵的维度需要特殊处理, 具体的矩阵划分方法 如下 : 0035 2.2.1 令 B 块矩阵行变量 p 0 ; 0036 2.2.2 令 B 块矩阵列变量 q 0 ; 0037 2.2.3 令 B 行坐标变量 s 0 ; 0038 2.2.4 令 B 列坐标变量 e 0 ; 0039 2.2.5 令 B 块矩阵元素行变量 k 0 ; 0040 2.2.6 令 B 块矩阵元素列变量 n 0 ; 0041 2.2.7s k*p+k ; 0042 2.2.8e n*q+n ; 0043 2.2.9 如果 s K-1, 转 2.2.10, 否则, 。
27、矩阵 B 划分完毕, 转 2.3 ; 说 明 书 CN 104346318 A 7 3/5 页 8 0044 2.2.10 如果 e N-1, 转 2.2.11, 否则, 矩阵 B 划分完毕, 转 2.3 ; 0045 2.2.11 选取矩阵 B 的元素 bse组成块矩阵 Bpq的元素 bkn; 0046 2.2.12n n +1 ; 0047 2.2.13 如果 n n-1, 转 2.2.7, 否则, 转 2.2.14 ; 0048 2.2.14k k+1 ; 0049 2.2.15 如果 k k-1, 转 2.2.6, 否则, 转 2.2.16 ; 0050 2.2.16q q+1 ; 0。
28、051 2.2.17 如果 j2 ng-1, 转 2.2.3, 否则, 转 2.2.18 ; 0052 2.2.18p p+1 ; 0053 2.2.19 如果 i2 mg-1, 转 2.2.2, 否则, 矩阵 B 划分完毕, 转 2.3 ; 0054 2.3 初始化结果矩阵 C 0, 即令 C 中所有元素都为 0, 即元素 C(m0,n0) 0, 1 m0 M,1 n0 N。 0055 第三步、 由于每个VPU是相互独立的处理单元, 每个VPU同时并行执行如下数据迁 移操作 : 0056 3.1 令 A 块矩阵行变量 i 0 ; 0057 3.2 令 A 块矩阵列变量 j 0 ; 0058 。
29、3.3 核 (i,j) 从 DSP 存储空间读 A 块矩阵 Aij到阵列存储器 (Array Memory), Aij占用的存储空间记为 0059 3.4 令 B 块矩阵列变量 k 0 ; 0060 3.5 核 (j,k ) 从 DSP 存储空间读 B 块矩阵 Bjk到标量数据缓冲区 L1D ; 0061 3.6 由于每个 VPU 是相互独立的计算单元, 每个 VPU 并行执行如下向量乘法操作 : 0062 3.7 获取 A 块矩阵 Aij 的维度 m0k0, 1 m0 m,1 k0 k ; 0063 3.8 令列长度变量 j 0 ; 0064 3.9 初始化向量循环变量 v 0 ; 0065。
30、 3.10 定义向量循环次数表示下取整 ; 0066 3.11 初始化广播变量 r 0 ; 0067 3.12从A块矩阵Aij的第j列的第 v*me个元素开始连续读取me个元素, 组成 me 维的向量 0068 3.13 取 矩 阵 Bjk 第 j 行 中 的 第 r 个 元 素 广 播 成 一 个 me维 的 向 量 0069 3.14 向量 Va与 Vb对应元素相乘, 得到矩阵 C 第 j列连续 me个元素的部分乘积, 具体相乘规则如下 : 0070 说 明 书 CN 104346318 A 8 4/5 页 9 0071 3.15将3.14得到的矩阵C第j列连续me个元素的部分乘积传回至阵。
31、列存储器, 这 me个元素占据的存储空间记为 0072 3.16 如果 j 0, 转 3.17, 否则, 转 3.18 ; 0073 3.17 将 3.15 传回的第 j列连续 me个元素的部分乘积与 AM 中存储的 j -1 列 连续 me个元素的部分乘积对应相加, 具体相加方法如下 : 0074 3.17.1 令 i3 vme+0 ; 0075 3.17.2Cik(i3,j ) Cik(i3,j )+Cik(i3,j -1), Cik(i3,j ) 表示 结果矩阵的块矩阵 Cik的元素 ; 0076 3.17.3i3 i3+1 ; 0077 3.17.4 如果 i3 vme+(me-1),。
32、 转 3.17.2, 否则, 转 3.17.5 ; 0078 3.17.5 将 3.17.2 累加结果传回至阵列存储器, 占用的存储空间记为 0079 3.18 广播变量 r r+1 ; 0080 3.19 如果 r k0, 转 3.12, 否则, 转 3.21 ; 0081 3.20 向量循环变量 v v+1 ; 0082 3.21 如果 v Vz, 转 3.11, 否则, 转 3.23 ; 0083 3.22 定义向量循环余数 vr m0-v*me; 0084 3.23 从 A 块 矩 阵 Aij的 第 j 列 的 第 v*me个 元 素 开 始 连 续 读 取 vr 个 元素构成一个 m。
33、e维的向量的前 vr 个分量, 后面 me-vr 个分量以 0 补充, 组成向量 0085 3.24 如果 v Vz, 转 3.13, 否则, 转 3.26 ; 0086 3.25j j +1 ; 0087 3.26 如果 j n0 ; 转 3.9, 否则, 转 3.28 ; 0088 3.27k k +1 ; 0089 3.28 如果 k ng-1, 转 3.5, 否则, 转 3.30 ; 0090 3.29j j+1 ; 0091 3.30 如果 j ng-1, 转 3.3, 否则, 转 3.32 ; 0092 3.31i i+1 ; 0093 3.32 如果 i mg-1, 转 3.2,。
34、 否则, 转第四步 ; 0094 第四步、 依据数据分布原理, 将各VPU中阵列存储器的结果归并组成结果矩阵C AB 的计算结果。具体方法如下 : 0095 4.1 令矩阵 C 行变量 u 0 ; 0096 4.2 令矩阵 C 列变量 v 0 ; 0097 4.3 将块矩阵 Cuv的计算结果传回至 DSP 全局存储器 Global Memory ; 0098 4.4 获取块矩阵 Cuv的维度 mcnc, 1 mc m,1 nc n ; 说 明 书 CN 104346318 A 9 5/5 页 10 0099 4.5 令行坐标变量 ic 0 ; 0100 4.6 令列坐标变量 jc 0 ; 01。
35、01 4.7C(ic,jc) C(ic,jc)+Cuv(ic,jc), C(ic,jc) 表示矩阵 C 的元素, Cuv(ic,jc) 表示 块矩阵 Cuv的元素 ; 0102 4.8jc jc+1 ; 0103 4.9 如果 jc nc ; 转 4.7, 否则, 转 4.10 ; 0104 4.10ic ic+1 ; 0105 4.11 如果 ic mc, 转 4.6, 否则, 转 4.12 ; 0106 4.12v v+1 ; 0107 4.13 如果 v ng-1 ; 转 4.3, 否则, 转 4.14 ; 0108 4.14u u+1 ; 0109 4.15 如果 u mg-1, 转 。
36、4.2, 否则, 归并完毕, 转第五步 ; 0110 第五步、 结束。 0111 采用本发明可以达到以下技术效果 : 0112 1. 本发明第三步由每个 VPU 同时并行执行数据迁移和数据计算操作, 提高了通用 多核 DSP 结构的矩阵乘运算速度 ; 0113 2. 本发明第二步依据 VPU 的拓扑结构划分矩阵数据, 提升了通用多核 DSP 系统的 计算资源利用率。 附图说明 0114 图 1 为通用多核 DSP 体系结构 ; 0115 图 2 为本发明面向通用多核 DSP 的矩阵乘加速方法总体流程图。 具体实施方式 0116 图 1 为通用多核 DSP 体系结构 ; 0117 在图 1 中,。
37、 每个单核 DSP 由 SPU 和 VPU 构成, SPU 由 L1I(Level 1 Instruction) Cache、 L1D(Level 1 Data)Cache、 SPE(Special Processing Unit)、 标量寄存器和流控制 器组成, L1I 用于指令缓存 ; L1D 用于数据缓存 ; SPE 用于一些指令流的控制、 对向量单元的 配置以及主要的通信任务 ; VPU 包括 AM(Array Memory)、 向量寄存器和多个可并发执行的 VPE(Virtual Processing Unit), AM 主要用于数组缓存, 多个 VPE 组成的向量 SIMD 单元主。
38、 要用于数值运算加速。 0118 图 2 为本发明面向通用多核 DSP 的矩阵乘加速方法总体流程图 0119 本发明的步骤如下 : 0120 第一步、 DSP 配置与初始化。 0121 第二步、 对矩阵 A 和矩阵 B 进行划分, 依据 VPU 的拓扑结构 mgng 将原矩阵乘运 算转换为分块矩阵乘运算。 0122 第三步、 每个 VPU 同时并行执行数据迁移操作。 0123 第四步、 依据数据分布原理, 将各 VPU 中 AM 的结果归并组成结果矩阵。 0124 第五步、 结束。 说 明 书 CN 104346318 A 10 1/2 页 11 图 1 说 明 书 附 图 CN 104346318 A 11 2/2 页 12 图 2 说 明 书 附 图 CN 104346318 A 12 。