[发明专利]一种基于NUMA亲和性的FFT卷积算法并行实现方法及系统有效
| 申请号: | 202111000202.2 | 申请日: | 2021-08-27 |
| 公开(公告)号: | CN113655986B9 | 公开(公告)日: | 2023-10-10 |
| 发明(设计)人: | 王庆林;梅松竹;郝若晨;李东升;姜晶菲;赖志权;黄显栋;刘杰 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
| 主分类号: | G06F7/48 | 分类号: | G06F7/48;G06F17/14;G06F17/16 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 马德胜 |
| 地址: | 410073 湖*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 numa 亲和性 fft 卷积 算法 并行 实现 方法 系统 | ||
1.一种基于NUMA亲和性的FFT卷积算法并行实现方法,其特征在于,包括:
对输入数据进行快速傅里叶转换,并将第一快速傅里叶转换结果存储至指定的非一致性内存访问结点上;
对权重进行快速傅里叶转换,并将第二快速傅里叶转换结果存储至指定的非一致性内存访问结点上;
基于所述第一快速傅里叶转换结果和所述第二快速傅里叶转换结果实现非一致性内存访问级和多核级并行复数矩阵乘,并将复数矩阵乘的结果平均分布到所有非一致性内存访问结点上;
基于所述复数矩阵乘的结果进行快速傅里叶逆转换,得到快速傅里叶卷积算法的输出;其中:
所述对输入数据进行快速傅里叶转换,并将第一快速傅里叶转换结果存储至指定的非一致性内存访问结点上,包括:
将卷积输入Input[B][C][H][W]划分成B×C×X×Δ个大小的分块,其中,B表示卷积计算中mini-batch的大小,C表示输入通道数,H和W分别代表卷积输入和输出的特征图高度和宽度,是划分的分块大小,其中,Hf和Wf表示卷积核的大小,表示向上取整;
通过每个处理器核独自处理每个大小的分块的快速傅里叶转换,将快速傅里叶转换的结果划分成2×L的元组,将所有元组平均分配存储到指定的非一致性内存访问结点,其中,L表示处理器的向量寄存器宽度;
在所有处理器核并行完成所有B×C×X×Δ个分块的快速傅里叶转换后,得到第一快速傅里叶转换结果D[N][Pb][Cbl1][Bbr][Υ][Cl1][Br][2×L]],其中,N表示非一致性内存访问的结点数,表示所划分的元组总数,Υ=X×Δ表示每个特征图中所划分成的分块数量,Cl1和Br是复数矩阵乘中的分块大小;
所述对权重进行快速傅里叶转换,并将第二快速傅里叶转换结果存储至指定的非一致性内存访问结点上,包括:
将卷积输入Filter[K][C][Hf][Wf]填充成K×C个δ×δ大小的分块,其中,K表示输出通道数;
通过每个处理器核独自求解每个分块的快速傅里叶转换,快速傅里叶转换的划分成2×L的元组,将所有元组平均分配存储到指定的非一致性内存访问结点,其中,L表示处理器的向量寄存器宽度;
在所有处理器核并行完成所有K×C个分块的快速傅里叶转换后,得到第二快速傅里叶转换结果G[N][Pb][Cbl1][Kbr][Cl1][Kr][2×L],其中,Kr是并行复数矩阵乘中的分块大小;
所述基于所述第一快速傅里叶转换结果和所述第二快速傅里叶转换结果实现非一致性内存访问级和多核级并行复数矩阵乘,并将复数矩阵乘的结果平均分布到所有非一致性内存访问结点上,包括以下步骤:
步骤1、输入D[N][Pb][Cbl1][Bbr][Υ][[Cl1][Br][2×L]和G[N][Pb][Cbl1][Kbr][Cl1][Kr][2×L],获得当前处理器核所在非一致性内存访问结点编号n,其中,0≤nN,当前非一致性内存访问结点内的核总数Cores,以及该处理器核在当前非一致性内存访问结点内的编号cid,其中,0≤cidCores,其中,Dn[Pb][Cbl1][Bbr][Υ][Cl1][Br][2×L]与Gn[Pb][Cbl1][Kbr][Cl1][Kr][2×L]表示D、G存储在第n个非一致性内存访问结点上的部分;
步骤2、令δ=0;
步骤3、令cs=0;
步骤4、令cbμ=cid;
步骤5、根据公式krs=kss×Kl2,μ=cbμ-kss×Bbr×Υ-bss×Υ分别求解kss、bss和μ,其中,表示向下取整;
步骤6、令kk=0;
步骤7、根据δ、cs、kk+krs、cbμ、bss、μ的值,从当前非一致性内存访问结点获取g′n=Gn,δ,cs,kk+krs,d′n=Dn,δ,cs,bss,μ,从全局获取z′=Zkk+krs,bss,μ,δ,其中,g′n表示G张量存储在第n个非一致性内存访问结点上的子张量,其大小为Cl1×Kr×(2×L),d′n表示D张量存储在第n个非一致性内存访问结点上的子张量,其大小为Cl1×Br×(2×L),z′表示在所有非一致性内存访问介绍上均匀分布的Z张量的子张量,其大小为Br×Kr×(2×L);
步骤8、计算
步骤9、将z′[Br][Kr][2×L]的值存回Zkk+krs,bss,μ,δ中;
步骤10、计算kk=kk+1;
步骤11、如果kkmin(Kl2,Kbr-kss×Kl2)成立,则跳转到步骤7继续处理;如果kkmin(Kl2,Kbr-kss×Kl2)不成立,则执行步骤12,其中,Kl2为复数矩阵乘中的分块大小,min表示取两者之中的最小值;
步骤12、计算cbμ=cbμ+Cores;
步骤13、如果cbμBbr×Kbl2×Υ成立,则跳转到步骤5继续处理,如果cbμBbr×Kbl2×Υ不成立,则执行步骤14;其中
步骤14、计算cs=cs+1;
步骤15、如果csCbl1成立,则跳转到步骤4继续处理;如果csCbl1不成立,则执行步骤16;
步骤16、计算δ=δ+1;
步骤17、如果δPb成立,则跳转到步骤3继续处理,如果δPb不成立,则执行步骤18;
步骤18、完成计算,输出结果Z[Kbr][Bbr][Υ][P][Br][Kr][2×L]。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111000202.2/1.html,转载请声明来源钻瓜专利网。





