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

文档序号:8258461阅读:来源:国知局
/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是否满足第=条件,其中, 所述第S条件为p/k> = 2且t/p<2 ; 在所述t、P和k满足所述第S条件时,判断所述t、P和k是否满足P = n ; 如果所述t、P和k满足P = n,则确定所述待求解矩阵的数据量为m*l ; W及 如果所述t、P和k不满足P = n,则确定所述待求解矩阵的数据量为所述显存容量的 ;分之一。
6. 根据权利要求1所述的加速运算方法,其特征在于,所述待求解矩阵包括第一矩阵 和第二矩阵,根据所述数据量上限和所述待求解矩阵的维度对所述待求解矩阵进行划分操 作,得到多个数据块包括: 获取所述待求解矩阵的维度m、n和1,其中,所述维度m、n和1的大小依次为t、P和 k ; 判断所述维度n是否为最小维度大小k ; 如果所述维度n不是所述最小维度大小k,则根据所述数据量上限将所述维度m划分为 r段,或者,根据所述数据量上限将所述维度1划分为S段; 如果所述维度n是所述最小维度大小k,则根据所述数据量上限和所述维度m和1进行 划分。
7. 根据权利要求6所述的加速运算方法,其特征在于,根据所述数据量上限将所述维 度m划分为r段,或者,根据所述数据量上限将所述维度1划分为S段包括: 获取分割尺度,其中,所述分割尺度为所述数据量上限的n分之一; 将所述维度m划分为r段包括:维度m的每段长度为m/分割尺度+1 ; 将所述维度1划分为S段包括:维度1的每段长度为1/分割尺度+1。
8. 根据权利要求6所述的加速运算方法,其特征在于,根据所述数据量上限和所述维 度m和1进行划分包括: 确定a = MAX/n,其中,所述MAX为所述数据量上限; 判断a*a是否大于所述MAX; 如果a*a< = MX,则将确定分割尺度为a ; 如果a*a〉MAX,则确定所述分割尺度为MAX/a。
9. 一种数据矩阵相乘的加速运算装置,其特征在于,包括: 第一计算单元,用于根据显存容量和待求解矩阵的数据量确定计算所述待求解矩阵的 数据量的单次计算数据量上限; 划分单元,用于根据所述数据量上限和所述待求解矩阵的维度对所述待求解矩阵进行 划分操作,得到多个数据块,其中,每个所述数据块的数据量小于等于所述数据量上限; 构建单元,用于在统一计算设备架构平台上构建线程和线程块的计算结构; 第二计算单元,用于在所述计算结构中依次对所述多个数据块进行并行运算;w及 累计单元,用于累计由所述计算结构依次输出的所述多个数据块的运算结果。
10. 根据权利要求9所述的加速运算装置,其特征在于,所述多个数据块中的第一数据 块包括第一子矩阵和第二子矩阵,所述第二计算单元包括: 第一获取模块,用于获取所述计算结构中线程块的个数,其中,所述线程块包括X维度 和Y维度; 第一划分模块,用于按照所述线程块在所述X维度上的个数h将所述第一子矩阵划分 为h个第一数据子块,其中,所述第一数据子块包括多个数据子段Ai,i = 0, 1……a, a = 所述第一数据子块的Y维度的长度/分割尺度+1 ; 第二划分模块,用于按照所述线程块在所述Y维度上的个数g将所述第二子矩阵划分 为g个第二数据子块,其中,所述第二数据子块包括多个数据子段Bj,j = 0, 1……b,b = 所述第二数据子块的X维度的长度/所述分割尺度+1 ; 计算模块,用于通过所述线程块对所述第一数据子块Ai和所述第二数据子块Bj进行 相乘计算,其中,i = j。
11. 根据权利要求10所述的加速运算装置,其特征在于,所述线程块包括多个线程,所 述计算模块包括: 第一获取子模块,用于获取所述多个线程中第一线程对应的所述第一数据子块中的数 据子段Ai中的一行; 第二获取子模块,用于获取所述第一线程对应的所述第二数据子块中的数据子段Bj 中的一列;W及 计算子模块,用于利用所述第一线程对所述数据子段Ai中的一行和所述数据子段Bj 中的一列进行相乘计算。
12. 根据权利要求10所述的加速运算装置,其特征在于,所述计算模块包括: 第=获取子模块,用于获取所述线程块中的共享内存空间(SA,SB); 存储子模块,用于在所述共享内存空间中依次存储所述数据子段Ai中数据和所述数 据子段Bj中的数据。
13. 根据权利要求9所述的加速运算装置,其特征在于,所述第一计算单元用于执行下 述步骤: 获取所述待求解矩阵的维度m、n和1,其中,所述维度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本1 ; 在所述t、p和k不满足所述第二条件时,判断所述t、p和k是否满足第=条件,其中, 所述第S条件为p/k> = 2且t/p<2 ; 在所述t、P和k满足所述第S条件时,判断所述t、P和k是否满足P = n ; 如果所述t、P和k满足P = n,则确定所述待求解矩阵的数据量为m*l ; W及 如果所述t、P和k不满足P = n,则确定所述待求解矩阵的数据量为所述显存容量的 =分之一。
14. 根据权利要求9所述的加速运算装置,其特征在于,所述待求解矩阵包括第一矩阵 和第二矩阵,所述划分单元包括: 第二获取模块,用于获取所述待求解矩阵的维度m、n和1,其中,所述维度m、n和1的 大小依次为t、p和k ; 判断模块,用于判断所述维度n是否为最小维度大小k ; 第=划分模块,用于在所述维度n不是所述最小维度大小k时,根据所述数据量上限将 所述维度m划分为r段,或者,根据所述数据量上限将所述维度1划分为S段; 第四划分模块,用于在所述维度n是所述最小维度大小k时,根据所述数据量上限和所 述维度m和1进行划分。
15. 根据权利要求14所述的加速运算装置,其特征在于,所述第=划分模块包括: 第=获取子模块,用于获取分割尺度,其中,所述分割尺度为所述数据量上限的n分之 * 第一划分子模块,用于将所述维度m划分为r段包括:维度m的每段长度为m/分割尺 度+1 ; 第二划分子模块,用于将所述维度1划分为S段包括:维度1的每段长度为1/分割尺 度+1。
16. 根据权利要求14所述的加速运算装置,其特征在于,所述第四划分模块包括: 第一确定子模块,用于确定a = MAX/n,其中,所述MAX为所述数据量上限; 判断子模块,用于判断a*a是否大于所述MAX ; 第二确定子模块,用于在a*a< = MX时,将确定分割尺度为a ; 第S确定子模块,用于在a*a〉MAX时,确定所述分割尺度为MAX/a。
【专利摘要】本发明公开了一种数据矩阵相乘的加速运算方法和装置。其中,该数据矩阵相乘的加速运算方法包括:根据显存容量和待求解矩阵的数据量确定计算待求解矩阵的数据量的单次计算数据量上限;根据数据量上限和待求解矩阵的维度对待求解矩阵进行划分操作,得到多个数据块,其中,每个数据块的数据量小于等于数据量上限;在统一计算设备架构平台上构建线程和线程块的计算结构;在计算结构中依次对多个数据块进行并行运算;以及累计由计算结构依次输出的多个数据块的运算结果。通过本发明,解决了现有技术中进行矩阵相乘的加速运算时引入误差而导致计算结果不准确的问题,达到了提高运算速度的同时保证运算结果的准确的效果。
【IPC分类】G06F17-16
【公开号】CN104572587
【申请号】CN201410815244
【发明人】魏一雄, 张祥祥, 田富君, 程五四, 陈帝江, 胡祥涛, 张红旗
【申请人】中国电子科技集团公司第三十八研究所
【公开日】2015年4月29日
【申请日】2014年12月23日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1