数据矩阵相乘的加速运算方法和装置的制造方法_2

文档序号:8258461阅读:来源:国知局
,其中,所述维度m、n和1的大小依次为t、p和k ;判断所述t、p和k是否满足第一 条件,其中,所述第一条件为p/k〈2且t/p〈2 ;如果所述t、p和k满足所述第一条件,则确定 所述待求解矩阵的数据量为所述显存容量的三分之一;如果所述t、p和k不满足所述第一 条件,则判断所述t、p和k是否满足第二条件,其中,所述第二条件为p/k〈2且t/p> = k ; 在所述t、p和k满足所述第二条件时,判断所述t、p和k是否满足t = m或者t = 1 ;如果 所述t、p和k满足t = m或者t = 1,则确定所述待求解矩阵的数据量为所述显存容量的 三分之一;如果所述t、p和k不满足t = m且不满足t = 1,则确定所述待求解矩阵的数据 量为m*l ;在所述t、p和k不满足所述第二条件时,判断所述t、p和k是否满足第三条件, 其中,所述第三条件为p/k> = 2且t/p〈2 ;在所述t、p和k满足所述第三条件时,判断所述 t、p和k是否满足p = n ;如果所述t、p和k满足p = n,则确定所述待求解矩阵的数据量 为m*l ;以及如果所述t、p和k不满足p = n,则确定所述待求解矩阵的数据量为所述显存 容量的三分之一。
[0019] 进一步地,所述待求解矩阵包括第一矩阵和第二矩阵,所述划分单元包括:第二获 取模块,用于获取所述待求解矩阵的维度m、n和1,其中,所述维度m、n和1的大小依次为 t、p和k ;判断模块,用于判断所述维度n是否为最小维度大小k ;第三划分模块,用于在所 述维度n不是所述最小维度大小k时,根据所述数据量上限将所述维度m划分为r段,或者, 根据所述数据量上限将所述维度1划分为S段;第四划分模块,用于在所述维度n是所述最 小维度大小k时,根据所述数据量上限和所述维度m和1进行划分。
[0020] 进一步地,所述第三划分模块包括:第三获取子模块,用于获取分割尺度,其中,所 述分割尺度为所述数据量上限的n分之一;第一划分子模块,用于将所述维度m划分为r段 包括:维度m的每段长度为m/分割尺度+1 ;第二划分子模块,用于将所述维度1划分为s 段包括:维度1的每段长度为1/分割尺度+1。
[0021] 进一步地,所述第四划分模块包括:第一确定子模块,用于确定a = MAX/n,其中, 所述MAX为所述数据量上限;判断子模块,用于判断a*a是否大于所述MAX ;第二确定子模 块,用于在a*a〈 = MAX时,将确定分割尺度为a ;第三确定子模块,用于在a*a>MAX时,确定 所述分割尺度为MAX/a。
[0022] 根据发明实施例,根据显存的容量对待求解矩阵进行划分,计算结构依次对划分 后的多个数据块进行运算,避免了显存容量的限制所导致的计算出错,同时,在图像处理器 中对一个数据块中的数据进行并行处理,提高了运算速度,即本实施例在提高矩阵的运算 速度的同时,并未引入计算误差,从而解决了现有技术中在进行矩阵相乘的加速运算时引 入误差而导致计算结果不准确的问题,达到了提高运算速度的同时保证运算结果的准确的 效果。
【附图说明】
[0023] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实 施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0024] 图1是根据本发明实施例的数据矩阵相乘的加速运算方法的流程图;
[0025] 图2示出了对第一子矩阵和第二子矩阵划分的示意图;
[0026] 图3是根据本发明实施例的多个线程块的示意图;
[0027] 图4是根据本发明实施例的对待求解矩阵划分的第一种情况的示意图;
[0028] 图5是根据本发明实施例的对待求解矩阵划分的第二种情况的示意图;
[0029] 图6根据本发明优选实施例的数据矩阵相乘的加速运算方法的流程图;以及 [0030] 图7是根据本发明实施例的数据矩阵相乘的加速运算装置的示意图。
【具体实施方式】
[0031] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。
[0032] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是 本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范 围。
[0033] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语"第一"、"第 二"等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使 用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语"包括"和 "具有"以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元 的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有 清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0034] 名词解释:
[0035] CUP:中央处理器。
[0036] GPU:图形处理器。
[0037] 本发明实施例提供了一种数据矩阵相乘的加速运算方法。可选地,该数据矩阵相 乘的加速运算,通过主机端CPU分析待求解矩阵[A],[B]的m,n,1三个维度特点以及显存 大小,将矩阵结构进行拆分,得到多个矩阵块,将拆分后的矩阵块逐个输入至设备端的GPU, 利用设备端的GPU的运算能力,输出一个矩阵块的运算结果至主机端,并输入下一个矩阵 块进行运算,当待求解矩阵的多个矩阵块都运算完成并输出运算结果后,在主机端将多个 矩阵块的运算结果进行组合得到最终矩阵[C]。即在主机端将待求解矩阵分块,在设备端逐 个运算待求解矩阵分块,并且在对求解矩阵分块时根据显存大小和待求解矩阵的维度特点 进行分块,避免了输入给GPU的数据过大而造成无法运算的问题,另外,由于在进行加速运 算时,对矩阵结果进行拆分得到多个矩阵块,在加速运算的同时,实质上并不改变矩阵的结 构,也不会在计算过程中引入误差,也就解决了现有技术中在进行矩阵相乘的加速运算时 引入误差而导致计算结果不准确的问题,达到了提高运算速度的同时保证运算结果的准确 的效果。
[0038] 图1是根据本发明实施例的数据矩阵相乘的加速运算方法的流程图。如图1所示, 该数据矩阵相乘的加速运算方法包括如下步骤:
[0039] 步骤S102,根据显存容量和待求解矩阵的数据量确定计算待求解矩阵的数据量的 单次计算数据量上限。
[0040] 显存容量制约了 GPU处理矩阵的数据量,当显存容量不足以处理较多的数据量 时,会降低GPU处理数据的速度,因此,在对待求解矩阵进行划分操作之前,根据显存容量 和待求解矩阵的数据量确定GPU每次计算的数据量上限。
[0041] 步骤S104,根据数据量上限和待求解矩阵的维度对待求解矩阵进行划分操作,得 到多个数据块,其中,每个数据块的数据量小于等于数据量上限。
[0042] 根据确定的数据量上限对待求解矩阵进行划分操作,划分后的数据块的数据量小 于等于数据量上限,也就避免了将数据块输入至设备端由于数据量过大而使得GPU无法处 理的情况出现。
[0043] 步骤S106,在统一计算设备架构平台上构建线程和线程块的计算结构。统一计算 设备架构平台是构建在GPU中的平台。
[0044] 步骤S108,在计算结构中依次对多个数据块进行并行运算。
[0045] 步骤S110,累计由计算结构依次输出的多个数据块的运算结果。
[0046] GPU依次对每个数据块进行运算,每个数据块中包括多个数据,GPU可以对每个数 据块中的数据进行并行计算,从而提高了 GPU处理数据的速度。GPU结束对一个数据块的运 算后,输出运算结果并接收新的数据块,当属于待求解矩阵的所有数据块都运算完毕并将 结果都输出给CPU后,由CPU对多个数据块的运算结果进行累计,并得到待求解矩阵的最终 计算结果。
[0047] 具体地,多个数据块包括第一数据块和第二数据块,在计算结构中依次对多个数 据块进行并行运算包括:计算结构对第一数据块进行处理。判断第一数据块是否被处理完。 如果第一数据块被处理完,则输出第一数据块的数据处理结果。以及计算结构对第二数据 块进行处理。
[0048] 通过上述实施例,根据显存的容量对待求解矩阵进行划分,计算结构依次对划分 后的多个数据块进行运算,避免了显存容量的限制所导致的计算出错,同时,在图像处理器 中对一个数据块中的数据进行并行处理,提高了运算速度,即本实施例在提高矩阵的运算 速度的同时,并未引入计算误差,从而解决了现有技术中在进行矩阵相乘的加速运算时引 入误差而导致计算结果不准确的问题,达到了提高运算速度的同时保证运算结果的准确的 效果。
[004
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1