当前位置: 首页 > 专利查询>吴都专利>正文

基于自动化搜索的加速卷积Im2col矩阵乘计算方法技术

技术编号:39262841 阅读:23 留言:0更新日期:2023-10-30 12:15
本发明专利技术公开了基于自动化搜索的加速卷积Im2col矩阵乘计算方法,包括如下步骤:1)使用Im2col算法将卷积计算转换成矩阵乘法;2)构造TVM用于搜索最优矩阵乘法的模板;3)手工调优的小矩阵乘法库;4)运行时自动代码生成的方法;本发明专利技术的有益效果如下:1)本发明专利技术使用自动化搜索最优矩阵乘法的方式,从不同的参数组合中搜索到当前硬件架构和卷积形状下最优的参数组合,所以本发明专利技术可以针对不同的硬件架构和卷积形状生成性能较优的矩阵乘法代码,从而高效地完成卷积计算。2)本发明专利技术使用类似运行时自动代码生成的方法调用经过专门调优的小矩阵乘法库,该方法可以解决长条形矩阵乘法性能较差的问题,得到性能较好的矩阵乘法的方式,从而高效地完成卷积计算。而高效地完成卷积计算。而高效地完成卷积计算。

【技术实现步骤摘要】
基于自动化搜索的加速卷积Im2col矩阵乘计算方法


[0001]本专利技术涉及计算机网络
,具体涉及基于自动化搜索的加速卷积Im2col矩阵乘计算方法。

技术介绍

[0002]随着数据中心和移动设备中深度学习应用程序种类的增加,矩阵运算中矩阵的形状已发生了巨大的变化。此外,各种新研发的SoC也已投放到市场中。越来越多的具有不同体系结构的SoC和各式各样的深度学习应用使得软件开发人员难以支持和优化现有的矩阵运算库。具体地,现有技术存在的缺点如下:
[0003]1)Im2col算法和矩阵乘法结合来实现卷积计算的性能是令人满意的,但是现有的矩阵运算库Intel MKL,OpenBLAS和BLIS等只是针对传统科学计算中的矩阵尺寸进行了优化,在传统科学计算中的矩阵尺寸通常是正方形矩阵。但是深度学习网络中的卷积计算,经过Im2col算法进行转换后,都变成了长条形矩阵的矩阵乘法。这种尺寸的矩阵乘法不是传统高性能矩阵运算库的优化目标,因此它们的性能都不太理想。
[0004]2)对于长条形矩阵乘法的优化,现在有一些像LIBXSMM这样的工作,它通过运行时自动代码生成来解决这种奇特形状的矩阵乘法,但是其大多数工作都是在x86架构上进行的,对ARM架构没有支持。
[0005]3)TVM使用带有机器学习(ML)的张量调度来自动探索和搜索优化的张量算子,这个方法对于解决不同硬件架构和不同卷积尺寸下的计算优化提供了一个很好的思路。但是由于TVM本身只是提供了一个大的框架,它无法得到性能较好的、与硬件相关的微内核。这也导致它的性能不太理想。

技术实现思路

[0006]针对现有技术中存在的问题,本专利技术提供了基于自动化搜索的加速卷积Im2col的矩阵乘计算方法,以TVM作为框架设计搜索最优矩阵乘法的模板,在模板中使用运行时自动代码生成的方法调用经过专门手工调优的小矩阵乘法库,用于实现高性能卷积计算,从而解决现有技术存在的缺点。
[0007]本专利技术的技术方案如下:
[0008]基于自动化搜索的加速卷积Im2col矩阵乘计算方法,其特征在于,包括如下步骤:
[0009]1)使用Im2col算法将卷积计算转换成矩阵乘法:
[0010]将卷积核张量F重整为尺寸为K
×
CRS的矩阵,然后将原始输入图像复制为尺寸为CRS
×
HW的矩阵;通过使用单个矩阵乘法得到尺寸为K
×
EF的输出矩阵;
[0011]2)构造TVM用于搜索最优矩阵乘法的模板:
[0012]将外层调用微内核的所有的循环方式全部放入搜索空间,在后续的搜索过程中通过TVM提供的调优方法不断优化模型,得到一个最优的循环方式;
[0013]对Im2col算法过程中矩阵B做预先的重排列,以减少在实际运算时带来的缓存命
中缺失;重排布矩阵B是基于在循环排序策略最内层的kr维度上需要连续用两条加载指令读取B矩阵的B[0][n
r
]和B[1][0];在确定了n
c
和k
c
之后对子矩阵B[k
c
][n
c
]重新排布为使得B[0][n
r
]和B[1][0]成为在内存中连续的数据;
[0014]3)构建手工调优的小矩阵乘法库:
[0015]使用neon的内联指令实现一个小矩阵乘法库,小矩阵乘法库指计算矩阵乘法维度MNK<80^3的矩阵;
[0016]3.1)首先将Im2col算法过程中矩阵A按行分成若干行矩阵分块,将Im2col算法过程中矩阵B按列分成若干列矩阵分块;
[0017]3.2)依次取出矩阵A的一行矩阵分块A

与矩阵B的一列矩阵分块B

进行计算;
[0018]3.3)取出矩阵分块A

中的前四列放入向量寄存器;
[0019]3.4)将矩阵分块B

中的一行全部放入向量寄存器,与存放A,的向量寄存器运算四次;
[0020]3.5)重复步骤3.3)、步骤3.4)的操作直到矩阵分块A

与矩阵分块B

计算完毕;
[0021]3.6)重复上述步骤3.2)至步骤3.5)直到计算完毕;
[0022]4)运行时自动代码生成:
[0023]通过TVM调用最内层的小矩阵乘法库时,使用运行时自动代码生成的方法,代码在编译的过程中根据所需要计算的小矩阵大小,生成小矩阵乘法库,在这个过程中分支判断只会在编译时出现,而在代码实际运行时不再出现分支判断,于是使小矩阵乘法库的性能达到最优。
[0024]本专利技术的有益效果如下:
[0025]1)本专利技术使用自动化搜索最优矩阵乘法的方式,从不同的参数组合中搜索到当前硬件架构和卷积形状下最优的参数组合,所以本专利技术可以针对不同的硬件架构和卷积形状生成性能较优的矩阵乘法代码,从而高效地完成卷积计算。
[0026]2)本专利技术使用类似运行时自动代码生成的方法调用经过专门调优的小矩阵乘法库,该方法可以解决长条形矩阵乘法性能较差的问题,得到性能较好的矩阵乘法的方式,从而高效地完成卷积计算。
附图说明
[0027]图1为本专利技术的Im2col算法的步骤图;
[0028]图2为本专利技术的循环方式图;
[0029]图3为本专利技术的矩阵B的重排列图;
[0030]图4为本专利技术的AWS上实现四种方法的性能对比图。
具体实施方式
[0031]以下结合说明书附图,对本专利技术做进一步描述。
[0032]一种基于自动化搜索的加速卷积Im2col矩阵乘计算方法,1)依托于TVM框架设计的搜索最优矩阵乘法的模板,以适应在不同特性的ARM架构CPU计算平台上自动化搜索最优矩阵乘法。2)设计了一套经过专门手工调优的适用于ARM架构的小矩阵乘法库,以在ARM架
构的小矩阵计算上能达到较高的性能。3)通过TVM提供的接口,在模板中使用运行时自动代码生成的方法调用经过专门手工调优的小矩阵乘法库。
[0033]具体步骤如下:
[0034]1)使用Im2col算法将卷积计算转换成矩阵乘法:
[0035]与矩阵乘法类似,卷积计算将每个卷积核张量和输入图像的分块逐个元素相乘,然后累加所有输入通道的结果。由于其较高的计算访存比,矩阵乘法在大型正方形矩阵运算上得到了很好的优化。Im2col算法的步骤如图1所示。它先将卷积核张量F重整为尺寸为K
×
CRS的矩阵,然后将原始输入图像复制为尺寸为CRS
×
HW的矩阵。通过这两步就将卷积计算转换为矩阵乘法。接着可以通过使用单个矩阵乘法得到尺寸为K
×
EF的输出矩阵。因此,Im2col算法在深度学习中生成的矩阵具有多种形状,例如细长的长条形矩阵。
[0036]卷积计算包含3个部分:输入图像、卷积核、输出图像;输入图像(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于自动化搜索的加速卷积Im2col矩阵乘计算方法,其特征在于,包括如下步骤:1)使用Im2col算法将卷积计算转换成矩阵乘法;2)构造TVM用于搜索最优矩阵乘法的模板;3)构建手工调优的小矩阵乘法库;4)运行时自动代码生成。2.根据权利要求1所述的基于自动化搜索的加速卷积Im2col矩阵乘计算方法,其特征在于,所述步骤1)具体如下:将卷积核张量F重整为尺寸为K
×
CRS的矩阵,然后将原始输入图像复制为尺寸为CRS
×
HW的矩阵;通过使用单个矩阵乘法得到尺寸为K
×
EF的输出矩阵。3.根据权利要求1所述的基于自动化搜索的加速卷积Im2col矩阵乘计算方法,其特征在于,所述步骤2)具体如下:将外层调用微内核的所有的循环方式全部放入搜索空间,在后续的搜索过程中通过TVM提供的调优方法不断优化模型,得到一个最优的循环方式;对Im2col算法过程中矩阵B做预先的重排列,以减少在实际运算时带来的缓存命中缺失;重排布矩阵B是基于在循环排序策略最内层的k
r
维度上需要连续用两条加载指令读取B矩阵的B[0][n
r
]和B[1][0];在确定了n
c
和k
c
之后对子矩阵B[k
c
][n
c
]重新排布为使得B[0][n
r
...

【专利技术属性】
技术研发人员:吴都
申请(专利权)人:吴都
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1