CN110163793A - 卷积计算加速方法和装置 - Google Patents

卷积计算加速方法和装置 Download PDF

Info

Publication number
CN110163793A
CN110163793A CN201910446542.4A CN201910446542A CN110163793A CN 110163793 A CN110163793 A CN 110163793A CN 201910446542 A CN201910446542 A CN 201910446542A CN 110163793 A CN110163793 A CN 110163793A
Authority
CN
China
Prior art keywords
convolution
convolutional calculation
pixel
row
calculation unit
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.)
Granted
Application number
CN201910446542.4A
Other languages
English (en)
Other versions
CN110163793B (zh
Inventor
苏放
刘勇攀
田辉
武通达
李金阳
马君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meifang Science And Technology (tianjin) Co Ltd
Original Assignee
Meifang Science And Technology (tianjin) Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Meifang Science And Technology (tianjin) Co Ltd filed Critical Meifang Science And Technology (tianjin) Co Ltd
Priority to CN201910446542.4A priority Critical patent/CN110163793B/zh
Publication of CN110163793A publication Critical patent/CN110163793A/zh
Application granted granted Critical
Publication of CN110163793B publication Critical patent/CN110163793B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Analysis (AREA)

Abstract

本发明实施例提供一种卷积计算加速方法和装置,该方法包括:当卷积类型为深度优先卷积时,获取当前深度时序i;将当前深度时序i对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元;卷积计算单元是由乘加器构成的阵列;若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为卷积核的行列数;若imodK=0,且i≥K2,将卷积计算单元中第行特征作为第行深度优先卷积的输出特征。本发明实施例提供的方法和装置,有效提高了卷积计算单元的硬件利用率,避免了大量乘加器空闲造成的能量浪费,提升了深度优先卷积计算效率。

Description

卷积计算加速方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种卷积计算加速方法和装置。
背景技术
随着人工智能技术的发展,卷积神经网络(Convolutional Neural Network,CNN)得到了充分利用。目前主流的卷积神经网络模型结构复杂,计算数据量大,常规的CPU(Central Processing Unit,中央处理器)和GPU(Graphics Processing Unit,图形处理器)难以满足卷积计算的功耗限制和计算速度需求。
常见的解决方法是引入异构计算技术,即结合CPU的通用计算能力和卷积计算加速器的高性能,实现高效、低功耗的卷积神经网络计算。现有的卷积计算加速器通常将卷积计算过程中的数据并行(data parallelism)映射到并行的硬件计算单元上,从而完成计算加速。图1为现有技术中的卷积计算加速器的数据复用模式示意图,如图1所示,卷积计算单元包含M列*N行个乘加器(Multiply-Accumulate,MAC)。在水平方向上,卷积计算单元中的乘加器同时对特征图(Feature Map)缓冲区中的M个像素进行并行计算;在垂直方向上,卷积计算单元中的乘加器同时对卷积核缓冲区中的N个输出通道(Output Channel)进行并行计算。
然而,在卷积神经网络的不同卷积层中,沿输出通道的数据并行可能不存在。例如,深度优先卷积(Depthwise Convolution)的每个特征图只与一个输出通道的卷积核进行卷积,即沿输出通道的并行度为1。如果使用图1所示的卷积计算加速器计算深度优先卷积,由于现有的卷积计算方法仅支持固定的数据复用模式,则沿垂直方向的(N-1)行乘加器处于空闲状态,既造成了能量和面积的浪费,又影响了卷积计算的效率。
发明内容
本发明实施例提供一种卷积计算加速方法和装置,用以解决现有卷积计算加速器计算深度优先卷积时,仅一行乘加器处于运算状态,浪费能量、面积,计算效率低的问题。
第一方面,本发明实施例提供一种卷积计算加速方法,包括:
当卷积类型为深度优先卷积时,获取当前深度时序i;
将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;
若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;
若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积的输出特征。
优选地,所述将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元,之前还包括:
获取所述卷积核中的第imodK列像素,作为所述当前深度时序i对应的所述卷积核中的列像素。
优选地,所述将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元,之前还包括:
获取所述特征图中第行的第imodK至第imodK+M-1个像素作为所述当前深度时序i对应的所述特征图的行像素;其中,卷积计算单元的列数为M,所述特征图的列数为M+K-1。
优选地,还包括:
当卷积类型为深度优先卷积时,关闭所述卷积计算单元中每一行号大于K的所述乘加器。
优选地,还包括:
当所述卷积类型为二维卷积时,获取当前二维时序j;
将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元;
二维卷积结束后,将所述卷积计算单元中前L行特征作为二维卷积输出特征;其中,L为所述二维卷积中的所述卷积核数量。
优选地,所述将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元,之前还包括:
获取每一所述卷积核中第行的第jmodK个像素作为所述当前二维时序j对应的每一所述卷积核中的像素。
优选地,所述将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元,之前还包括:
获取所述特征图中第行的第jmodK至第jmodK+M-1个像素作为当前二维时序j对应的所述特征图的行像素;其中,卷积计算单元的列数为M,所述特征图的列数为M+K-1。
第二方面,本发明实施例提供一种卷积计算加速装置,包括:
深度时序获取单元,用于当卷积类型为深度优先卷积时,获取当前深度时序i;
深度卷积计算单元,用于将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;
卷积核更新单元,用于若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;
特征输出单元,用于若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积的输出特征。
第三方面,本发明实施例提供一种电子设备,包括处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信,处理器可以调用存储器中的逻辑指令,以执行如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的一种卷积计算加速方法和装置,将当前深度时序i对应的卷积核中的列像素输入卷积计算单元,使得在计算深度优先卷积时,卷积计算单元中沿垂直方向的K行乘加器均处于运算状态,且当i≥K2时,每执行K次并行乘加,即可得到一行深度优选卷积输出特征,相比现有的深度优先卷积计算时仅沿垂直方向的一行乘加器处于运算状态,需要执行K2次乘加方可得到一行深度优选卷积输出特征,有效提高了卷积计算单元的硬件利用率,避免了大量乘加器空闲造成的能量浪费,提升了深度优先卷积计算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的卷积计算加速加速器的数据复用模式示意图;
图2为本发明实施例提供的卷积计算加速方法的流程示意图;
图3为本发明实施例提供的当前深度时序i=1时的卷积计算示意图;
图4为本发明实施例提供的当前深度时序i=2时的卷积计算示意图;
图5为本发明实施例提供的当前深度时序i=4时的卷积计算示意图;
图6为本发明实施例提供的当前深度时序i=9时的卷积计算示意图;
图7为本发明实施例提供的当前深度时序i=12时的卷积计算示意图;
图8为本发明另一实施例提供的卷积计算加速方法的流程示意图;
图9为本发明实施例提供的当前二维时序j=1时的卷积计算示意图;
图10为本发明实施例提供的当前二维时序j=2时的卷积计算示意图;
图11为本发明实施例提供的当前二维时序j=9时的卷积计算示意图;
图12为本发明实施例提供的卷积计算加速装置的结构示意图;
图13为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有的卷积计算加速器在计算深度优先卷积,仅沿垂直方向的一行乘加器处于运算状态,其余各行乘加器均处于空闲状态,既造成了能量和面积的浪费,又影响了卷积计算的效率的问题,本发明实施例提供了一种卷积计算加速方法。图2为本发明实施例提供的卷积计算加速方法的流程示意图,如图2所示,该方法包括:
步骤210,当卷积类型为深度优先卷积时,获取当前深度时序i。
具体地,在执行卷积计算加速之前,首先判断当前需要加速的卷积类型是否为深度优先卷积。如果确定卷积类型为深度优先卷积,则循环执行步骤210至步骤240。
在确定卷积类型为深度优化卷积时,首先获取当前深度时序i。此处,当前深度时序是指当前在深度优化卷积过程中的时钟周期的序号。i为正整数。
步骤220,将当前深度时序i对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元;卷积计算单元是由乘加器构成的阵列。
具体地,卷积核的大小为K×K,即卷积核中包括K列像素。在确定当前深度时序i之后,将i对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元。此处,i对应的卷积核中的列像素是指卷积核中列号与i对应的一列像素,一列像素中包含有K个像素。i对应的特征图中的行像素是指特征图中行号与i对应的一行像素中的M个连续的像素,此处,M为卷积计算单元的列数。
将当前深度时序i对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元进行乘加计算时,在垂直方向上,将当前深度时序i对应的卷积核中的列像素中的每一像素分别输入卷积计算单元中的一行,在水平方向上,将当前深度时序i对应的特征图中的行像素中的每一像素分别输入卷积计算单元中的一列。
步骤230,若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为卷积核的行列数。
具体地,在将当前深度时序i对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元,完成乘加计算后,判断imodK是否为0,即当前深度时序i是否能够被卷积核的行列数K整除。在深度优先卷积中,每执行K次并行乘加,即使得卷积核中的每一列像素均被输入到卷积计算单元中一次。因而,在每完成K次并行乘加后,即imodK=0且第i次并行乘加已完成后,将卷积核的第一行像素平移至最后一行,以改变卷积核的像素排列。
步骤240,若imodK=0,且i≥K2,将卷积计算单元中第行特征作为第行深度优先卷积输出特征。
具体地,在将当前深度时序i对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元,完成乘加计算后,若imodK为0且i≥K2,则当前卷积计算单元中第行特征即为深度优选卷积输出特征的第行,将第行特征输出。由此可知,当i≥K2时,每执行K次并行乘加,即可得到一行深度优选卷积输出特征。
需要说明的是,若imodK=0且i<K2,则仅执行步骤230,若imodK=0且i≥K2,则执行步骤230和步骤240,本发明实施例不对步骤230和步骤240执行的先后顺序作具体限定。
本发明实施例提供的方法,将当前深度时序i对应的卷积核中的列像素输入卷积计算单元,使得在计算深度优先卷积时,卷积计算单元中沿垂直方向的K行乘加器均处于运算状态,且当i≥K2时,每执行K次并行乘加,即可得到一行深度优选卷积输出特征,相比现有的深度优先卷积计算时仅沿垂直方向的一行乘加器处于运算状态,需要执行K2次乘加方可得到一行深度优选卷积输出特征,有效提高了卷积计算单元的硬件利用率,避免了大量乘加器空闲造成的能量浪费,提升了深度优先卷积计算效率。
基于上述实施例,该方法中,步骤220之前还包括:获取卷积核中的第imodK列像素,作为当前深度时序i对应的卷积核中的列像素。
具体地,在将当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元,还需要获取当前深度时序i对应的卷积核中的列像素。此处,将卷积核中的第imodK列像素,作为i对应的卷积核中的列像素。例如,K=3,卷积核的大小为3×3,当前深度时序i为1、2、3、4、5、6时,分别对应卷积核中第1、2、3、1、2、3列像素。
基于上述任一实施例,该方法中,步骤220之前还包括:获取特征图中第行的第imodK至第imodK+M-1个像素作为当前深度时序i对应的特征图的行像素;其中,卷积计算单元的列数为M,特征图的列数为M+K-1。
具体地,在将当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元,还需要获取当前深度时序i对应的特征图的行像素。假设卷积计算单元的列数为M,特征图的列数为M+K-1时,特征图中的任意一行像素分别对应K个时序的行像素。例如,K=3,M=16,M+K-1=18,当时深度时序i为1时对应特征图第1行第1至第16个像素,当前深度时序i为2时对应特征图第1行第2至第17个像素,当前深度时序i为3时对应特征图第1行第3至第18个像素,当前深度时序i为4时对应特征图第2行第1至第16个像素。
基于上述任一实施例,该方法还包括:当卷积类型为深度优先卷积时,关闭卷积计算单元中每一行号大于K的乘加器。
具体地,深度优先卷积计算过程中,卷积计算单元中第1行至第K行的乘加器处于运算状态,卷积计算单元中行号大于K的乘加器均处于空闲状态。为了避免空闲状态造成的能量浪费,将处于空闲状态的乘加器全部关闭,进一步降低能耗。
基于上述任一实施例,一种卷积计算加速方法,其卷积类型为深度优选卷积,图3为本发明实施例提供的当前深度时序i=1时的卷积计算示意图,如图3所示,卷积核缓冲区设置有大小为3×3的卷积核,特征图缓冲区内设置有大小为X×18的输入特征图,卷积计算单元内设置有4×16个以阵列形式排列的乘加器。i=1时,对应的卷积核中的列像素即卷积核中斜线标出的一列(00,10,20),对应的特征图中的行像素为输入特征图中斜线标出的像素,即第1行第1个像素至第一行第16个像素。在垂直方向,分别将卷积核的列像素00,10,20输入至卷积计算单元的第一行、第二行和第三行乘加器,在水平方向,分别将输入特征图中第1行第1个像素至第一行第16个像素输入至卷积计算单元的第1至第16列乘加器进行乘加运算。
图4为本发明实施例提供的当前深度时序i=2时的卷积计算示意图,如图4所示,i=2时,对应的卷积核中的列像素和特征图中的行像素均右移一格,此时对应的卷积核中的列像素即(01,11,21),对应的特征图中的行像素即第1行第2个像素至第一行第17个像素。将对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元进行乘加运算。
i=3时,对应的卷积核中的列像素和特征图中的行像素再右移一格,此时对应的卷积核中的列像素即(02,12,22),对应的特征图中的行像素即第1行第3个像素至第一行第18个像素。将对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元进行乘加运算。在完成乘加运算后,判断获知i为3的倍数,卷积核中的每一列像素均已参与过乘加运算,将卷积核的第一行像素(00,01,02)平移至最后一行,得到新的卷积核。
图5为本发明实施例提供的当前深度时序i=4时的卷积计算示意图,图5中的卷积核即为在i=3时将卷积核的第一行像素(00,01,02)平移至最后一行后得到的新的卷积核。i=4时,对应的卷积核中的列像素即(10,20,00),对应的特征图中的行像素为第2行第1个像素至第2行第16个像素。将对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元进行乘加运算。
图6为本发明实施例提供的当前深度时序i=9时的卷积计算示意图,如图6所示,i=9时,对应的卷积核中的列像素即(22,02,12),对应的特征图中的行像素即第3行第3个像素至第3行第18个像素。将对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元进行乘加运算。在完成乘加运算后,判断获知i为3的倍数,卷积核中的每一列像素均已参与过乘加运算,将卷积核的第一行像素(20,21,22)平移至最后一行,得到新的卷积核。此时,由于i为3的倍数且i≥32,卷积核中的每一像素均已输入至卷积计算单元的第一行乘加器进行了乘加运算,第一行乘加器输出的特征即为深度优选卷积输出特征的第一行。图6中,需要输出深度优选卷积输出特征的乘加器用交叉线标出。
图7为本发明实施例提供的当前深度时序i=12时的卷积计算示意图,如图7所示,i=12时,对应的卷积核中的列像素即(02,12,22),对应的特征图中的行像素即第4行第3个像素至第4行第18个像素。将对应的卷积核中的列像素和特征图中的行像素输入至卷积计算单元进行乘加运算。在完成乘加运算后,判断获知i为3的倍数,卷积核中的每一列像素均已参与过乘加运算,将卷积核的第一行像素(00,01,02)平移至最后一行,得到新的卷积核。此时,i为3的倍数且i≥32,将第二行乘加器输出的特征作为深度优选卷积输出特征的第二行。
由此可知,i≥32时,每3个时钟周期后,即每次imodK=0时,卷积计算单元均输出一深度优选卷积输出特征,直至深度优先卷积计算结束。此处,深度优先卷积计算结束的依据是特征图中的每一像素均被输入到卷积计算单元中参与了乘加运算。
基于上述任一实施例,图8为本发明另一实施例提供的卷积计算加速方法的流程示意图,如图8所示,该方法还包括:
步骤810,当卷积类型为二维卷积时,获取当前二维时序j。
具体地,在执行卷积计算加速之前,首先判断当前需要加速的卷积类型。如果确定卷积类型为深度优先卷积,则循环执行步骤210至步骤240,如果确定卷积类型为二维卷积,则执行步骤810至步骤830。
在确定卷积类型为二维卷积时,首先获取当前二维时序j。此处,当前二维时序是指当前在二维卷积过程中的时钟周期的序号。j为正整数。
步骤820,将当前二维时序j对应的每一卷积核中的像素和特征图中的行像素输入至卷积计算单元。
具体地,在二维卷积的垂直方向上,每一卷积核对应卷积计算单元中的一行乘加器,即每一卷积核对应一个输出通道。此处,j对应的卷积核中的像素是指卷积核中与j对应的一个像素。j对应的特征图中的行像素是指特征图中行号与j对应的一行像素中的M个连续的像素,此处,M为卷积计算单元的列数。
将当前二维时序j对应的每一卷积核中的像素和特征图中的行像素输入至卷积计算单元进行乘加计算时,在垂直方向上,将当前二维时序j对应的每一卷积核中的像素分别输入卷积计算单元中的一行,在水平方向上,将当前二维时序j对应的特征图中的行像素中的每一像素分别输入卷积计算单元中的一列。
步骤830,二维卷积结束后,将卷积计算单元中前L行特征作为二维卷积输出特征;其中,L为二维卷积中的卷积核数量。
具体地,二维卷积计算结束的依据是特征图中的每一像素均被输入到卷积计算单元中参与了乘加运算。在二维卷积计算过程中,卷积核的数量L即为二维卷积的输出通道数,也就是卷积计算单元中处于计算状态的乘加器的行数。将卷积计算单元中每一行参与了二维卷积计算的乘加器输出的特征作为而为卷积的输出特征。
本发明实施例提供的方法,在基于卷积计算单元完成深度优化卷积计算的同时,还可以基于卷积计算单元完成二维卷积,使得同一卷积计算单元可以针对不同的卷积类型执行对应的数据并行模式下的卷积加速,提高了卷积计算单元的通用性。
基于上述任一实施例,该方法中,步骤820之前还包括:获取每一卷积核中第行的第jmodK个像素作为当前二维时序j对应的每一卷积核中的像素。
具体地,在将当前二维时序j对应的每一卷积核中的像素和特征图中的行像素输入至卷积计算单元之前,还需要获取当前二维时序j对应的每一卷积核中的像素。此处,针对任一卷积核,将该卷积核中第行的第jmodK个像素,作为j对应的该卷积核中的像素。例如,K=3,卷积核的大小为3×3,当前二维时序j为1、2、3时,分别对应卷积核中第1行第1、2、3个像素;当前二维时序j为4、5、6时,分别对应卷积核中第2行第1、2、3个像素。
基于上述任一实施例,该方法中,步骤820之前还包括:获取特征图中第行的第jmodK至第jmodK+M-1个像素作为当前二维时序j对应的特征图的行像素;其中,卷积计算单元的列数为M,特征图的列数为M+K-1。
具体地,在将当前二维时序j对应的每一卷积核中的像素和特征图中的行像素输入至卷积计算单元之前,还需要获取当前二维时序j对应的特征图的行像素。假设卷积计算单元的列数为M,特征图的列数为M+K-1时,特征图中的任意一行像素分别对应K个时序的行像素。例如,K=3,M=16,M+K-1=18,当时深度时序i为1时对应特征图第1行第1至第16个像素,当前深度时序i为2时对应特征图第1行第2至第17个像素,当前深度时序i为3时对应特征图第1行第3至第18个像素,当前深度时序i为4时对应特征图第2行第1至第16个像素。
基于上述任一实施例,一种卷积计算加速方法,其卷积类型为二维卷积,图9为本发明实施例提供的当前二维时序j=1时的卷积计算示意图,如图9所示,卷积核缓冲区设置有大小为3×3的4个卷积核,特征图缓冲区内设置有大小为3×18的输入特征图,卷积计算单元内设置有4×16个以阵列形式排列的乘加器。j=1时,对应的每一卷积核中的像素即卷积核中斜线标出的第一行第一个像素,对应的特征图中的行像素为输入特征图中斜线标出的像素,即第1行第1个像素至第一行第16个像素。在垂直方向,分别将每一卷积核对应的像素输入至卷积计算单元的第一行、第二行、第三行和第四行乘加器,在水平方向,分别将输入特征图中第1行第1个像素至第一行第16个像素输入至卷积计算单元的第1至第16列乘加器进行乘加运算。
图10为本发明实施例提供的当前二维时序j=2时的卷积计算示意图,如图10所示,j=2时,对应的每一卷积核中的像素和特征图中的行像素均右移一格,此时对应的卷积核中的像素即第一行第二个像素,对应的特征图中的行像素即第1行第2个像素至第一行第17个像素。将每一卷积核中对应的像素和特征图中的行像素输入至卷积计算单元进行乘加运算。
图11为本发明实施例提供的当前二维时序j=9时的卷积计算示意图,如图11所示,j=9时,对应的每一卷积核中的像素第三行第三个像素,对应的特征图中的行像素即第3行第3个像素至第3行第18个像素。将每一卷积核中对应的像素和特征图中的行像素输入至卷积计算单元进行乘加运算。在完成乘加运算后,每一卷积核中的每一像素均已输入至卷积计算单元的对应行的乘加器进行了乘加运算,卷积计算单元中的4行特征即为二维卷积输出特征。图11中,需要输出二维卷积输出特征的乘加器用交叉线标出。
基于上述任一实施例,图12为本发明实施例提供的卷积计算加速装置的结构示意图,如图12所示,卷积计算加速装置包括深度时序获取单元1210、深度卷积计算单元1220、卷积核更新单元1230和特征输出单元1240;
其中,深度时序获取单元1210用于当卷积类型为深度优先卷积时,获取当前深度时序i;
深度卷积计算单元1220用于将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;
卷积核更新单元1230用于若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;
特征输出单元1240用于若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积输出特征。
本发明实施例提供的装置,将当前深度时序i对应的卷积核中的列像素输入卷积计算单元,使得在计算深度优先卷积时,卷积计算单元中沿垂直方向的K行乘加器均处于运算状态,且当i≥K2时,每执行K次并行乘加,即可得到一行深度优选卷积输出特征,相比现有的深度优先卷积计算时仅沿垂直方向的一行乘加器处于运算状态,需要执行K2次乘加方可得到一行深度优选卷积输出特征,有效提高了卷积计算单元的硬件利用率,避免了大量乘加器空闲造成的能量浪费,提升了深度优先卷积计算效率。
基于上述任一实施例,该装置还包括深度列像素获取单元;
深度列像素获取单元用于获取所述卷积核中的第imodK列像素,作为所述当前深度时序i对应的所述卷积核中的列像素。
基于上述任一实施例,该装置还包括深度行像素获取单元;
深度行像素获取单元用于获取所述特征图中第行的第imodK至第imodK+M-1个像素作为所述当前深度时序i对应的所述特征图的行像素;其中,卷积计算单元的列数为M,所述特征图的列数为M+K-1。
基于上述任一实施例,该装置还包括节能单元;
节能单元用于当卷积类型为深度优先卷积时,关闭所述卷积计算单元中每一行号大于K的所述乘加器。
基于上述任一实施例,该装置还包括二维卷积计算单元;所述二维卷积计算单元具体用于:
当所述卷积类型为二维卷积时,获取当前二维时序j;
将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元;
二维卷积结束后,将所述卷积计算单元中前L行特征作为二维卷积输出特征;其中,L为所述二维卷积中的所述卷积核数量。
基于上述任一实施例,二维卷积计算单元还用于:
获取每一所述卷积核中第行的第jmodK个像素作为所述当前二维时序j对应的每一所述卷积核中的像素。
基于上述任一实施例,二维卷积计算单元还用于:
获取所述特征图中第行的第jmodK至第jmodK+M-1个像素作为当前二维时序j对应的所述特征图的行像素;其中,卷积计算单元的列数为M,所述特征图的列数为M+K-1。
图13为本发明实施例提供的电子设备的实体结构示意图,如图13所示,该电子设备可以包括:处理器(processor)1301、通信接口(Communications Interface)1302、存储器(memory)1303和通信总线1304,其中,处理器1301,通信接口1302,存储器1303通过通信总线1304完成相互间的通信。处理器1301可以调用存储在存储器1303上并可在处理器1301上运行的计算机程序,以执行上述各实施例提供的卷积计算加速方法,例如包括:当卷积类型为深度优先卷积时,获取当前深度时序i;将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积输出特征。
此外,上述的存储器1303中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的卷积计算加速方法,例如包括:当卷积类型为深度优先卷积时,获取当前深度时序i;将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积输出特征。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种卷积计算加速方法,其特征在于,包括:
当卷积类型为深度优先卷积时,获取当前深度时序i;
将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;
若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;
若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积的输出特征。
2.根据权利要求1所述的卷积计算加速方法,其特征在于,所述将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元,之前还包括:
获取所述卷积核中的第imodK列像素,作为所述当前深度时序i对应的所述卷积核中的列像素。
3.根据权利要求1所述的卷积计算加速方法,其特征在于,所述将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元,之前还包括:
获取所述特征图中第行的第imodK至第imodK+M-1个像素作为所述当前深度时序i对应的所述特征图的行像素;其中,卷积计算单元的列数为M,所述特征图的列数为M+K-1。
4.根据权利要求1至3中任一项所述的卷积计算加速方法,其特征在于,还包括:
当所述卷积类型为深度优先卷积时,关闭所述卷积计算单元中每一行号大于K的所述乘加器。
5.根据权利要求1至3中任一项所述的卷积计算加速方法,其特征在于,还包括:
当所述卷积类型为二维卷积时,获取当前二维时序j;
将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元;
二维卷积结束后,将所述卷积计算单元中前L行特征作为二维卷积输出特征;其中,L为所述二维卷积中的卷积核数量。
6.根据权利要求5所述的卷积计算加速方法,其特征在于,所述将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元,之前还包括:
获取每一所述卷积核中第行的第jmodK个像素作为所述当前二维时序j对应的每一所述卷积核中的像素。
7.根据权利要求5所述的卷积计算加速方法,其特征在于,所述将所述当前二维时序j对应的每一所述卷积核中的像素和所述特征图中的行像素输入至所述卷积计算单元,之前还包括:
获取所述特征图中第行的第jmodK至第jmodK+M-1个像素作为当前二维时序j对应的所述特征图的行像素;其中,卷积计算单元的列数为M,所述特征图的列数为M+K-1。
8.一种卷积计算加速装置,其特征在于,包括:
深度时序获取单元,用于当卷积类型为深度优先卷积时,获取当前深度时序i;
深度卷积计算单元,用于将所述当前深度时序i对应的所述卷积核中的列像素和特征图中的行像素输入至卷积计算单元;所述卷积计算单元是由乘加器构成的阵列;
卷积核更新单元,用于若imodK=0,则将卷积核的第一行像素平移至最后一行;其中,K为所述卷积核的行列数;
特征输出单元,用于若imodK=0,且i≥K2,将所述卷积计算单元中第行特征作为第行深度优先卷积的输出特征。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一项所述的卷积计算加速方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的卷积计算加速方法的步骤。
CN201910446542.4A 2019-05-27 2019-05-27 卷积计算加速方法和装置 Active CN110163793B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910446542.4A CN110163793B (zh) 2019-05-27 2019-05-27 卷积计算加速方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910446542.4A CN110163793B (zh) 2019-05-27 2019-05-27 卷积计算加速方法和装置

Publications (2)

Publication Number Publication Date
CN110163793A true CN110163793A (zh) 2019-08-23
CN110163793B CN110163793B (zh) 2023-05-23

Family

ID=67629292

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910446542.4A Active CN110163793B (zh) 2019-05-27 2019-05-27 卷积计算加速方法和装置

Country Status (1)

Country Link
CN (1) CN110163793B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111898743A (zh) * 2020-06-02 2020-11-06 深圳市九天睿芯科技有限公司 一种cnn加速方法及加速器
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106846235A (zh) * 2016-12-26 2017-06-13 中国科学院计算技术研究所 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN107578055A (zh) * 2017-06-20 2018-01-12 北京陌上花科技有限公司 一种图像预测方法和装置
CN108257114A (zh) * 2017-12-29 2018-07-06 天津市万贸科技有限公司 一种基于深度学习的输电设备缺陷自动识别方法
CN108681984A (zh) * 2018-07-26 2018-10-19 珠海市微半导体有限公司 一种3*3卷积算法的加速电路
US20190035047A1 (en) * 2017-07-28 2019-01-31 Google Inc. Image Capture Devices Featuring Intelligent Use of Lightweight Hardware-Generated Statistics
CN109782603A (zh) * 2019-02-03 2019-05-21 中国石油大学(华东) 旋转机械耦合故障的检测方法及监测系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106846235A (zh) * 2016-12-26 2017-06-13 中国科学院计算技术研究所 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN107578055A (zh) * 2017-06-20 2018-01-12 北京陌上花科技有限公司 一种图像预测方法和装置
US20190035047A1 (en) * 2017-07-28 2019-01-31 Google Inc. Image Capture Devices Featuring Intelligent Use of Lightweight Hardware-Generated Statistics
CN108257114A (zh) * 2017-12-29 2018-07-06 天津市万贸科技有限公司 一种基于深度学习的输电设备缺陷自动识别方法
CN108681984A (zh) * 2018-07-26 2018-10-19 珠海市微半导体有限公司 一种3*3卷积算法的加速电路
CN109782603A (zh) * 2019-02-03 2019-05-21 中国石油大学(华东) 旋转机械耦合故障的检测方法及监测系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111898743A (zh) * 2020-06-02 2020-11-06 深圳市九天睿芯科技有限公司 一种cnn加速方法及加速器
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备

Also Published As

Publication number Publication date
CN110163793B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
CN109978161B (zh) 一种通用的卷积-池化同步处理卷积核系统
CN103049241B (zh) 一种提高cpu+gpu异构装置计算性能的方法
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN107862374A (zh) 基于流水线的神经网络处理系统和处理方法
CN108090565A (zh) 一种卷积神经网络并行化训练加速方法
CN107862378A (zh) 基于多核的卷积神经网络加速方法及系统、存储介质及终端
CN112200300B (zh) 卷积神经网络运算方法及装置
CN107085562B (zh) 一种基于高效复用数据流的神经网络处理器及设计方法
CN102521854A (zh) 一种适用于二维流场的并行流线放置方法
CN107341761A (zh) 一种深度神经网络的计算执行方法和系统
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
CN110163793A (zh) 卷积计算加速方法和装置
CN112596701B (zh) 基于单边雅克比奇异值分解的fpga加速实现方法
CN109146065A (zh) 二维数据的卷积运算方法及装置
WO2023160050A1 (zh) 数据处理方法、装置、设备及存储介质
CN108197075B (zh) 一种Inception结构的多核实现方法
CN116128019A (zh) Transformer模型的并行训练方法及装置
WO2020103883A1 (zh) 执行矩阵乘法运算的方法、电路及soc
CN110490308A (zh) 加速库的设计方法、终端设备及存储介质
CN109447239B (zh) 一种基于arm的嵌入式卷积神经网络加速方法
CN112560356A (zh) 面向众核架构的稀疏矩阵向量乘众核优化方法
CN106484532A (zh) 面向sph流体模拟的gpgpu并行计算方法
CN109032667A (zh) 一种分子动力学模拟中邻接表快速建立方法和系统
US11874898B2 (en) Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
CN107256203A (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
CB03 Change of inventor or designer information

Inventor after: Su Fang

Inventor after: Tian Hui

Inventor after: Wu Tongda

Inventor after: Li Jinyang

Inventor after: Ma Jun

Inventor before: Su Fang

Inventor before: Liu Yongpan

Inventor before: Tian Hui

Inventor before: Wu Tongda

Inventor before: Li Jinyang

Inventor before: Ma Jun

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Su Fang

Inventor after: Wu Tongda

Inventor after: Li Jinyang

Inventor after: Ma Jun

Inventor before: Su Fang

Inventor before: Liu Yongpan

Inventor before: Tian Hui

Inventor before: Wu Tongda

Inventor before: Li Jinyang

Inventor before: Ma Jun

CB03 Change of inventor or designer information
CI02 Correction of invention patent application

Correction item: Inventor

Correct: Su Fang|Liu Yongpan|Tian Hui|Wu Tongda|Ma Jun|Li Jinyang

False: Su Fang|Tian Hui|Wu Tongda|Li Jinyang|Ma Jun

Number: 24-01

Volume: 36

CI02 Correction of invention patent application
GR01 Patent grant
GR01 Patent grant