CN115480919A - 卷积优化运算方法、装置、计算机设备及存储介质 - Google Patents
卷积优化运算方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115480919A CN115480919A CN202211135735.6A CN202211135735A CN115480919A CN 115480919 A CN115480919 A CN 115480919A CN 202211135735 A CN202211135735 A CN 202211135735A CN 115480919 A CN115480919 A CN 115480919A
- Authority
- CN
- China
- Prior art keywords
- feature map
- memory
- result
- convolution
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种卷积优化运算方法、装置、计算机设备及存储介质。方法包括:获取全局内存中的特征图数据;将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。采用本申请实施例,能够对可分离卷积运算进行加速。
Description
技术领域
本申请涉及神经网络硬件加速技术领域,特别是涉及一种卷积优化运算方法、装置、计算机设备及存储介质。
背景技术
近来,研究者开始关注于深度神经网络的高性能推理,并研发了多种针对不同硬件、算法、应用场景的加速引擎和相关组件,以使整个网络的运行时间在所给硬件上能达到最小。英伟达GPU已经公认成为高效运行深度学习模型的硬件加速平台,成百上千的模型都部署于GPU上去服务日常生活和工作。目前卷积运算在GPU(Graphic Process Unit,简称GPU)上的运算加速主要依靠诸如CuDNN(CUDA Deep Neural Network,简称CuDNN)或者CuBLAS(CUDA Basic Linear Algebra Subprograms,简称CuBLAS)这样的高性能计算库,其可以将神经网络中多个element-wise算子融合成一个大的计算核心,从而减少硬件指令的发射次数,以加快运行核心在GPU上的运行速度。
然而,发明人在实现过程中发现,相对于以可分离卷积为主导的模型,因为其更细粒度的算子和融合机会而使得现有的高性能计算库的优化方案难以对其进行完全覆盖,适用性较低。
发明内容
本申请提供一种卷积优化运算方法、装置、计算机设备及存储介质,能够实现对可分离卷积运算的加速。
第一方面,本申请提供了一种卷积优化运算方法,包括:
获取全局内存中的特征图数据;特征图数据包括多个原始特征图;
将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;
对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;
分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;第二核心运算是调用Tensor Core完成的;
将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
在一些实施例中,将第一中间特征图加载至共享内存中,包括:
将从全局内存中加载至共享内存中的各内存地址,按照奇偶交替顺序进行排列,得到排列后的内存地址;
把第一中间特征图存储至相应的排列后的内存地址中。
在一些实施例中,对第一中间特征图进行拆分处理,得到多个第二中间特征图,包括:
根据第一中间特征图的宽度,对第一中间特征图进行拆分处理,得到多个第二中间特征图;各第二中间特征图与第一中间特征图通道个数相同;
其中,第二中间特征图的数量为第一中间特征图的宽度均匀等分的结果。
在一些实施例中,分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,包括:
获取各第二中间特征图的数据类型;
根据数据类型,确定最小矩阵乘加运算单元;
采用最小矩阵乘加运算单元,对各第二中间特征图进行第二核心运算,得到本次的结果特征图数据。
在一些实施例中,将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据,包括:
根据原始特征图的数量和第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数;
根据处理次数,将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
在一些实施例中,根据原始特征图的数量和第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数,包括:
计算原始特征图的数量与第二中间特征图的数量的乘积,乘积为得到全部结果特征图数据所需的处理次数。
在一些实施例中,第一核心运算是调用CUDA Core完成的。
第二方面,本申请还提供了一种卷积优化运算装置,包括:
获取模块,用于获取全局内存中的特征图数据;特征图数据包括多个原始特征图;
第一运算模块,用于将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;
拆分模块,用于对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;
第二运算模块,用于分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;第二核心运算是调用Tensor Core完成的;
结果模块,用于将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
第三方面,本申请还提供了一种计算机设备,计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取全局内存中的特征图数据;特征图数据包括多个原始特征图;
将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;
对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;
分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;第二核心运算是调用Tensor Core完成的;
将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取全局内存中的特征图数据;特征图数据包括多个原始特征图;
将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;
对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;
分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;第二核心运算是调用Tensor Core完成的;
将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
上述卷积优化运算方法、装置、计算机设备及存储介质,通过获取全局内存中的原始特征图,并将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算得到第一中间特征图,以及将第一中间特征图加载至共享内存中,继而通过拆分处理第一中间特征图而得到多个第二中间特征图,并将所有第二中间特征图加载至寄存器内存中,以及调用Tensor Core将第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将其加载至全局内存中,从而对下一个原始特征图进行前述处理,直至得到全部结果特征图数据;本申请充分利用图灵架构GPU的多级缓存结构,在全局内存、共享内存和寄存器内存之间进行数据复用的调优,以及借助Tensor Core进行多个卷积算子之间的复用,实现了对可分离卷积运算的加速。
附图说明
图1为本申请实施例提供的一种卷积优化运算方法的流程示意图;
图2为本申请实施例提供的一种各内存块从全局内存中载入到共享内存中的地址顺序排列示意图;
图3为本申请实施例提供的一种DepthWise卷积和PointWise卷积的独立运算过程及融合优化运算过程的示意图;
图4为本申请实施例提供的一种图灵架构GPU中多级缓存结构的数据复用过程示意图;
图5为本申请实施例提供的一种卷积优化运算装置的结构框图;
图6为本申请实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使本申请的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
可分离卷积可以是单独的Depthwise卷积,也可以是单独的Pointwise卷积,或者是由前述两种类型的卷积以某种方式组合在一起的卷积。例如二维可分离卷积(即Separable Conv2D)是由一个3x3(卷积核尺寸)的DepthWise卷积和一个1x1(卷积核尺寸)的PointWise卷积通过级联的方式构成,或者是一个单独的3x3的DepthWise卷积,或者是一个单独的1x1的PointWise卷积。
由于DepthWise卷积和PointWise卷积的运行是两个相互独立的过程,这使得两个卷积算子之间的内存通信代价较大,目前可分离卷积在GPU上的实现都是借助CUDA(Compute Unified Device Architecture,简称CUDA)Core完成,并且针对CUDA Core设计了一套固定的模板来加速特定尺寸的算子,由于现有的加速库仅仅是通过对这两个卷积算子分别进行加速,也就导致了这两个算子之间的很多中间结果没办法做到最优的复用,不能充分发挥GPU的多级缓存结构,实现效率比较低。
本申请提供的卷积优化运算方法,能够提高多个卷积算子之间的复用,并在图灵架构GPU中多级内存之间进行合理调优,同时借助Tensor Core发挥其强大的运算能力,从而加速可分离卷积的运行。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一些实施例中,如图1所示,提供了一种卷积优化运算方法,本实施例以该方法应用于计算机设备进行举例说明,该方法包括以下步骤:
步骤S110,获取全局内存中的特征图数据;特征图数据包括多个原始特征图;
具体地,特征图数据的尺度包括高度(用H表示)、宽度(用W表示)和通道个数(用C表示);特征图数据可以分解为多个原始特征图,各原始特征图分别对应输入至DepthWise卷积模型中的每一个通道。在一些示例中,分解输出的各原始特征图的高度可以均为1,则每一个原始特征图的尺度表示为1*W0*C0,其中宽度W0与特征图数据的宽度W大小一致,通道个数C0与特征图数据的通道个数C一致,分解得到的原始特征图的数量则等于特征图数据的高度H。
步骤S120,将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;
具体地,在运算DepthWise卷积的过程中,是通过对输入特征图的每个通道逐层来进行卷积的,该算子的运算量和计算复杂度相比传统二维卷积来说简单,因此完成DepthWise卷积后的运算结果可以被存储在共享内存中。在一些示例中,当尺度为1*W0*C0的原始特征图输入至DepthWise卷积模型中进行第一核心运算后,得到的第一中间特征图的尺度为1*W1*C1,其中第一中间特征图的尺度大小与原始特征图的尺度大小一致(即W1=W0、C1=C0)。每次运算都可以将尺度为1*W1*C1的第一中间特征图加载至共享内存中,这将便于对共享内存的高效使用。
在一些实施例中,第一核心运算是调用CUDA Core完成的。
具体地,DepthWise卷积运算在图灵架构GPU中依靠对CUDA Core的调用。
在一些实施例中,将第一中间特征图加载至共享内存中,包括:
将从全局内存中加载至共享内存中的各内存地址,按照奇偶交替顺序进行排列,得到排列后的内存地址;
把第一中间特征图存储至相应的排列后的内存地址中。
具体地,在一些示例中,为了获取高带宽,共享内存在物理上可以包括32个大小相同的内存块,且可以对每个内存块对应的内存地址从T0开始进行编码,如图2所示,T0-T31表示各内存块对应的内存地址,在图灵架构GPU中,每个内存块的宽度为4个字节,由于共享内存会按照线性的方式被映射到内存的存储体中,当同一个线程束内的多个线程试图访问同一个存储体的不同层的数据时,就会出现存储体冲突的问题。因此,在将第一中间特征图加载至共享内存中的过程中,可以改变从全局内存(即图2中主存)中载入到共享内存中各内存块的地址顺序,即按照奇偶交替的方式进行排列,如图2所示,相应地,第一中间特征图则可以存储至相应的排列后的内存地址中。
步骤S130,对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;
在一些实施例中,对第一中间特征图进行拆分处理,得到多个第二中间特征图,包括:
根据第一中间特征图的宽度,对第一中间特征图进行拆分处理,得到多个第二中间特征图;各第二中间特征图与第一中间特征图通道个数相同;
其中,第二中间特征图的数量为第一中间特征图的宽度均匀等分的结果。
具体地,例如,将尺度为1*W1*C1的第一中间特征图作为输入特征输入至特征图拆分模型中进行处理,得到的每一个第二中间特征图的尺度表示为1*W2*C2,在一个具体示例中,若将第一中间特征图的宽度W1均匀等分为份,则可以得到个第二中间特征图,其中第二中间特征图的宽度W2的大小为每一个第二中间特征图的通道个数C2与第一中间特征图的通道个数C1一致。
步骤S140,分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;第二核心运算是调用Tensor Core完成的;
具体地,在一些示例中,将尺度为1*W2*C2的第二中间特征图输入至PointWise卷积模型中进行第二核心运算,其中,PointWise卷积核的尺度为1*1*C卷积通道数(其中C卷积通道数的数值与第二中间特征图的通道个数C2一致);第二核心运算的借助Tensor Core完成的,Tensor Core是一种区别于CUDA Core的运算核,且Tensor Core是可以在Volta、Turing和Ampere等架构上按照wmma指令同时进行矩阵乘加操作的运算单元,能够以更少的指令数目完成更多的运算,可以针对特定比特带宽完成较出色的加速运算。
当本次第二核心运算结束后,即可得到本次的结果特征图数据,随后将本次的结果特征图数据通过相应的指令移动到全局内存中。
在一些实施例中,分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,包括:
获取各第二中间特征图的数据类型;
根据数据类型,确定最小矩阵乘加运算单元;
采用最小矩阵乘加运算单元,对各第二中间特征图进行第二核心运算,得到本次的结果特征图数据。
具体地,在图灵架构GPU中,其可以针对MMA(矩阵乘累加)指令集设定矩阵乘加运算单元,对于不同的数据类型,矩阵乘加运算单元可以包括多种配置,例如当运算的数据类型是浮点数16位时(即FP16),则包括8*8*4和16*8*8这两种尺度的配置;当运算的数据类型是整数8位(即INT8)、或整数4位(INT4),或整数1位(即INT1)时,则包括8*8*16、8*8*32、8*8*128这三种尺度的配置。
当进行PointWise卷积运算时,在一个具体实例中,当第二中间特征图的数据类型是FP16时,则分别得到8*8*4和16*8*8这两种尺度的矩阵乘加运算单元对应的运行延时(即运行时间),然后将运行延时最短对应的矩阵乘加运算单元作为最小矩阵乘加运算单元,并采用得到的最小矩阵乘加运算单元对各第二中间特征图进行第二核心运算,从而得到本次的结果特征图数据。
步骤S150,将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
具体地,将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行上述第一核心运算、拆分处理和第二核心运算的处理,直至所有原始特征图都处理完毕,完成对DepthWise卷积和PointWise卷积的融合运算,得到全部结果特征图数据。
在一些实施例中,将与当前原始特征图相邻的下一个原始特征图作为当前的原始特征图进行循环处理,直至得到全部结果特征图数据,包括:
根据原始特征图的数量和第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数;
根据处理次数,将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
具体地,上述卷积优化运算中涉及DepthWise卷积过程和PointWise卷积过程,其中,各原始特征图分别输入至DepthWise卷积模型中进行第一核心运算,各第二中间特征图分别输入至PointWise卷积模型中进行第二核心运算,因此,基于原始特征图的数量和第二中间特征图的数量,则可以得到从第一核心运算至第二核心运算结束后得到全部结果特征图数据所需的处理次数。
在一些实施例中,根据原始特征图的数量和第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数,包括:
计算原始特征图的数量与第二中间特征图的数量的乘积,乘积为得到全部结果特征图数据所需的处理次数。
为了更好地说明本申请的技术方案,下面结合一个具体示例予以说明:
如图3所示,在不进行融合优化的时候,3x3尺度的DepthWise卷积和1x1尺度的PointWise卷积的运行是两个相互独立的过程,其中DepthWise卷积的过程依次为DepthWise计算核的加载阶段(即载入1)、DepthWise卷积输入特征图的加载过程(即读取输入特征图信息1)、DepthWise权重的载入过程(即读取权重信息1)、DepthWise核心运算过程(即核心运算1)和DepthWise卷积计算结果载入过程(即存储计算结果1);PointWise卷积的过程依次为PointWise计算核的加载阶段(即载入2)、PointWise卷积输入特征图的加载过程(即读取输入特征图信息2)、PointWise权重的载入过程(即读取权重信息2)、PointWise核心运算过程(即核心运算2)和PointWise卷积计算结果载入过程(即存储计算结果2)。当采用本申请提供的卷积优化运算方法对DepthWise卷积和PointWise卷积进行融合优化时,则可以实现计算第一个DepthWise卷积的过程中,就可以对后续的PointWise卷积所需要用到的资源进行加载,即在进行核心运算1时就可以读取权重信息2,从而完成DepthWise卷积和PointWise卷积的融合运算。
其中,DepthWise卷积和PointWise卷积的融合加速运算过程中,本申请借助图灵架构GPU中的多级缓存结构,如图4所示,首先从全局内存中获取数据,调用CUDA Core完成DepthWise卷积的第一核心运算,然后将第一核心运算后的结果加载至共享内存中,并对共享内存中的数据进行分解处理,将分解处理得到的结果加载至寄存器内存中,最终将寄存器上的数据借助Tensor Core在PointWise卷积的各核心中进行第二核心运算,不断循环往复前述处理过程,直到所有卷积算子运算结束,需要注意地是,因为在GPU上加速算子属于异构计算的环节,需要在host端申请发出计算的请求和内存申请,然后将需要计算的内容发送到device端进行执行,执行完成后对计算内存进行释放,最终将计算结果返回到host端。
上述卷积优化运算方法,通过分别将DepthWise卷积和PointWise卷积高效地应用于基于图灵架构的GPU上,以及通过对两种类型算子中间能够复用的结果进行解析和重用,并借助GPU的多级缓存结构进行融合加速,从而在Tensor Core上发挥了其最大的运行效率。
此外,本申请的技术方案还可以应用于对标准卷积的加速运算中。具体地,可以通过Network Decoupling(网络解耦)技术将标准卷积拆分成由DepthWise卷积和PointWise卷积级联的卷积,其中Network Decoupling技术是一种不用通过训练就能将标准的卷积层转换为一个由3x3的DepthWise卷积和1x1的PointWise卷积构成的可分离卷积,并且最终精度的损失可以忽略不计,进一步地,卷积分解结束后,采取上述卷积优化运算的处理过程,则可以间接通过对可分离卷积的加速来达到加速标准卷积的目的。
应该理解的是,虽然如上述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种卷积优化运算装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的卷积优化运算装置实施例中的具体限定可以参见上文中对于卷积优化运算方法的限定,在此不再赘述。
在一个实施例中,如图5所示,提供了一种卷积优化运算装置,包括:
获取模块510,用于获取全局内存中的特征图数据;特征图数据包括多个原始特征图;
第一运算模块520,用于将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将第一中间特征图加载至共享内存中;
拆分模块530,用于对第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各第二中间特征图加载至寄存器内存中;
第二运算模块540,用于分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将本次的结果特征图数据加载至全局内存中;第二核心运算是调用Tensor Core完成的;
结果模块550,用于将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
在一些实施例中,在将第一中间特征图加载至共享内存中方面,第一运算模块520具体用于:
将从全局内存中加载至共享内存中的各内存地址,按照奇偶交替顺序进行排列,得到排列后的内存地址;
把第一中间特征图存储至相应的排列后的内存地址中。
在一些实施例中,在对第一中间特征图进行拆分处理,得到多个第二中间特征图方面,拆分模块530具体用于:
根据第一中间特征图的宽度,对第一中间特征图进行拆分处理,得到多个第二中间特征图;各第二中间特征图与第一中间特征图通道个数相同;
其中,第二中间特征图的数量为第一中间特征图的宽度均匀等分的结果。
在一些实施例中,在分别将各第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据方面,第二运算模块540具体用于:
获取各第二中间特征图的数据类型;
根据数据类型,确定最小矩阵乘加运算单元;
采用最小矩阵乘加运算单元,对各第二中间特征图进行第二核心运算,得到本次的结果特征图数据。
在一些实施例中,在将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据方面,结果模块550具体用于:
根据原始特征图的数量和第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数;
根据处理次数,将与当前原始特征图相邻的下一个原始特征图作为当前原始特征图进行循环处理,直至得到全部结果特征图数据。
在一些实施例中,在根据原始特征图的数量和第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数方面,结果模块550具体用于:
计算原始特征图的数量与第二中间特征图的数量的乘积,乘积为得到全部结果特征图数据所需的处理次数。
在一些实施例中,第一核心运算是调用CUDA Core完成的。
上述卷积优化运算装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于计算机设备中的处理器,也可以以软件形式存储于计算机设备中的存储器,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,还提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,如图6所示,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(FerroelectricRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandom Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种卷积优化运算方法,其特征在于,包括:
获取全局内存中的特征图数据;所述特征图数据包括多个原始特征图;
将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将所述第一中间特征图加载至共享内存中;
对所述第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各所述第二中间特征图加载至寄存器内存中;
分别将各所述第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将所述本次的结果特征图数据加载至所述全局内存中;所述第二核心运算是调用Tensor Core完成的;
将与所述当前原始特征图相邻的下一个原始特征图作为所述当前原始特征图进行循环处理,直至得到全部结果特征图数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一中间特征图加载至共享内存中,包括:
将从所述全局内存中加载至所述共享内存中的各内存地址,按照奇偶交替顺序进行排列,得到排列后的内存地址;
把所述第一中间特征图存储至相应的所述排列后的内存地址中。
3.根据权利要求2所述的方法,其特征在于,所述对所述第一中间特征图进行拆分处理,得到多个第二中间特征图,包括:
根据所述第一中间特征图的宽度,对所述第一中间特征图进行拆分处理,得到多个第二中间特征图;各所述第二中间特征图与所述第一中间特征图通道个数相同;
其中,所述第二中间特征图的数量为所述第一中间特征图的宽度均匀等分的结果。
4.根据权利要求1所述的方法,其特征在于,所述分别将各所述第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,包括:
获取各所述第二中间特征图的数据类型;
根据所述数据类型,确定最小矩阵乘加运算单元;
采用所述最小矩阵乘加运算单元,对各所述第二中间特征图进行第二核心运算,得到本次的结果特征图数据。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述将与所述当前原始特征图相邻的下一个原始特征图作为所述当前原始特征图进行循环处理,直至得到全部结果特征图数据,包括:
根据所述原始特征图的数量和所述第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数;
根据所述处理次数,将与所述当前原始特征图相邻的下一个原始特征图作为所述当前原始特征图进行循环处理,直至得到全部结果特征图数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述原始特征图的数量和所述第二中间特征图的数量,确定得到全部结果特征图数据所需的处理次数,包括:
计算所述原始特征图的数量与所述第二中间特征图的数量的乘积,所述乘积为得到全部结果特征图数据所需的处理次数。
7.根据权利要求1所述的方法,其特征在于,所述第一核心运算是调用CUDA Core完成的。
8.一种卷积优化运算装置,其特征在于,包括:
获取模块,用于获取全局内存中的特征图数据;所述特征图数据包括多个原始特征图;
第一运算模块,用于将当前原始特征图输入至DepthWise卷积模型中进行第一核心运算,得到第一中间特征图,并将所述第一中间特征图加载至共享内存中;
拆分模块,用于对所述第一中间特征图进行拆分处理,得到多个第二中间特征图,并将各所述第二中间特征图加载至寄存器内存中;
第二运算模块,用于分别将各所述第二中间特征图输入至PointWise卷积模型中进行第二核心运算,得到本次的结果特征图数据,并将所述本次的结果特征图数据加载至所述全局内存中;所述第二核心运算是调用Tensor Core完成的;
结果模块,用于将与所述当前原始特征图相邻的下一个原始特征图作为所述当前原始特征图进行循环处理,直至得到全部结果特征图数据。
9.一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211135735.6A CN115480919A (zh) | 2022-09-19 | 2022-09-19 | 卷积优化运算方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211135735.6A CN115480919A (zh) | 2022-09-19 | 2022-09-19 | 卷积优化运算方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115480919A true CN115480919A (zh) | 2022-12-16 |
Family
ID=84423483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211135735.6A Pending CN115480919A (zh) | 2022-09-19 | 2022-09-19 | 卷积优化运算方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115480919A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116091299A (zh) * | 2023-04-07 | 2023-05-09 | 南京砺算科技有限公司 | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 |
-
2022
- 2022-09-19 CN CN202211135735.6A patent/CN115480919A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116091299A (zh) * | 2023-04-07 | 2023-05-09 | 南京砺算科技有限公司 | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 |
CN116091299B (zh) * | 2023-04-07 | 2023-06-23 | 南京砺算科技有限公司 | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10909418B2 (en) | Neural network method and apparatus | |
US10832120B2 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
CN110826719B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
US11797855B2 (en) | System and method of accelerating execution of a neural network | |
CN111338695B (zh) | 基于流水线技术的数据处理方法及相关产品 | |
CN110516810B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN114330730B (zh) | 量子线路分块编译方法、装置、设备、存储介质和产品 | |
EP3754503A1 (en) | Allocation system, method and apparatus for machine learning, and computer device | |
CN108681773B (zh) | 数据运算的加速方法、装置、终端及可读存储介质 | |
US20220253716A1 (en) | Neural network comprising matrix multiplication | |
CN110837483B (zh) | 张量维度变换的方法以及装置 | |
US20230068450A1 (en) | Method and apparatus for processing sparse data | |
CN109313663A (zh) | 人工智能计算辅助处理装置、方法、存储介质、及终端 | |
KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
CN115480919A (zh) | 卷积优化运算方法、装置、计算机设备及存储介质 | |
CN117851742A (zh) | 数据存储方法、数据处理方法、数据存储器、数据处理器 | |
US20240143986A1 (en) | Methods and systems for executing a neural network on a neural network accelerator | |
CN117370488A (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
CN116933864A (zh) | 一种通用高精度分布式算法训练方法及系统 | |
US20230021204A1 (en) | Neural network comprising matrix multiplication | |
CN115829000A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115424114A (zh) | 图像处理方法及装置、图像处理模型的训练方法及装置 | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
CN113628093A (zh) | 一种加速图像处理的方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |