[go: up one dir, main page]

CN108304923A - 卷积运算处理方法及相关产品 - Google Patents

卷积运算处理方法及相关产品 Download PDF

Info

Publication number
CN108304923A
CN108304923A CN201711283173.9A CN201711283173A CN108304923A CN 108304923 A CN108304923 A CN 108304923A CN 201711283173 A CN201711283173 A CN 201711283173A CN 108304923 A CN108304923 A CN 108304923A
Authority
CN
China
Prior art keywords
convolution
sectional
data
matrix
input data
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
CN201711283173.9A
Other languages
English (en)
Other versions
CN108304923B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201711283173.9A priority Critical patent/CN108304923B/zh
Publication of CN108304923A publication Critical patent/CN108304923A/zh
Priority to PCT/CN2018/116086 priority patent/WO2019109795A1/zh
Priority to US16/678,004 priority patent/US11449576B2/en
Application granted granted Critical
Publication of CN108304923B publication Critical patent/CN108304923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

本发明实施例公开一种卷积运算处理方法及相关产品,集成芯片包括控制器、卷积处理器、输入缓存、输出缓存。控制器将分段卷积核和分段卷积输入数据载入到输入缓存;分段卷积核为卷积核分段得到的数据;分段卷积输入数据为卷积输入数据分段得到的数据;卷积处理器对分段卷积核和分段卷积输入数据进行分段卷积运算得到分段卷积结果,将分段卷积结果存储到输出缓存。实施本发明实施例可以减少卷积运算所需的电路数量。

Description

卷积运算处理方法及相关产品
技术领域
本发明涉及计算机技术领域,尤其涉及卷积运算处理方法及相关产品。
背景技术
在人工智能领域,目前主流的人工智能算法是深度学习。在深度学习里面,卷积神经网络(Convolution Nero Network,CNN)因为其在图像领域的突出效果,成为目前最为广泛应用的神经网络之一。CNN和其他深度学习一样,需要的计算量大。
为了提高CNN的计算效率,一般使用集成芯片进行CNN的计算,CNN计算的核心是卷积运算。在进行卷积运算时,集成芯片将卷积核展开为卷积核矩阵,将卷积输入数据展开为卷积输入矩阵,将卷积核矩阵的一行与卷积输入矩阵的一列进行矩阵乘积运算。
当卷积核和卷积输入数据的数据量较大时,每次矩阵乘积运算所需要的数据量同样较大,由于不同的卷积运算的卷积核和卷积输入数据大小不同,为了保证集成芯片能够适用于所有的卷积运算,需要将集成芯片中用于卷积运算的电路的数量设置得非常大,这会造成电路的浪费。
发明内容
本发明实施例公开卷积运算处理方法及相关产品,可以减少电路数量的需求。
本发明实施例第一方面公开一种集成芯片,所述集成芯片包括:控制器、卷积处理器、输入缓存、输出缓存;
所述控制器将分段卷积核和分段卷积输入数据载入到所述输入缓存;所述分段卷积核为卷积核分段得到的数据;所述分段卷积输入数据为卷积输入数据分段得到的数据;
所述卷积处理器对所述分段卷积核和所述分段卷积输入数据进行分段卷积运算得到分段卷积结果,将所述分段卷积结果存储到所述输出缓存。
可选的,所述输入缓存包含第一存储空间和第二存储空间,所述第一存储空间和所述第二存储空间分别用于存储一个数据;所述控制器将所述分段卷积核载入所述输入缓存包括:
在所述第二存储空间内的数据参与分段卷积运算结束后,所述控制器将所述第一存储空间内的数据移动到所述第二存储空间,然后将所述分段卷积核载入所述第一存储空间。
可选的,若所述第一存储空间和所述第二存储空间为空,所述控制器将所述分段卷积核载入所述输入缓存包括:
所述控制器将所述分段卷积核载入所述第二存储空间;
所述控制器还用于在所述第一存储空间载入所述分段卷积核之外的另一分段卷积核。
本发明实施例第二方面公开一种卷积运算处理方法,包括:
将分段卷积核和分段卷积输入数据载入到输入缓存;所述分段卷积核为卷积核分段得到的数据,所述分段卷积输入数据为所述卷积输入数据分段得到的数据;
对所述分段卷积核和所述分段卷积输入数据进行分段卷积运算得到分段卷积结果,将所述分段卷积结果存储到输出缓存。
本发明实施例第三方面公开一种卷积运算处理装置,包括存储器和处理器,所述存储器用于存储程序指令,所述程序指令适于由所述处理器加载;
所述处理器,用于加载所述程序指令并执行本发明实施例第二方面所述的卷积运算处理方法。
本发明实施例第四方面公开一种存储介质,所述存储介质中存储有多条程序指令,所述程序指令适于由处理器加载并执行本发明实施例第二方面所述的卷积运算处理方法。
本发明实施例第五方面公开一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如本发明实施例第二方面所述的卷积运算处理方法。
本发明实施例中,集成芯片进行卷积运算时,采用分段卷积运算,对分段卷积核和分段卷积输入数据进行分段卷积运算得到分段卷积结果,由于分段卷积核为卷积核分段得到的数据,分段卷积输入数据为卷积输入数据分段得到的数据,分段卷积核与分段卷积数据均变小,采用较少的电路即可实现分段卷积运算,可以减少卷积运算所需的电路数量。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1a是本发明实施例公开的一种硬件架构示意图;
图1b是本发明实施例公开的另一种硬件架构示意图;
图1c是本发明实施例公开的一种卷积神经网络算法模型的示意图;
图2a是本发明实施例公开的一种集成芯片的结构示意图;
图2b是本发明实施例公开的另一种集成芯片的结构示意图;
图3是本发明实施公开的一种常规的卷积运算的计算过程示意图;
图4a是本发明实施例公开的一种卷积核和卷积输入数据的分段处理示意图;
图4b是本发明实施公开的一种分段卷积运算的流程示意图;
图4c是本发明实施公开的一种分段卷积运算对应的矩阵乘积运算的流程示意图;
图5是本发明实施例中公开的分段卷积输入矩阵的一行和分段卷积核矩阵进行矩阵乘积运算的逻辑电路工作示意图;
图6是本发明实施例公开的一种卷积运算处理方法的流程示意图;
图7是本发明实施例公开的另一种卷积运算处理方法的流程示意图;
图8是本发明实施例公开的一种卷积运算处理装置的结构示意图;
图9是本发明实施例公开的另一种卷积运算处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种卷积运算处理方法及装置,可以在进行卷积运算时降低存储器与输入缓存之间的带宽。以下分别进行详细说明。
为了更好的理解本发明实施例,下面结合图1a和图1b对本发明实施例适用的硬件架构进行描述。
请参阅图1a,图1a是本发明实施例公开的一种硬件架构示意图。如图1a所示,该硬件架构包括服务器11和集成芯片12,服务器11包括中央处理器(Central ProcessingUnit,CPU)111和外部存储器(External Memory)112,服务器11与集成芯片12通过总线和接口标准(Peripheral Component Interconnect Express,PCIE)接口13进行连接,集成芯片12可以包括控制器(Control Unit)122、卷积处理器(Processing Element,PE)123、输入缓存124、片内存储器125以及输出缓存126。其中,控制器122与卷积处理器123双向连接、输入缓存124和输出缓存126双向连接,片内存储器125与输入缓存124连接,片内存储器125可以向输入缓存124输入数据,输入缓存124与卷积处理器123连接,输入缓存124可以向卷积处理器123输入数据,卷积处理器123与输出缓存126连接,卷积处理器123可以向输出缓存126输出数据,输出缓存126与片内存储器125连接,输出缓存126可以向片内存储器125输出数据。
本发明实施例中,集成芯片12可以是现场可编程门阵列(Field ProgrammbleGate Array,FPGA),也可以是专用集成电路(Application Specific Integratedcircuit,ASIC)。集成芯片12作为服务器11的协处理器,用于从服务器11的外部存储器112中获取数据,将获取的数据放入片内存储器125并通知控制器122已经从外部存储112中获得数据。控制器122用于将输入缓存124从片内存储器125获取需要计算的数据,卷积处理器123对需要计算的数据进行计算。卷积处理器123用于将计算得到的计算结果放入输出缓存126。输出缓存126用于将计算结果输出至片内存储器125,服务器11可以从集成芯片12的片内存储器125中读取计算结果。
请参阅图1b,图1b是本发明实施例公开的另一种硬件架构示意图。图1b是在图1a基础上进一步改进得到的,与图1a的区别在于,在集成芯片12中增加了直接内存存取(Direct Memory Access,DMA)121。其中,直接内存存取121与控制器122和片内存储器125双向连接,集成芯片12可以通过直接内存存取121从服务器11的外部存储器112中获取数据。直接内存存取121用于将获取的数据放入片内存储器125并通知控制器122已经从外部存储112中获得数据。服务器11还可以通过直接内存存取121从集成芯片12的片内存储器125中读取计算结果。
图1b中采用直接内存存取121后,直接内存存取121从服务器11中读取数据时无需中断控制器122和卷积处理器123,采用直接内存存取121可以提高集成芯片12与服务器11之间的数据传输效率。
请参阅图1c,图1c是本发明实施例公开的一种卷积神经网络算法模型的示意图。如图1c所示,卷积神经网络算法模型可以对图像数据进行处理。对于输入的图像数据,经过卷积运算、池化、归一化等操作,最后经过全连接层和回归(softmax)操作处理后,输出图像处理结果判断为“狗”的图像。在整个卷积神经网络算法的计算过程中,卷积运算需要进行多层运算,卷积运算在整个卷积神经网络算法的计算过程中占最大的计算量。本发明实施例中的卷积神经网络算法可以用于进行各种图像识别,例如图像分类、图像过滤等。比如,本发明实施例适用的业务场景可以为色情图片检测过滤的目标业务场景。本发明实施例中的卷积运算可以通过深度学习平台进行实现,深度学习平台可以包括卷积神经网络架构(Convolutional Architecture for Fast Feature Embedding,Caffe)、第二代人工智能学习系统(例如,Tensor Flow)等。深度学习平台可以调用基础线性代数子程序库(BasicLinear Algebra Subprograms,BLAS)进行矩阵乘积运算。本发明实施例适用于在单纯由中央处理器(central processor unit,CPU)进行运算的计算平台中,也适用于异构计算平台(如图1a或图1b所示的硬件架构)。在单纯由CPU进行运算的计算平台中,卷积运算由CPU计算。在异构计算平台中,服务器的CPU侧不仅把卷积神经网络算法所需的矩阵乘积运算放到集成芯片(例如,FPGA/ASIC)中进行计算,而且把卷积神经网络算法的其它操作,例如激活函数、池化、归一化计算也放到集成芯片中进行计算。本发明实施例可以完成并行高效的卷积运算,减少数据的重复交互,减小集成芯片的输入缓存的大小,降低卷积神经网络算法对器件的带宽的需求和输入缓存需求。
在图1a和图1b所示的硬件架构中,集成芯片12中的卷积处理器123可以用来处理卷积运算,卷积处理器123可以有多个,可以同时并行处理多个卷积运算。
在卷积神经网络中,卷积运算是指卷积核和卷积输入数据进行卷积运算。卷积核的数量以及卷积核的大小与卷积神经网络算法相关。一般而言,对于同一个卷积神经网络算法,每一层卷积运算的卷积核都不相同,每一层卷积运算的卷积输入数据也不相同。在逻辑电路实现中,为了方便逻辑电路对卷积输入数据和卷积核进行卷积运算,一般将卷积输入数据直接展开为卷积输入矩阵,将卷积核直接展开为卷积核矩阵,将卷积运算转化为便于逻辑电路实现的矩阵乘积运算(乘法运算和加法运算)。在进行矩阵乘积运算时,每次从片内存储器125中读入卷积核矩阵的一行和卷积输入矩阵的一列到输入缓存124,卷积处理器123对上述卷积核矩阵的一行和卷积输入矩阵的一列进行矩阵乘积运算。由于卷积输入矩阵的数据量通常较大,导致矩阵乘积运算所需要的数据量和计算量非常大,从而使得进行矩阵乘积运算所需要的集成芯片12的逻辑电路的数量非常巨大,逻辑电路可以包括乘法器、加法器、乘加器中的至少一种。同时,卷积核矩阵和卷积输入矩阵进行矩阵乘积运算时,由于卷积核矩阵的每一行都需要和卷积输入矩阵的每一列进行矩阵乘积运算,会造成卷积输入矩阵的数据的重复读取,对片内存储器125与输入缓存124之间的带宽要求较高。
基于上述图1a所示的硬件架构以及图1c所示的卷积神经网络算法模型,公开一种集成芯片。请参阅图2a,图2a是本发明实施例公开的一种集成芯片的结构示意图。如图2a所示,集成芯片12包括控制器122、卷积处理器123、输入缓存124以及输出缓存126。
可选的,集成芯片12还可以基于图1b所示的硬件架构,集成芯片12还可以包括直接内存存取121,直接内存存取121可以和控制器122双向连接。直接内存存取121从集成芯片的外部设备读取数据时无需中断控制器122和卷积处理器123,采用直接内存存取121可以提高集成芯片与外部设备之间的数据传输效率。
在卷积运算的过程中,卷积运算的卷积层的数量、每一层卷积运算的卷积核的大小和数量与卷积神经网络算法相关。对于不同的卷积神经网络算法,需要做卷积运算的卷积层的数量不一定相同,每一层卷积运算的卷积核的大小也不一定相同,每一层卷积运算的卷积核的数量也不一定不同,每一层卷积运算后是否需要做后处理运算也不一定相同。其中,后处理运算包括激活函数计算、池化计算、归一化计算中的至少一种,是否进行后处理计算是根据卷积神经网络算法来决定的。在卷积神经网络算法确定的情况下,卷积运算的层数以及每层卷积运算的卷积核的大小和数量都是确定的。在多层卷积运算过程中,卷积运算是逐层进行的,首先进行第一层卷积运算,得到第一层卷积运算结果后,如果神经网络算法要求进行后处理计算,则进行后处理计算,将第一层卷积运算结果进行后处理计算得到的结果作为第二层卷积运算的卷积输入数据,如果神经网络算法不要求进行后处理计算,则将第一层卷积运算结果作为第二层卷积运算的卷积输入数据。然后进行第二层卷积运算,以此类推,直到最后一层卷积运算结束,即可完成多层卷积运算。在一层卷积运算过程中,如果卷积核的数量有N个,则可以将N个卷积核分别和卷积输入数据进行卷积运算。需要说明的是,卷积核可以是通过深度学习平台从训练数据中学习得到的;第一层卷积运算的卷积输入数据是进行卷积运算的初始数据,例如,初始数据可以是待处理的图像数据。在以上多层卷积运算中,每一层卷积运算的结果有可能执行重排操作后作为下一层的卷积输入数据,在以矩阵作为卷积运算输入的情况下,重排通常可以采用转置运算实现。
本发明实施例中,卷积核和卷积输入数据是三维的,卷积核和卷积输入数据可以理解为三维的数据块。一个卷积核和卷积输入数据进行卷积运算后的卷积结果是二维的,由于卷积核的个数往往有多个,多个卷积核和卷积输入数据进行卷积运算的结果是三维的。
卷积核和卷积输入数据进行卷积运算可以理解为:卷积核对应的小数据块在卷积输入数据对应的大数据块中滑动,每滑动一次,将小数据块和大数据块中与小数据块重合的那部分数据进行乘法运算,将每个重合的数据相乘所得的结果相加,得到一个卷积结果。
为了便于理解卷积运算,下面以图3为例阐述卷积运算的具体过程。图3是本发明实施例公开的一种常规的卷积运算的计算过程示意图。如图3所示,卷积核为2×2×2的数据块,卷积核的长度、高度、宽度均为2。卷积核总共包括8个数据(a11、a12、a21、a22、a31、a32、a41、a42),卷积核由8个小立方体组成,每个小立方体代表卷积核中的一个数据。卷积输入数据为4×4×2的数据块,卷积输入数据的长度、高度均为4,宽度为2。总共包括32个数据(b11、b12、b13、b14、b21、b22、b23、b24、b31、b32、b33、b34、b41、b42、b43、b44、b51、b52、b53、b54、b61、b62、b63、b64、b71、b72、b73、b74、b81、b82、b83、b84)。卷积输入数据由32个小立方体组成,每个小立方体代表卷积输入数据中的一个数据。在进行卷积运算之前,控制器122将卷积核和卷积输入数据载入到输入缓存124。其中,控制器122将卷积核和卷积输入数据载入到输入缓存124的方式具体可以为:控制器122可以向输入缓存124发送读取指令,输入缓存124响应该读取指令从存储器中读取卷积核和卷积输入数据,并将卷积核和卷积输入数据载入到输入缓存12。
从卷积运算的角度来看,卷积处理器123对卷积核和卷积输入数据进行卷积运算,具体可以为:第一步:卷积处理器123将卷积核放入卷积输入数据中,以使卷积核的数据块与卷积输入数据中的一个2×2×2的数据块重合,将重合的小立方体所代表的数据进行乘法运算,得到乘法结果,并将所有的乘法结果相加,得到第一步的卷积运算结果。从图3可知,在第一步中,a11、a12、a21、a22、a31、a32、a41、a42分别与b11、b12、b21、b22、b51、b52、b61、b62重合,第一步的卷积运算为:a11×b11+a12×b12+a21×b21+a22×b22+a31×b51+a32×b52+a41×b61+a42×b62,第一步的卷积运算结果为c11,c11=a11×b11+a12×b12+a21×b21+a22×b22+a31×b51+a32×b52+a41×b61+a42×b62。可见,第一步中的卷积运算可以理解为a11、a12、a21、a22、a31、a32、a41、a42组成的一行矩阵和b11、b12、b21、b22、b51、b52、b61、b62组成的一列矩阵进行矩阵乘积运算。第二步:将卷积核顺着卷积输入数据的长度方向滑动一个数据单位,以使卷积核的数据块与卷积输入数据中的另一个2×2×2的数据块重合,与第一步类似,同样将重合的小立方体所代表的数据进行乘法运算,得到乘法结果,并将所有的乘法结果相加,得到第二步的卷积运算结果。从图3可知,在第二步中,a11、a12、a21、a22、a31、a32、a41、a42分别与b12、b13、b22、b23、b52、b53、b62、b63重合,第二步的卷积运算结果为c12。第三步:将卷积核顺着卷积输入数据的长度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第三步的卷积运算结果c13。第四步:将卷积核顺着卷积输入数据的高度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第四步的卷积运算结果c23。第五步:将卷积核顺着卷积输入数据的长度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第五步的卷积运算结果c22。第六步:将卷积核顺着卷积输入数据的长度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第六步的卷积运算结果c21。第七步:将卷积核顺着卷积输入数据的高度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第七步的卷积运算结果c31。第八步:将卷积核顺着卷积输入数据的长度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第八步的卷积运算结果c32。第九步:将卷积核顺着卷积输入数据的长度方向滑动一个数据单位,将重合的小立方体所代表的数据进行乘法运算和加法运算,得到第九步的卷积运算结果c33。至此,卷积核和卷积输入数据的卷积运算完成,得到最终的卷积运算结果。最终的卷积结果为c11、c12、c13、c21、c22、c23、c31、c32、c33这九个数据组成,并且这九个数据可以映射为3×3的数据平面:如果图3中的卷积核的个数有N个,则N个卷积核和卷积输入数据的卷积运算结果为3×3×N的数据块(长度、高度均为3,宽度为N)。
从矩阵运算的角度来看,卷积处理器123对卷积核和卷积输入数据进行卷积运算,具体可以为:卷积处理器123将卷积核矩阵转换为1行8列的卷积核矩阵,将卷积输入数据转换为8行9列的卷积输入矩阵。其中,卷积输入数据的列数是由卷积核和卷积输入数据的大小来确定的,如果卷积核的大小为K×K×D,卷积输入数据的大小为M×M×D,则卷积输入数据的列数为(M-K+1)×(M-K+1)。将1行8列的卷积核矩阵和8行9列的卷积输入矩阵进行矩阵运算,即可得到1行9列的矩阵,1行9列的矩阵可以映射为3×3的数据平面。如果图3中的卷积核的个数有N个,则N个卷积核和卷积输入数据的卷积运算结果为3×3×N的数据块(长度、高度均为3,宽度为N)。
为了便于理解,图3中的卷积核和卷积输入数据的长度、高度和宽度均以较小的数值为例进行说明。然而,实际的卷积运算过程中,卷积核和卷积输入数据的长度、高度和宽度往往非常大,为了保证集成芯片12能够适用于所有的卷积运算,需要将集成芯片12中用于卷积运算的逻辑电路的数量设置得非常大,这会造成电路的浪费。同时,由于卷积核的数量有多个,每个卷积核都需要与卷积输入数据进行卷积运算,会造成卷积核或卷积输入数据的重复从存储器载入输入缓存,对存储器和输入缓存之间的带宽要求较高。
图2a所示的集成芯片12可以对卷积核进行分段处理,得到分段卷积核;对卷积输入数据进行分段处理,得到分段卷积输入数据。当分段卷积核和分段卷积输入数据载入到输入缓存124后,卷积处理器123对分段卷积输入数据和分段卷积核进行分段卷积运算得到分段卷积结果,将分段卷积结果存储到输出缓存126。其中,分段卷积核为卷积核分段得到的数据;分段卷积输入数据为卷积输入数据分段得到的数据。以上流程为一层卷积运算,下一层卷积运算将会使用上述分段卷积结果作为下一层卷积运算的卷积输入数据。具体卷积过程参见前文关于卷积运算的说明,在此不再赘述。
其中,如果一层卷积运算的卷积核的数量为N个,分段卷积核为卷积核分段得到的数据,具体可以为:分段卷积核包括N个卷积核中按照相同的分段方式得到的空间区域相同的一段数据。
其中,分段卷积输入数据为卷积输入数据分段得到的数据,具体可以为:分段卷积输入数据为卷积输入数据按照上述分段卷积核的分段方式得到的在卷积运算过程中能够与分段卷积核数据在空间区域重合的一段数据。
下面以图4a为例描述卷积核的分段方式与卷积输入数据的分段方式。图4a是本发明实施例公开的一种卷积核和卷积输入数据的分段处理示意图,图4a为N个卷积核与一个卷积输入数据进行卷积运算的场景。其中,每个卷积核的大小为:K×K×D,K为卷积核的长度和高度,D为卷积核的宽度;卷积输入数据的大小为M×M×D,M为卷积输入数据的长度和高度,D为卷积输入数据的宽度。卷积核和卷积输入数据可以理解为三维空间的数据块,上述每个卷积核包括K×K×D个数据,上述卷积输入数据包括M×M×D个数据。在对卷积核进行拆分时,将K×K×D的数据块在宽度方向进行切割,切分为Y个K×K×(D/Y)的子数据块,类似的,对卷积输入数据进行拆分时,同样将M×M×D的数据块在宽度方向进行切割,切分为Y个M×M×(D/Y)的子数据块。例如,在对N个卷积核进行分段处理时,将N个卷积核在宽度处于0~D/Y区间的子数据块作为第一个分段卷积核,将N个卷积核在宽度处于D/Y~2D/Y区间的子数据块作为第二个分段卷积核,以此类推,将N个卷积核在宽度处于(Y-1)D/Y~D区间的子数据块作为第Y个分段卷积核。在对卷积输入数据进行分段处理时,将卷积输入数据在宽度处于0~D/Y区间的子数据块作为卷积输入数据的第一个分段卷积输入数据,将卷积输入数据在宽度处于D/Y~2D/Y区间的子数据块作为卷积输入数据的第二个分段卷积输入数据,以此类推,将卷积输入数据在宽度处于(Y-1)D/Y~D区间的子数据块作为卷积输入数据的第Y个分段卷积输入数据。
可见,第一分段卷积核包括N个卷积核中按照在宽度上以D/Y为单位进行分段的分段方式得到的宽度区间处于0~D/Y区间的一段数据;第二分段卷积核包括N个卷积核中按照在宽度上以D/Y为单位进行分段的分段方式得到的宽度区间处于D/Y~2D/Y区间的一段数据;第Y分段卷积核包括N个卷积核中按照在宽度上以D/Y为单位进行分段的分段方式得到的宽度区间处于(Y-1)D/Y~D区间的一段数据。类似的,第一分段卷积输入数据为卷积输入数据按照在宽度上以D/Y为单位进行分段的分段方式得到的宽度区间处于0~D/Y区间的一段数据;第二分段卷积输入数据为卷积输入数据按照在宽度上以D/Y为单位进行分段的分段方式得到的宽度区间处于D/Y~2D/Y区间的一段数据;第Y分段卷积输入数据为卷积输入数据按照在宽度上以D/Y为单位进行分段的分段方式得到的宽度区间处于(Y-1)D/Y~D区间的一段数据。其中,第一分段卷积核与第一分段卷积输入数据对应,第二分段卷积核与第二分段卷积输入数据对应,第Y分段卷积核与第Y分段卷积输入数据对应。
在进行分段卷积运算之前,控制器122将第一分段卷积核和对应的第一分段卷积输入数据载入输入缓存124。在进行分段卷积运算时,卷积处理器123将第一分段卷积核和对应的第一分段卷积输入数据分别进行卷积运算,得到第一段的分段卷积结果,将第一段的分段卷积结果存储在输出缓存126。类似的,控制器122将第二分段卷积核和对应的第二分段卷积输入数据载入输入缓存124,卷积处理器123将第二分段卷积核和第二分段卷积输入数据分别进行卷积运算,得到第二段的分段卷积结果,将第二段的分段卷积结果存储在输出缓存126。以此类推,控制器122将第Y分段卷积核和对应的第Y分段卷积输入数据载入输入缓存124,卷积处理器123将第Y分段卷积核和第Y分段卷积输入数据分别进行卷积运算,得到第Y段的分段卷积结果,将第Y段的分段卷积结果存储在输出缓存126。
下面结合图4a和4b阐述分段卷积运算的过程。如图4b所示,图4b为N个大小为K×K×D的卷积核和大小为M×M×D的卷积输入数据进行卷积运算的过程。首先,按照上述图4a的方式,将每个卷积核拆分为Y个大小为K×K×(D/Y)的分段卷积核,将卷积输入数据拆分为大小为Y个M×M×(D/Y)的分段卷积输入数据,并且第一分段卷积核与第一分段卷积输入数据对应,第二分段卷积核与第二分段卷积输入数据对应,第Y分段卷积核与第Y分段卷积输入数据对应。图4b中,卷积运算可以拆分为Y段卷积运算,Y段卷积运算包括:第一分段卷积运算、第二分段卷积运算、...第Y分段卷积运算。其中,图4b中的第一分段卷积运算为第一分段卷积核与第一分段卷积输入数据进行卷积运算,图4b中的第二分段卷积运算为第二分段卷积核与第二分段卷积输入数据进行卷积运算,以此类推,图4b中的第Y分段卷积运算为第Y分段卷积核与第Y分段卷积输入数据进行卷积运算。当Y段卷积运算完成后,可以将Y段卷积运算的结果进行累加,得到最终的卷积结果。其中,K×K×(D/Y)的分段卷积核和M×M×(D/Y)的分段卷积输入数据进行卷积运算的详细过程与图3中的2×2×2的卷积核和4×4×2卷积输入数据的卷积运算类似,此处不再赘述。
下面结合图4c阐述图4b中分段卷积核与分段卷积输入数据进行卷积运算对应的矩阵乘积运算过程。如图4c所示,第一分段卷积核可以展开为U行N列的矩阵,第一分段卷积输入数据可以展开为P行U列的矩阵;第二分段卷积核同样可以展开为U行N列的矩阵,第二分段卷积输入数据同样可以展开为P行U列的矩阵;以此类推,第Y分段卷积核同样可以展开为U行N列的矩阵,第Y分段卷积输入数据同样可以展开为P行U列的矩阵。将Y个P行U列的矩阵与Y个U行N列的矩阵进行分别矩阵乘积运算的结果进行累加,即可得到P行N列的卷积结果。其中,U=K×K×(D/Y);P=(M-K+1)×(M-K+1)。
可选的,如图2b所示,集成芯片12还可以包括片内存储器125,片内存储器125接收卷积输入数据和分段卷积核,或者,片内存储器125接收卷积输入数据和卷积核。片内存储器125可以与输入缓存124连接,可以与输出缓存126连接。
本发明实施例中,卷积核可以由图1a或图1b中的服务器11进行分段处理,也可以由集成芯片12进行分段处理。卷积输入数据可以由集成芯片12进行分段处理。
如果卷积核由图1a中的服务器11进行分段处理,服务器11的中央处理器111将卷积神经网络算法对应的每层的N个卷积核进行分段处理,得到多个分段卷积核并存储在外部存储单元112,服务器11的中央处理器111将外部存储器112中的多个分段卷积核与进行卷积运算的卷积输入数据输入到集成芯片12的片内存储器125,片内存储器125可以接收到服务器11发送的卷积输入数据和多个分段卷积核。控制器122将片内存储器125中的卷积输入数据拆分为多个子卷积输入数据,控制器122将一个分段卷积核和一个分段卷积输入数据载入到输入缓存124,或者,控制器122将两个分段卷积核和两个分段卷积输入数据载入到输入缓存124。当卷积核由图1a中的服务器11进行分段处理时,集成芯片无需再对卷积核进行分段,可以快速进行分段卷积运算,提高卷积运算的处理效率。
如果卷积核由图1a中的集成芯片12进行分段处理,服务器11将外部存储器112中的卷积核和卷积输入数据输入到集成芯片12的片内存储器125,片内存储器125接收到服务器11发送的卷积输入数据和卷积核。控制器122将片内存储器125中的卷积输入数据拆分为多个子卷积输入数据,控制器122将片内存储器125中的卷积核拆分为多个分段卷积核。控制器122将一个分段卷积核和一个分段卷积输入数据载入到输入缓存124,或者,控制器122将两个分段卷积核和两个分段卷积输入数据载入到输入缓存124。当卷积核由图1a中的集成芯片12进行分段处理时,服务器11无需对卷积核进行分段,可以减轻服务器11的负担。
结合图4a、图4b和图4c阐述集成芯片12的工作过程。集成芯片12获取分段卷积核和分段卷积输入数据,其中,分段卷积核可以由集成芯片12进行拆分,也可以由服务器11进行拆分。控制器122从片内存储器125中读取一个分段卷积输入数据和对应的N个分段卷积核放入输入缓存124,卷积处理器123将N个分段卷积核展开为U行N列的分段卷积核矩阵,将分段卷积输入数据展开为P行U列的分段卷积输入矩阵,将P行U列的分段卷积输入矩阵和U行N列的分段卷积核矩阵进行矩阵乘积运算,得到分段卷积结果。其中,N为卷积核的个数,U=K×K×(D/Y),P=(M-K+1)×(M-K+1),如果K=10,D=20,M=100,Y=20,则U=100,P=8281。当卷积处理器123完成一个分段卷积输入数据和对应的N个分段卷积核的分段卷积运算之后,将得到的分段卷积结果存储到输出缓存126,控制器122从片内存储器125中读取另一个分段卷积输入数据和对应的另外N个分段卷积核放入输入缓存124,进行下一次分段卷积运算。当所有的分段卷积输入数据和分段卷积核都完成分段卷积运算之后,可以将输出缓存126中的所有分段卷积结果进行累加,得到一层卷积运算结果,即完成一层卷积运算。图4a~图4c所示的分段卷积运算过程,通过对卷积核和卷积输入数据进行拆分,将分段卷积输入数据和分段卷积核进行分段卷积运算,在进行一次分段卷积运算时,无需从片内存储器中重复读取分段卷积核和分段卷积输入数据到输入缓存,可以在进行卷积运算时降低片内存储器与输入缓存之间的带宽。
可选的,分段卷积核对应的分段卷积核矩阵的行数和分段卷积输入数据对应的分段卷积输入矩阵的列数与卷积处理器123的逻辑电路数量对应。
本发明实施例中,逻辑电路可以包括乘法器、加法器或其他有逻辑运算能力的器件。分段卷积核对应的分段卷积核矩阵的行数和分段卷积输入数据对应的分段卷积输入矩阵的列数与卷积处理器的逻辑电路数量对应,包括:
分段卷积核对应的分段卷积核矩阵的行数小于或等于卷积处理器123的乘法器的数量,分段卷积输入数据对应的分段卷积输入矩阵的列数小于或等于卷积处理器123的乘法器的数量。
举例来说,请参见图4c所示的实施例,如果每个分段卷积核的大小为K×K×(D/Y),N个分段卷积核对应的分段卷积核矩阵为U行N列,分段卷积输入数据对应的分段卷积输入矩阵为P行U列,则U=K×K×(D/Y),则卷积处理器123的乘法器的数量大于U。
可选的,逻辑电路可以包括乘加器,分段卷积核对应的矩阵的行数和分段卷积输入数据对应的矩阵的列数与卷积处理器的逻辑电路数量对应包括:
分段卷积核对应的矩阵的行数小于或等于卷积处理器的乘加器的数量;分段卷积输入数据对应的矩阵的列数小于或等于卷积处理器的乘加器的数量。
举例来说,请参见图4c所示的实施例,如果每个分段卷积核的大小为K×K×(D/Y),N个分段卷积核对应的分段卷积核矩阵为U行N列,分段卷积输入数据对应的分段卷积输入矩阵为P行U列,则U=K×K×(D/Y),则卷积处理器123的乘法器的数量大于U。
上述实施例中,Y的取值可以根据卷积处理器123的可用逻辑电路数量以及卷积核的大小来确定。
如果逻辑电路包括乘法器和加法器,卷积处理器123的可用乘法器数量为X,卷积核的大小为K×K×D,则Y需要满足:Y>(K×K×D)/X。
如果逻辑电路包括乘加器,卷积处理器123的可用乘加器数量为X,卷积核的大小为K×K×D,则Y需要满足:Y>(K×K×D)/X。
在矩阵乘积运算中,为了满足一行U列的矩阵和U行一列的矩阵进行矩阵乘积运算,需要至少U个乘法器和至少1个加法器,或者,需要至少U个乘加器。大小为K×K×D的卷积核拆分为Y段后,每个分段卷积的大小为K×K×(D/Y),如果把每个分段卷积核展开为U行1列,则X>U=K×K×(D/Y)。
上述实施例中,如果出现卷积核的大小无法被X(X为卷积处理器123的可用乘加器数量)整除的情况,则可以将无法被整除的余数作为另一个分段卷积核。例如,卷积核大小为K×K×D,K为长度和高度、D为宽度,如果K=10,D=100,X=7,如果卷积核在宽度方向上进行拆分,则可以将卷积核拆分为15个分段卷积核,这15个分段卷积核分别为:10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×7、10×10×2。
可选的,输入缓存124包含第一存储空间和第二存储空间,第一存储空间和第二存储空间分别用于存储数据;控制器122将分段卷积核载入输入缓存124包括:
在第二存储空间内的数据参与分段卷积运算结束后,控制器122将第一存储空间内的数据移动到第二存储空间,然后将分段卷积核载入第一存储空间。
其中,在第二存储空间内的数据参与分段卷积运算结束后,控制器122将第一存储空间内的数据移动到第二存储空间,可以将第二存储空间内原有的数据进行覆盖。控制器122将分段卷积核载入第一存储空间可以将第一存储空间内原有的数据进行覆盖。上述数据可以是分段卷积核,采用本发明实施例,在输入缓存124中采用“乒乓存储”的方式存储分段卷积核,可以始终保证输入缓存124中存储有两个分段卷积核,卷积处理器123在完成一次分段卷积运算之后,无需等待下一次分段卷积运算的分段卷积核的载入,即可快速进行下一次分段卷积运算,可以提高卷积运算的处理效率。
可选的,若第一存储空间和第二存储空间为空,控制器122将分段卷积核载入输入缓存124包括:
控制器122将分段卷积核载入第二存储空间;
控制器122还用于在第一存储空间载入分段卷积核之外的另一分段卷积核。
本发明实施例中,当第一存储空间和第二存储空间为空时,表明输入缓存124中首次载入数据,当输入缓存124中首次载入数据时,可以将输入缓存124中一次性载入两个分段卷积核。
可选的,卷积处理器123对分段卷积核和分段卷积输入数据进行分段卷积运算包括:
卷积处理器123将分段卷积核转换为分段卷积核矩阵,将分段卷积输入数据转换为分段卷积输入矩阵;卷积处理器123将分段卷积输入矩阵作为乘数,将分段卷积核矩阵作为被乘数进行乘积运算。
本发明实施例中,将分段卷积输入矩阵作为乘数,将分段卷积核矩阵作为被乘数。在进行矩阵乘积运算时,一般将乘数对应的矩阵逐行和被乘数对应的矩阵进行矩阵乘积运算,具体请参见图5的矩阵乘积运算过程。如果卷积核的大小为:2×2×100,卷积核的个数N=100,卷积输入数据的大小为100×100×100,则每个卷积核可以拆分为50个2×2×2大小的分段卷积核,卷积输入数据可以拆分为50个100×100×2的分段卷积输入数据。如果采用常规的分段卷积运算,卷积处理器123将分段卷积核转换为分段卷积核矩阵,将分段卷积输入数据转换为分段卷积输入矩阵;卷积处理器123将分段卷积输入矩阵作为被乘数,将分段卷积核矩阵作为乘数进行乘积运算,分段卷积核矩阵为100行8列,分段卷积输入矩阵为8行9801列。100行8列的矩阵和8行9801列的矩阵进行矩阵乘积运算时,需要将100行8列的矩阵逐行和8行9801列的矩阵进行矩阵乘积运算,每次矩阵乘积运算均为1行8列的矩阵和8行9801列的矩阵相乘,每次矩阵乘积运算需要占用输入缓存124较大的存储空间。
采用本发明实施例中的分段卷积运算,卷积处理器123将分段卷积输入矩阵作为乘数,将分段卷积核矩阵作为被乘数进行乘积运算,分段卷积核矩阵为8行100列,分段卷积输入矩阵为9801行8列。9801行8列的矩阵和8行100列的矩阵进行矩阵乘积运算时,需要将9801行8的矩阵逐行和8行100列的矩阵进行矩阵乘积运算,每次矩阵乘积运算均为1行8列的矩阵和8行100列的矩阵相乘,每次矩阵乘积运算占用输入缓存124较小的存储空间。由于分段卷积输入矩阵往往远大于分段卷积核矩阵,将分段卷积输入矩阵作为乘数,将分段卷积核矩阵作为被乘数,可以减少每次矩阵乘积运算占用的输入缓存124的存储空间。
由于卷积核和卷积输入数据都进行分段处理,分段卷积核矩阵的行数明显变小,卷积处理器123只需要有等于或大于分段卷积核矩阵的行数的可用逻辑电路,即可完成分段卷积运算。实施本发明实施例,可以在有限的可用逻辑电路的情况下完成卷积运算,节省用于卷积运算的逻辑电路。
结合图5阐述分段卷积输入矩阵和分段卷积核矩阵的矩阵乘积运算的具体过程。
举例来说,如图5所示,图5是本发明实施例中公开的分段卷积输入矩阵的一行和分段卷积核矩阵进行矩阵乘积运算的逻辑电路工作示意图。如果分段卷积输入矩阵为P行U列,分段卷积核矩阵为U行N列,假设P=2000,U=5,N=100。下面以分段卷积输入矩阵的第一行为例,阐述具体的逻辑电路实现过程。
集成芯片12的卷积处理器123中用于卷积运算的逻辑电路可以是乘法器和加法器,也可以是乘加器。乘法器可以将至少两个数据进行乘法运算,并输出乘法计算结果。加法器可以将至少两个数据进行加法运算,并输出加法计算结果。本发明实施例采用乘加器(也可称为乘法累加器)进行卷积运算,可以将乘法操作得到的结果与另一个操作数进行相加,可以在一个时钟周期内进行乘法运算和加法运算,以降低整个乘加操作的执行延时。
图5以乘加器为例进行说明。图5中仅需要5个乘加器(如图5所示的乘加器0、乘加器1、乘加器2、乘加器3、乘加器4)即可实现所有的分段卷积运算。举例来说,如果集成芯片12的卷积处理器123的时钟频率为1GHz,则时钟周期为1ns,假设乘加器在一个时钟周期内可以执行一次乘加运算。
如图5所示,分段卷积输入矩阵的第一行为X00X01X02X03X04,分段卷积核矩阵为则分段卷积输入矩阵的第一行和分段卷积核矩阵的矩阵乘积运算在卷积处理器的逻辑电路实现具体如下。
在第一个时钟周期(T0)内,乘加器0执行X00×W00的乘法运算,得到运算结果(X00×W00)。
在第二个时钟周期(T1)内,乘加器0将上个周期得到的运算结果(X00×W00)传送给乘加器1,然后乘加器0执行X00×W01的乘法运算,得到运算结果(X00×W01);乘加器1执行X01×W10的乘法运算并将得到的运算结果(X01×W10)和乘加器0传送的运算结果(X00×W00)进行加法运算后得到运算结果(X00×W00+X01×W10)。
在第三个时钟周期(T2)内,乘加器0将上个周期得到的运算结果(X00×W01)传送给加法器1,然后乘加器0执行X00×W02的乘法运算,得到运算结果(X00×W02);乘加器1将上个周期得到的运算结果(X00×W00+X01×W10)传送给乘加器2,然后乘加器1执行X01×W11的乘法运算并将得到的运算结果(X01×W11)和乘加器0传送的运算结果(X00×W01)进行加法运算后得到运算结果(X00×W01+X01×W11);乘加器2执行X02×W20的乘法运算并将得到的运算结果(X02×W20)和乘加器1传送的运算结果(X00×W00+X01×W10)进行加法运算后得到运算结果(X00×W00+X01×W10+X02×W20)。
在第四个时钟周期(T3)内,乘加器0将上个周期得到的运算结果(X00×W02)传送给加法器1,然后乘加器0执行X00×W03的乘法运算,得到运算结果(X00×W03);乘加器1将上个周期得到的运算结果(X00×W01+X01×W11)传送给乘加器2,然后乘加器1执行X01×W12的乘法运算并将得到的运算结果(X01×W12)和乘加器0传送的运算结果(X00×W02)进行加法运算后得到运算结果(X00×W02+X01×W12);乘加器2将上个周期得到的运算结果(X00×W00+X01×W10+X02×W20)传送给乘加器3,然后乘加器2执行X02×W21的乘法运算并将得到的运算结果(X02×W21)和乘加器1传送的运算结果(X00×W01+X01×W11)进行加法运算后得到运算结果(X00×W01+X01×W11+X02×W21);乘加器3执行X03×W30的乘法运算并将得到的运算结果(X03×W30)和乘加器2传送的运算结果(X00×W00+X01×W10+X02×W20)进行加法运算后得到运算结果(X00×W00+X01×W10+X02×W20+X03×W30)。
在第五个时钟周期(T4)内,乘加器0将上个周期得到的运算结果(X00×W03)传送给加法器1,然后乘加器0执行X00×W04的乘法运算,得到运算结果(X00×W04);乘加器1将上个周期得到的运算结果(X00×W02+X01×W12)传送给乘加器2,然后乘加器1执行X01×W13的乘法运算并将得到的运算结果(X01×W13)和乘加器0传送的运算结果(X00×W03)进行加法运算后得到运算结果(X00×W03+X01×W13);乘加器2将上个周期得到的运算结果(X00×W01+X01×W11+X02×W21)传送给乘加器3,然后乘加器2执行X02×W22的乘法运算并将得到的运算结果(X02×W22)和乘加器1传送的运算结果(X00×W02+X01×W12)进行加法运算后得到运算结果(X00×W02+X01×W12+X02×W22);乘加器3将上个周期得到的运算结果(X00×W00+X01×W10+X02×W20+X03×W30)传送给乘加器4,然后乘加器3执行X03×W31的乘法运算并将得到的运算结果(X03×W31)和乘加器2传送的运算结果(X00×W01+X01×W11+X02×W21)进行加法运算后得到运算结果(X00×W01+X01×W11+X02×W21+X03×W31)。乘加器4执行X04×W40的乘法运算并将得到的运算结果(X04×W40)和乘加器3传送的运算结果(X00×W00+X01×W10+X02×W20+X03×W30)进行加法运算后得到运算结果(X00×W00+X01×W10+X02×W20+X03×W30+X04×W40)。
在第六个时钟周期(T5)内,乘加器0将上个周期得到的运算结果(X00×W04)传送给加法器1,然后乘加器0执行X00×W05的乘法运算,得到运算结果(X00×W05);乘加器1将上个周期得到的运算结果(X00×W03+X01×W13)传送给乘加器2,然后乘加器1执行X01×W14的乘法运算并将得到的运算结果(X01×W14)和乘加器0传送的运算结果(X00×W04)进行加法运算后得到运算结果(X00×W04+X01×W14);乘加器2将上个周期得到的运算结果(X00×W02+X01×W12+X02×W22)传送给乘加器3,然后乘加器2执行X02×W23的乘法运算并将得到的运算结果(X02×W23)和乘加器1传送的运算结果(X00×W03+X01×W13)进行加法运算后得到运算结果(X00×W03+X01×W13+X02×W23);乘加器3将上个周期得到的运算结果(X00×W01+X01×W11+X02×W21+X03×W31)传送给乘加器4,然后乘加器3执行X03×W32的乘法运算并将得到的运算结果(X03×W32)和乘加器2传送的运算结果(X00×W02+X01×W12+X02×W22)进行加法运算后得到运算结果(X00×W02+X01×W12+X02×W22+X03×W32)。乘加器4将上个周期得到的运算结果(X00×W00+X01×W10+X02×W20+X03×W30+X04×W40)输出到输出缓存中进行存储,然后乘加器4执行X04×W41的乘法运算并将得到的运算结果(X04×W41),和乘加器3传送的运算结果(X00×W01+X01×W11+X02×W21+X03×W31)进行加法运算后得到运算结果(X00×W01+X01×W11+X02×W21+X03×W31+X04×W41)。
从第五个时钟周期(T4)开始,五个乘加器(乘加器0、乘加器1、乘加器2、乘加器3、乘加器4)都开始进行乘法运算。到第101个时钟周期(T100)时,乘加器0完成了分段卷积输入矩阵的第一行和分段卷积核矩阵的卷积乘积运算,可以开始进行分段卷积输入矩阵的第二行和分段卷积核矩阵的乘法运算。如果分段卷积输入矩阵的第二行为X10X11X12X13X14,则在101个时钟周期(T100)时,乘加器0执行X10×W00的乘法运算,得到运算结果(X10×W00)。可见,本发明实施例中的乘加器在进行矩阵乘积运算时,乘加器0、乘加器1、乘加器2、乘加器3、乘加器4为流水作业,直到分段卷积输入矩阵的所有行都完成矩阵乘积运算后,完成分段卷积输入矩阵和分段卷积核矩阵的运算,进行下一个分段卷积输入矩阵和分段卷积核矩阵的运算。
从第六个时钟周期(T5)开始,乘加器4每个周期都将上个周期得到的运算结果输出到输出缓存中进行存储。到第104个周期(T103)结束后,乘加器4做完了分段卷积输入矩阵的第一行和分段卷积核矩阵的卷积乘积运算的最后一次乘加运算,在第105个周期输出最后一个运算结果到输出缓存中进行存储,从而完成了分段卷积输入矩阵的第一行和分段卷积核矩阵的运算。需要说明的是,分段卷积输入矩阵的第二行和分段卷积核矩阵的乘法运算在第101个时钟周期(T100)就开始了,分段卷积输入矩阵的第二行和分段卷积核矩阵的乘法运算方式与上述分段卷积输入矩阵的第一行和分段卷积核矩阵的乘法运算方式类似,此处不再赘述。
以此类推,分段卷积输入矩阵的其他行和分段卷积核矩阵的运算过程也可以通过五个乘加器来完成,从而完成分段卷积输入矩阵和分段卷积核矩阵的运算。更进一步的,其他的分段卷积输入矩阵和分段卷积核矩阵的运算都可以采用相同的逻辑电路进行乘加运算。
从上述例子可以看出,分段卷积核矩阵的行数即为最少需要的乘加器的个数。可以根据卷积处理器的可用逻辑电路来确定卷积核的拆分大小。比如,卷积核的数据量为Q,卷积和被均匀拆分为Y个分段卷积核,则每个分段卷积核的数据量为Q/Y。如果卷积处理器的可用逻辑电路(例如,乘加器)的数量较多时,可以将Y设置的较小,使得分段卷积核矩阵的行数(Q/Y)较大,以满足较快的运算处理需求。当卷积处理器的数量有多个时,还可以同时用多个卷积处理器分别对不同的分段卷积核矩阵进行运算,进一步提高卷积运算的速度。如果集成芯片中的可用逻辑电路较少时,可以将Y设置较大,使得分段卷积核矩阵的行数(Q/Y)较小,以节省逻辑电路,可以在占用较少的逻辑电路的情况下,实现多层卷积运算。
可选的,卷积处理器123将分段卷积结果存储到输出缓存126包括:
卷积处理器123将分段卷积结果与输出缓存126内存储的数据累加后写入输出缓存126。
举例来说,卷积处理器123将第一分段卷积核和第一分段卷积输入数据分别进行卷积运算,得到第一段的分段卷积结果,将第一段的分段卷积结果存储在输出缓存126;卷积处理器123将第二分段卷积核和第二分段卷积输入数据分别进行卷积运算,得到第二段的分段卷积结果,将第二段的分段卷积结果与输出缓存126内存储的第一段的分段卷积结果累加后写入输入缓存126。以此类推,卷积处理器123将第Y分段卷积核和第Y分段卷积输入数据分别进行卷积运算,得到第Y段的分段卷积结果,将第Y段的分段卷积结果与输出缓存126内存储的第一段至第(Y-1)段的分段卷积结果的累加结果进行累加后写入输入缓存126。本发明实施例中,卷积处理器123完成一次分段卷积运算后,将得到的分段卷积结果与输出缓存126内之前存储的数据进行累加,本发明实施例在每一次分段卷积运算之后立即进行分段卷积结果累加,无需在所有分段卷积运算结束之后再进行分段卷积结果累加,可以提高整个卷积运算的处理效率。
可选的,在卷积核的所有数据均参与分段卷积运算后,卷积处理器123对输出缓存126内存储的数据进行后处理计算,得到后处理卷积结果;对后处理卷积结果对应的矩阵进行转置运算,得到所述后处理卷积结果对应的矩阵的转置矩阵;
或者,在卷积核的所有数据均参与分段卷积运算后,卷积处理器123对输出缓存126内存储的数据对应的矩阵进行转置运算,得到所述输出缓存内存储的数据对应的矩阵的转置矩阵;
控制器122将上述转置矩阵对应的卷积结果作为卷积输入数据存入片内存储器125。
本发明实施例中,后处理计算包括激活函数计算、池化计算、归一化计算中的至少一种,是否进行后处理计算是根据卷积神经网络算法来决定的。由于本发明实施例中的分段卷积运算是将分段卷积输入数据作为乘数,将分段卷积核作为被乘数,与常规的将卷积核作为乘数,将卷积输入数据作为被乘数不同,分段卷积运算得到的数据的行和列是颠倒的,需要将分段卷积运算得到的矩阵进行转置运算,比如,现有技术中得到的卷积结果为N行P列,本发明实施例得到的卷积结果为P行N列,则将本发明实施例得到的卷积结果进行矩阵转置运算,即可得到N行P列的卷积结果。
图2a中的集成芯片12可以将卷积核和卷积输入数据进行分段处理,可以对卷积核和卷积输入数据进行拆分,在进行一次分段卷积运算时,无需重复读取分段卷积核和分段卷积输入数据到输入缓存,可以在进行卷积运算时降低存储器与输入缓存124之间的带宽。同时,由于分段卷积核和分段卷积输入数据均较小,可以采用存储空间较小的输入缓存124,降低卷积神经网络算法对输入缓存124的需求,并且,由于分段卷积核与分段卷积数据均较小,在卷积处理器12的逻辑电路有限的情况下仍然可以进行卷积运算。需要说明的是,器件的带宽可以指的是两个器件之间的数据传输的能力。例如,存储器与输入缓存124之间的带宽,可以理解为输入缓存124从存储器从读取数据的速度以及存储器从输入缓存124读取数据的速度,如果带宽越大,则读取速度越快。带宽的单位可以为Gb/s。
本发明实施例中的卷积运算可以应用在图像处理领域,例如,可以应用与图像识别、图像分类、图像过滤等应用场景。如图1c所示,对于输入的图像数据,经过卷积运算、池化、归一化等操作,最后经过全连接层和回归操作处理后,输出图像处理结果。卷积运算可以有多层,每一层卷积运算都是这一层的卷积输入数据与这一层的卷积核进行卷积运算。每一层的卷积运算结果可以作为下一层卷积运算的卷积输入数据。其中,第一层卷积运算的卷积输入数据为输入的图像数据,第一层卷积运算为输入的图像数据与第一层的卷积核进行卷积运算。输入的图像数据可以是一张图像中的所有像素点的数据(例如,灰度值,RGB值等),如1000×600个像素点组成的1000×600×3(3为RGB值)的数据。本发明实施例在每一层的卷积运算中,可以对每一层的卷积核和卷积输入数据进行拆分,得到多个分段卷积核与对应的多个分段卷积输入数据,在进行一次分段卷积运算时,无需重复读取分段卷积核和分段卷积输入数据到输入缓存,可以在进行卷积运算时降低片内存储器125与输入缓存124之间的带宽。同时,由于分段卷积核和分段卷积输入数据均较小,可以采用存储空间较小的输入缓存124,降低卷积神经网络算法对输入缓存124的需求,并且,由于分段卷积核与分段卷积数据均较小,在卷积处理器12的逻辑电路有限的情况下仍然可以进行卷积运算。
请参阅图6,图6是本发明实施例公开的一种卷积运算处理方法的流程示意图,如图6所示,该卷积运算处理方法包括如下步骤。
601、将分段卷积核和分段卷积输入数据载入到输入缓存;上述分段卷积核为卷积核分段得到的数据,上述分段卷积输入数据为上述卷积输入数据分段得到的数据。
602、对上述分段卷积核和上述分段卷积输入数据进行分段卷积运算得到分段卷积结果,将上述分段卷积结果存储到输出缓存。
本发明实施例中,步骤601和步骤602的执行主体可以为图1a或图1b所示的集成芯片。集成芯片用于进行卷积运算,集成芯片包括用于进行卷积运算的控制器、卷积处理器、输入缓存、输出缓存、片内存储器等。步骤601和步骤602的执行主体也可以为包括中央处理器、输入输出设备、存储器以及通信总线的装置,其中,中央处理器、输入输出设备和存储器通过通信总线进行连接。中央处理器用于进行卷积运算,中央处理器包含用于进行卷积运算的逻辑电路,例如,乘法器、加法器、乘加器等;存储器用于存储分段卷积核和分段卷积输入数据。为了便于说明,图6中的卷积运算处理方法的执行主体以图1a或图1b所示的集成芯片为例进行说明。
图6所示的方法的具体实施可以参见上述图2a至图5中关于集成芯片的实施例,此处不再赘述。
实施图6所示的方法,通过对卷积核进行拆分,在进行一次分段卷积运算时,无需从片内存储器中重复读取分段卷积核和分段卷积输入数据到输入缓存,可以在进行卷积运算时降低片内存储器与输入缓存之间的带宽。同时,由于分段卷积核和分段卷积输入数据均较小,可以采用存储空间较小的输入缓存,降低卷积神经网络算法对器件的带宽需求与输入缓存的需求。
可选的,在执行步骤601之前,还可以执行如下步骤:
接收卷积输入数据和分段卷积核,将卷积输入数据分段得到分段卷积数据;
或者,接收卷积输入数据和卷积核,将卷积输入数据分段得到分段卷积数据,将卷积核分段得到分段卷积核。
本发明实施例中,卷积核可以由图1a或图1b中的服务器11进行分段处理,也可以由集成芯片12进行分段处理。卷积输入数据可以由集成芯片12进行分段处理。当卷积核由图1a中的服务器11进行分段处理时,集成芯片无需再对卷积核进行分段,可以快速进行分段卷积运算,提高卷积运算的处理效率。当卷积核由图1a中的集成芯片12进行分段处理时,服务器11无需对卷积核进行分段,可以减轻服务器11的负担。
可选的,上述分段卷积核对应的矩阵的行数和上述分段卷积输入数据对应的矩阵的列数与进行卷积运算的逻辑电路数量对应。
可选的,上述分段卷积核对应的矩阵的行数和上述分段卷积输入数据对应的矩阵的列数与进行卷积运算的逻辑电路数量对应包括:
上述分段卷积核对应的矩阵的行数小于或等于进行卷积运算的乘加器的数量;上述分段卷积输入数据对应的矩阵的列数小于或等于进行卷积运算的乘加器的数量。
采用乘加器进行卷积运算,可以将乘法操作得到的结果与另一个操作数进行相加,可以在一个时钟周期内进行乘法运算和加法运算,以降低整个乘加操作的执行延时。
可选的,上述对上述分段卷积核和上述分段卷积输入数据进行分段卷积运算包括:
将上述分段卷积核转换为分段卷积核矩阵,将上述分段卷积输入数据转换为分段卷积输入矩阵;
将上述分段卷积输入矩阵作为乘数,将上述分段卷积核矩阵作为被乘数进行乘积运算。
本发明实施例中,在进行矩阵乘积运算时,由于分段卷积输入矩阵往往远大于分段卷积核矩阵,将分段卷积输入矩阵作为乘数,将分段卷积核矩阵作为被乘数,可以减少每次矩阵乘积运算占用的输入缓存124的存储空间。由于卷积核和卷积输入数据都进行分段处理,分段卷积核矩阵的行数与未拆分的卷积核展开的矩阵的列数相比,明显变小,卷积处理器只需要有等于或大于分段卷积核矩阵的行数的可用逻辑电路,即可完成分段卷积运算。实施本发明实施例,可以在有限的可用逻辑电路的情况下完成卷积运算,节省用于卷积运算的逻辑电路。
可选的,上述将上述分段卷积结果存储到上述输出缓存126包括:
将上述分段卷积结果与上述输出缓存内存储的数据累加后写入上述输出缓存126。
本发明实施例在每一次分段卷积运算之后立即进行分段卷积结果累加,无需在所有分段卷积运算结束之后再进行分段卷积结果累加,可以提高整个卷积运算的处理效率。
可选的,上述输入缓存包含第一存储空间和第二存储空间,上述第一存储空间和上述第二存储空间分别用于存储数据;步骤601中将上述分段卷积核载入到输入缓存包括:
在上述第二存储空间内的数据参与分段卷积运算结束后,将上述第一存储空间内的数据移动到上述第二存储空间,然后将上述分段卷积核载入上述第一存储空间。
其中,在第二存储空间内的数据参与分段卷积运算结束后,将第一存储空间内的数据移动到第二存储空间,可以将第二存储空间内原有的数据进行覆盖。将分段卷积核载入第一存储空间可以将第一存储空间内原有的数据进行覆盖。上述数据可以是分段卷积核,在输入缓存124中采用“乒乓存储”的方式存储分段卷积核,可以始终保证输入缓存124中存储有两个分段卷积核,卷积处理器123在完成一次分段卷积运算之后,无需等待下一次分段卷积运算的分段卷积核的载入,即可快速进行下一次分段卷积运算,可以提高卷积运算的处理效率。
可选的,若上述第一存储空间和上述第二存储空间为空,步骤601中将上述分段卷积核载入到输入缓存包括:
将上述分段卷积核载入上述第二存储空间;
在上述第一存储空间载入上述分段卷积核之外的另一分段卷积核。
本发明实施例为“乒乓存储”的首次存储过程,当输入缓存124中首次载入数据时,可以将输入缓存124中一次性载入两个分段卷积核。
请参阅图7,图7是本发明实施例公开的另一种卷积运算处理方法的流程示意图。图7是在图6的基础上进一步优化得到的,如图7所示,该卷积运算处理方法包括:
701、将分段卷积核和分段卷积输入数据载入到输入缓存;上述分段卷积核为卷积核分段得到的数据,上述分段卷积输入数据为上述卷积输入数据分段得到的数据。
702、对上述分段卷积核和上述分段卷积输入数据进行分段卷积运算得到分段卷积结果,将上述分段卷积结果存储到输出缓存。
703、在上述卷积核的所有数据均参与分段卷积运算后,对上述输出缓存内存储的数据进行后处理计算,得到后处理卷积结果,对上述后处理卷积结果对应的矩阵进行转置运算,得到上述后处理卷积结果对应的矩阵的转置矩阵;或者,在上述卷积核的所有数据均参与分段卷积运算后,对上述输出缓存内存储的数据对应的矩阵进行转置运算,得到上述输出缓存内存储的数据对应的矩阵的转置矩阵。
704、将上述转置矩阵对应的卷积结果作为卷积输入数据存入片内存储器。
其中,后处理计算包括激活函数计算、池化计算、归一化计算中的至少一种,是否进行后处理计算是根据卷积神经网络算法来决定的。在图像领域中,由于邻域数据的相关性,池化计算用于对卷积结果中的数据进行删减,去除一些冗余的数据。例如,对于一幅24×24的原始图像数据,用5×5卷积核卷积,得到卷积结果为20×20,经过2×2池化,最终的结果变成10×10。
由于本发明实施例中的分段卷积运算是将分段卷积输入数据作为乘数,将分段卷积核作为被乘数,与常规的将卷积核作为乘数,将卷积输入数据作为被乘数不同,分段卷积运算得到的数据的行和列是颠倒的,需要将分段卷积运算得到的矩阵进行转置处理,比如,现有技术中得到的卷积结果为N行P列,本发明实施例得到的卷积结果为P行N列,则将本发明实施例得到的卷积结果进行矩阵转置运算,即可得到N行P列的卷积结果。
步骤701至步骤702可以参见图6所示的步骤601至步骤602,此处不再赘述。
图7所示的方法的具体实施可以参见上述图2a至图5中关于集成芯片的实施例,此处不再赘述。
请参阅图8,图8是本发明实施例公开的一种卷积运算处理装置的结构示意图。其中,该卷积运算处理装置包括载入单元801、分段卷积单元802和存储单元803,其中:
载入单元801,用于将分段卷积核和分段卷积输入数据载入到输入缓存;上述分段卷积核为卷积核分段得到的数据,上述分段卷积输入数据为卷积输入数据分段得到的数据。
分段卷积单元802,用于对上述分段卷积核和上述分段卷积输入数据进行分段卷积运算得到分段卷积结果。
存储单元803,用于将上述分段卷积结果存储到输出缓存。
图8所示的卷积运算处理装置的实施可以参见图6至图7所示的方法实施例,重复之处不再赘述。
实施图8所示的卷积运算处理装置,在进行一次分段卷积运算时,无需从片内存储器中重复读取分段卷积核和分段卷积输入数据到输入缓存,可以在进行卷积运算时降低片内存储器与输入缓存之间的带宽。
请参阅图9,图9是本发明实施例公开的另一种卷积运算处理装置的结构示意图。如图9所示,该卷积运算处理装置可以包括存储器901、处理器902以及输入输出装置903,存储器901、处理器902以及输入输出装置903可以通过通信总线904连接。存储器901用于存储程序指令,程序指令适于由处理器902加载;输入输出装置903可以用于接收卷积输入数据,以及用于输出卷积处理结果。
处理器902,用于加载程序指令并执行上述图6-图7中的部分或全部方法步骤。
实施图9所示的卷积运算处理装置,在进行一次分段卷积运算时,无需从片内存储器中重复读取分段卷积核和分段卷积输入数据到输入缓存,可以在进行卷积运算时降低片内存储器与输入缓存之间的带宽。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有多条程序指令,该程序指令适于由处理器加载并执行如上述方法实施例中记载的任何一种卷积运算处理方法的部分或全部步骤。
本发明实施例的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例的卷积运算处理装置中的单元可以根据实际需要进行合并、划分和删减。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

Claims (17)

1.一种集成芯片,所述集成芯片包括:控制器、卷积处理器、输入缓存、输出缓存;其特征在于,
所述控制器将分段卷积核和分段卷积输入数据载入到所述输入缓存;所述分段卷积核为卷积核分段得到的数据;所述分段卷积输入数据为卷积输入数据分段得到的数据;
所述卷积处理器对所述分段卷积核和所述分段卷积输入数据进行分段卷积运算得到分段卷积结果,将所述分段卷积结果存储到所述输出缓存。
2.根据权利要求1所述集成芯片,其特征在于,其特征在于,
所述分段卷积核对应的矩阵的行数和所述分段卷积输入数据对应的矩阵的列数与所述卷积处理器的逻辑电路数量对应。
3.根据权利要求2所述集成芯片,其特征在于,所述分段卷积核对应的矩阵的行数和所述分段卷积输入数据对应的矩阵的列数与所述卷积处理器的逻辑电路数量对应包括:
所述分段卷积核对应的矩阵的行数小于或等于所述卷积处理器的乘加器的数量;所述分段卷积输入数据对应的矩阵的列数小于或等于所述卷积处理器的乘加器的数量。
4.根据权利要求1~3任一项所述集成芯片,其特征在于,所述卷积处理器对所述分段卷积核和所述分段卷积输入数据进行分段卷积运算包括:
所述卷积处理器将所述分段卷积核转换为分段卷积核矩阵,将所述分段卷积输入数据转换为分段卷积输入矩阵;
所述卷积处理器将所述分段卷积输入矩阵作为乘数,将所述分段卷积核矩阵作为被乘数进行乘积运算。
5.根据权利要求4所述集成芯片,其特征在于,所述卷积处理器将所述分段卷积结果存储到所述输出缓存包括:
所述卷积处理器将所述分段卷积结果与所述输出缓存内存储的数据累加后写入所述输出缓存。
6.根据权利要求5所述集成芯片,其特征在于,在所述卷积核的所有数据均参与分段卷积运算后,所述卷积处理器对所述输出缓存内存储的数据进行后处理计算,得到后处理卷积结果;所述卷积处理器对所述后处理卷积结果对应的矩阵进行转置运算,得到所述后处理卷积结果对应的矩阵的转置矩阵;
或者,在所述卷积核的所有数据均参与分段卷积运算后,所述卷积处理器对所述输出缓存内存储的数据对应的矩阵进行转置运算,得到所述输出缓存内存储的数据对应的矩阵的转置矩阵;
所述控制器将所述转置矩阵对应的卷积结果作为卷积输入数据存入片内存储器。
7.根据权利要求1~3任一项所述集成芯片,其特征在于,所述输入缓存包含第一存储空间和第二存储空间,所述第一存储空间和所述第二存储空间分别用于存储数据;所述控制器将所述分段卷积核载入所述输入缓存包括:
在所述第二存储空间内的数据参与分段卷积运算结束后,所述控制器将所述第一存储空间内的数据移动到所述第二存储空间,然后将所述分段卷积核载入所述第一存储空间。
8.根据权利要求1所述集成芯片,其特征在于,所述集成芯片还包括:片内存储器;
所述片内存储器接收所述卷积输入数据和所述分段卷积核,或者,所述片内存储器接收所述卷积输入数据和所述卷积核。
9.一种卷积运算处理方法,其特征在于,包括:
将分段卷积核和分段卷积输入数据载入到输入缓存;所述分段卷积核为卷积核分段得到的数据,所述分段卷积输入数据为卷积输入数据分段得到的数据;
对所述分段卷积核和所述分段卷积输入数据进行分段卷积运算得到分段卷积结果,将所述分段卷积结果存储到输出缓存。
10.根据权利要求9所述方法,其特征在于,
所述分段卷积核对应的矩阵的行数和所述分段卷积输入数据对应的矩阵的列数与进行卷积运算的逻辑电路数量对应。
11.根据权利要求10所述方法,其特征在于,所述分段卷积核对应的矩阵的行数和所述分段卷积输入数据对应的矩阵的列数与进行卷积运算的逻辑电路数量对应包括:
所述分段卷积核对应的矩阵的行数小于或等于进行卷积运算的乘加器的数量;所述分段卷积输入数据对应的矩阵的列数小于或等于进行卷积运算的乘加器的数量。
12.根据权利要求9~11任一项所述方法,其特征在于,所述对所述分段卷积核和所述分段卷积输入数据进行分段卷积运算包括:
将所述分段卷积核转换为分段卷积核矩阵,将所述分段卷积输入数据转换为分段卷积输入矩阵;
将所述分段卷积输入矩阵作为乘数,将所述分段卷积核矩阵作为被乘数进行乘积运算。
13.根据权利要求12所述方法,其特征在于,所述将所述分段卷积结果存储到所述输出缓存包括:
将所述分段卷积结果与所述输出缓存内存储的数据累加后写入所述输出缓存。
14.根据权利要求13所述方法,其特征在于,所述方法还包括:
在所述卷积核的所有数据均参与分段卷积运算后,对所述输出缓存内存储的数据进行后处理计算,得到后处理卷积结果,对所述后处理卷积结果对应的矩阵进行转置运算,得到所述后处理卷积结果对应的矩阵的转置矩阵;
或者,在所述卷积核的所有数据均参与分段卷积运算后,对所述输出缓存内存储的数据对应的矩阵进行转置运算,得到所述输出缓存内存储的数据对应的矩阵的转置矩阵;
将所述转置矩阵对应的卷积结果作为卷积输入数据存入片内存储器。
15.根据权利要求10所述方法,其特征在于,在所述将分段卷积核和分段卷积输入数据载入到输入缓存之前,所述方法还包括:
接收所述卷积输入数据和所述分段卷积核,将所述卷积输入数据分段得到所述分段卷积数据;
或者,接收所述卷积输入数据和所述卷积核,将所述卷积输入数据分段得到所述分段卷积数据,将所述卷积核分段得到所述分段卷积核。
16.一种卷积运算处理装置,其特征在于,包括存储器和处理器,所述存储器用于存储程序指令,所述程序指令适于由所述处理器加载;
所述处理器,用于加载所述程序指令并执行如权利要求9~15任一项所述卷积运算处理方法。
17.一种存储介质,其特征在于,所述存储介质中存储有多条程序指令,所述程序指令适于由处理器加载并执行如权利要求9~15中任一项所述卷积运算处理方法。
CN201711283173.9A 2017-12-06 2017-12-06 卷积运算处理方法及相关产品 Active CN108304923B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201711283173.9A CN108304923B (zh) 2017-12-06 2017-12-06 卷积运算处理方法及相关产品
PCT/CN2018/116086 WO2019109795A1 (zh) 2017-12-06 2018-11-19 卷积运算处理方法及相关产品
US16/678,004 US11449576B2 (en) 2017-12-06 2019-11-08 Convolution operation processing method and related product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711283173.9A CN108304923B (zh) 2017-12-06 2017-12-06 卷积运算处理方法及相关产品

Publications (2)

Publication Number Publication Date
CN108304923A true CN108304923A (zh) 2018-07-20
CN108304923B CN108304923B (zh) 2022-01-18

Family

ID=62869725

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711283173.9A Active CN108304923B (zh) 2017-12-06 2017-12-06 卷积运算处理方法及相关产品

Country Status (3)

Country Link
US (1) US11449576B2 (zh)
CN (1) CN108304923B (zh)
WO (1) WO2019109795A1 (zh)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109146065A (zh) * 2018-09-30 2019-01-04 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN109508782A (zh) * 2018-10-09 2019-03-22 福州瑞芯微电子股份有限公司 基于神经网络深度学习的加速电路和方法
CN109542837A (zh) * 2018-11-30 2019-03-29 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109558564A (zh) * 2018-11-30 2019-04-02 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
WO2019109795A1 (zh) * 2017-12-06 2019-06-13 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
CN109886395A (zh) * 2019-03-06 2019-06-14 上海熠知电子科技有限公司 一种面向多核图像处理卷积神经网络的数据读取方法
CN109948787A (zh) * 2019-02-26 2019-06-28 山东师范大学 用于神经网络卷积层的运算装置、芯片及方法
CN110032538A (zh) * 2019-03-06 2019-07-19 上海熠知电子科技有限公司 一种数据读取系统和方法
CN110097174A (zh) * 2019-04-22 2019-08-06 西安交通大学 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置
CN110147347A (zh) * 2019-03-18 2019-08-20 腾讯科技(深圳)有限公司 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
WO2020029181A1 (zh) * 2018-08-09 2020-02-13 深圳鲲云信息科技有限公司 三维卷积神经网络计算装置及相关产品
CN110825311A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN111178508A (zh) * 2019-12-27 2020-05-19 珠海亿智电子科技有限公司 用于执行卷积神经网络中全连接层的运算装置及方法
CN111291864A (zh) * 2020-01-20 2020-06-16 Oppo广东移动通信有限公司 运算处理模组、神经网络处理器、电子设备及数据处理方法
WO2020125806A1 (en) * 2018-12-17 2020-06-25 Shanghai United Imaging Intelligence Co., Ltd. Systems and methods for image segmentation
WO2020156212A1 (zh) * 2019-01-28 2020-08-06 北京灵汐科技有限公司 一种数据处理的方法、装置及电子设备
CN111597029A (zh) * 2020-05-20 2020-08-28 上海商汤智能科技有限公司 数据处理方法及装置、电子设备和存储介质
CN111767246A (zh) * 2020-06-09 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
CN111767243A (zh) * 2020-06-09 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
CN111832717A (zh) * 2020-06-24 2020-10-27 上海西井信息科技有限公司 芯片结构及用于卷积计算的处理模块
WO2020253117A1 (zh) * 2019-06-19 2020-12-24 深圳云天励飞技术有限公司 一种数据处理方法及装置
CN112261308A (zh) * 2020-10-10 2021-01-22 深圳市海雀科技有限公司 一种具有片内模式识别的感光集成电路
CN112306555A (zh) * 2019-07-30 2021-02-02 北京百度网讯科技有限公司 并行提取多个卷积窗中的图像数据的方法、装置、设备以及计算机可读存储介质
CN112734024A (zh) * 2020-04-17 2021-04-30 神亚科技股份有限公司 用于执行卷积神经网络运算的处理装置与其操作方法
CN113222125A (zh) * 2020-01-21 2021-08-06 北京希姆计算科技有限公司 卷积运算方法及芯片
CN113344183A (zh) * 2021-06-03 2021-09-03 沐曦集成电路(上海)有限公司 一种在计算系统中实现卷积运算的方法及计算系统
CN113449852A (zh) * 2021-08-05 2021-09-28 安谋科技(中国)有限公司 卷积神经网络的计算方法、片上系统和电子设备
JP2022500786A (ja) * 2019-05-21 2022-01-04 深▲セン▼市商湯科技有限公司Shenzhen Sensetime Technology Co., Ltd. 情報処理方法及び装置、電子機器、記憶媒体及びコンピュータプログラム
CN114185014A (zh) * 2021-12-20 2022-03-15 北方工业大学 一种应用于雷达信号处理的并行卷积方法及装置
CN114969640A (zh) * 2022-06-02 2022-08-30 星宸科技股份有限公司 三维卷积运算装置与三维卷积运算方法
WO2023165054A1 (zh) * 2022-03-04 2023-09-07 奥比中光科技集团股份有限公司 一种卷积运算方法及装置和卷积核拆分方法及单元

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797345B2 (en) * 2019-04-30 2023-10-24 Prakash C R J Naidu Hardware accelerator for efficient convolution processing
TWI719512B (zh) * 2019-06-24 2021-02-21 瑞昱半導體股份有限公司 使用像素通道置亂的卷積神經網路的演算方法與系統
CN110673786B (zh) * 2019-09-03 2020-11-10 浪潮电子信息产业股份有限公司 数据缓存的方法和装置
CN112749783A (zh) * 2019-10-31 2021-05-04 嘉楠明芯(北京)科技有限公司 一种神经网络模型的量化方法、装置及计算机可读存储介质
US11216375B2 (en) * 2020-02-26 2022-01-04 Hangzhou Zhicun Intelligent Technology Co., Ltd. Data caching
CN111882028B (zh) * 2020-06-08 2022-04-19 北京大学深圳研究生院 用于卷积神经网络的卷积运算装置
US20220012587A1 (en) * 2020-07-09 2022-01-13 Shanghai Zhaoxin Semiconductor Co., Ltd. Convolution operation method and convolution operation device
CN114282660A (zh) * 2020-10-01 2022-04-05 意法半导体股份有限公司 用于管理卷积计算的方法和对应设备
CN112330524B (zh) * 2020-10-26 2024-06-18 沈阳上博智像科技有限公司 一种在图像跟踪系统中快速实现卷积的装置和方法
TWI740725B (zh) * 2020-11-20 2021-09-21 英業達股份有限公司 資料傳遞及合併的方法
CN113920045A (zh) * 2021-09-30 2022-01-11 昆仑芯(北京)科技有限公司 图像处理方法、装置、电子设备、存储介质和程序产品
CN114037054B (zh) * 2021-11-01 2025-04-29 青岛信芯微电子科技股份有限公司 一种数据处理方法、装置、芯片、设备及介质
CN115687228B (zh) * 2023-01-03 2023-05-02 中国科学院国家空间科学中心 一种基于PCIe总线的星载固态存储系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987928A (zh) * 2005-12-21 2007-06-27 北京航空航天大学 一种实时快速实现高斯模板卷积的装置
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN105631094A (zh) * 2015-12-18 2016-06-01 天津工业大学 基于分段线性循环卷积的一维左手材料Crank-Nicolson完全匹配层实现算法
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN107145939A (zh) * 2017-06-21 2017-09-08 北京图森未来科技有限公司 一种神经网络优化方法及装置
CN107239829A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种优化人工神经网络的方法
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458635B2 (en) * 2009-12-04 2013-06-04 Synopsys, Inc. Convolution computation for many-core processor architectures
US10725934B2 (en) * 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
CN106844294B (zh) * 2016-12-29 2019-05-03 华为机器有限公司 卷积运算芯片和通信设备
CN106951395B (zh) * 2017-02-13 2018-08-17 上海客鹭信息技术有限公司 面向压缩卷积神经网络的并行卷积运算方法及装置
CN108304923B (zh) * 2017-12-06 2022-01-18 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
US11586907B2 (en) * 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
CN110928576A (zh) * 2018-09-20 2020-03-27 中兴通讯股份有限公司 一种卷积神经网络的卷积处理方法、装置及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987928A (zh) * 2005-12-21 2007-06-27 北京航空航天大学 一种实时快速实现高斯模板卷积的装置
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN105631094A (zh) * 2015-12-18 2016-06-01 天津工业大学 基于分段线性循环卷积的一维左手材料Crank-Nicolson完全匹配层实现算法
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN107239829A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种优化人工神经网络的方法
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
CN107145939A (zh) * 2017-06-21 2017-09-08 北京图森未来科技有限公司 一种神经网络优化方法及装置

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019109795A1 (zh) * 2017-12-06 2019-06-13 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
US11449576B2 (en) 2017-12-06 2022-09-20 Tencent Technology (Shenzhen) Company Limited Convolution operation processing method and related product
WO2020029181A1 (zh) * 2018-08-09 2020-02-13 深圳鲲云信息科技有限公司 三维卷积神经网络计算装置及相关产品
CN110825311B (zh) * 2018-08-10 2023-04-18 昆仑芯(北京)科技有限公司 用于存储数据的方法和装置
CN110825311A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN109146065A (zh) * 2018-09-30 2019-01-04 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN109146065B (zh) * 2018-09-30 2021-06-08 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN109508782A (zh) * 2018-10-09 2019-03-22 福州瑞芯微电子股份有限公司 基于神经网络深度学习的加速电路和方法
CN109508782B (zh) * 2018-10-09 2022-05-24 瑞芯微电子股份有限公司 基于神经网络深度学习的加速电路和方法
CN109558564B (zh) * 2018-11-30 2022-03-11 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109542837A (zh) * 2018-11-30 2019-03-29 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109558564A (zh) * 2018-11-30 2019-04-02 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
WO2020125806A1 (en) * 2018-12-17 2020-06-25 Shanghai United Imaging Intelligence Co., Ltd. Systems and methods for image segmentation
WO2020156212A1 (zh) * 2019-01-28 2020-08-06 北京灵汐科技有限公司 一种数据处理的方法、装置及电子设备
CN109948787B (zh) * 2019-02-26 2021-01-08 山东师范大学 用于神经网络卷积层的运算装置、芯片及方法
CN109948787A (zh) * 2019-02-26 2019-06-28 山东师范大学 用于神经网络卷积层的运算装置、芯片及方法
CN110032538A (zh) * 2019-03-06 2019-07-19 上海熠知电子科技有限公司 一种数据读取系统和方法
CN109886395A (zh) * 2019-03-06 2019-06-14 上海熠知电子科技有限公司 一种面向多核图像处理卷积神经网络的数据读取方法
CN109886395B (zh) * 2019-03-06 2020-11-24 上海熠知电子科技有限公司 一种面向多核图像处理卷积神经网络的数据读取方法
CN110147347A (zh) * 2019-03-18 2019-08-20 腾讯科技(深圳)有限公司 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
CN110097174A (zh) * 2019-04-22 2019-08-06 西安交通大学 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置
CN110097174B (zh) * 2019-04-22 2021-04-20 西安交通大学 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置
JP7140912B2 (ja) 2019-05-21 2022-09-21 深▲セン▼市商湯科技有限公司 情報処理方法及び装置、電子機器、記憶媒体及びコンピュータプログラム
JP2022500786A (ja) * 2019-05-21 2022-01-04 深▲セン▼市商湯科技有限公司Shenzhen Sensetime Technology Co., Ltd. 情報処理方法及び装置、電子機器、記憶媒体及びコンピュータプログラム
WO2020253117A1 (zh) * 2019-06-19 2020-12-24 深圳云天励飞技术有限公司 一种数据处理方法及装置
CN112306555A (zh) * 2019-07-30 2021-02-02 北京百度网讯科技有限公司 并行提取多个卷积窗中的图像数据的方法、装置、设备以及计算机可读存储介质
CN112306555B (zh) * 2019-07-30 2025-07-04 昆仑芯(北京)科技有限公司 并行提取多个卷积窗中的图像数据的方法、装置、设备以及计算机可读存储介质
CN111178508A (zh) * 2019-12-27 2020-05-19 珠海亿智电子科技有限公司 用于执行卷积神经网络中全连接层的运算装置及方法
CN111178508B (zh) * 2019-12-27 2024-04-05 珠海亿智电子科技有限公司 用于执行卷积神经网络中全连接层的运算装置及方法
CN111291864B (zh) * 2020-01-20 2023-11-03 Oppo广东移动通信有限公司 运算处理模组、神经网络处理器、电子设备及数据处理方法
CN111291864A (zh) * 2020-01-20 2020-06-16 Oppo广东移动通信有限公司 运算处理模组、神经网络处理器、电子设备及数据处理方法
CN113222125A (zh) * 2020-01-21 2021-08-06 北京希姆计算科技有限公司 卷积运算方法及芯片
CN112734024A (zh) * 2020-04-17 2021-04-30 神亚科技股份有限公司 用于执行卷积神经网络运算的处理装置与其操作方法
CN111597029B (zh) * 2020-05-20 2024-03-22 上海商汤智能科技有限公司 数据处理方法及装置、电子设备和存储介质
CN111597029A (zh) * 2020-05-20 2020-08-28 上海商汤智能科技有限公司 数据处理方法及装置、电子设备和存储介质
CN111767243A (zh) * 2020-06-09 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
CN111767246B (zh) * 2020-06-09 2024-03-05 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
CN111767246A (zh) * 2020-06-09 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
CN111832717A (zh) * 2020-06-24 2020-10-27 上海西井信息科技有限公司 芯片结构及用于卷积计算的处理模块
CN112261308A (zh) * 2020-10-10 2021-01-22 深圳市海雀科技有限公司 一种具有片内模式识别的感光集成电路
CN113344183A (zh) * 2021-06-03 2021-09-03 沐曦集成电路(上海)有限公司 一种在计算系统中实现卷积运算的方法及计算系统
CN113449852B (zh) * 2021-08-05 2023-02-03 安谋科技(中国)有限公司 卷积神经网络的计算方法、片上系统和电子设备
CN113449852A (zh) * 2021-08-05 2021-09-28 安谋科技(中国)有限公司 卷积神经网络的计算方法、片上系统和电子设备
CN114185014B (zh) * 2021-12-20 2022-11-08 北方工业大学 一种应用于雷达信号处理的并行卷积方法及装置
CN114185014A (zh) * 2021-12-20 2022-03-15 北方工业大学 一种应用于雷达信号处理的并行卷积方法及装置
WO2023165054A1 (zh) * 2022-03-04 2023-09-07 奥比中光科技集团股份有限公司 一种卷积运算方法及装置和卷积核拆分方法及单元
CN114969640A (zh) * 2022-06-02 2022-08-30 星宸科技股份有限公司 三维卷积运算装置与三维卷积运算方法
CN114969640B (zh) * 2022-06-02 2025-06-20 星宸科技股份有限公司 三维卷积运算装置与三维卷积运算方法

Also Published As

Publication number Publication date
US20200074288A1 (en) 2020-03-05
WO2019109795A1 (zh) 2019-06-13
CN108304923B (zh) 2022-01-18
US11449576B2 (en) 2022-09-20

Similar Documents

Publication Publication Date Title
CN108304923A (zh) 卷积运算处理方法及相关产品
KR102443546B1 (ko) 행렬 곱셈기
US20220261615A1 (en) Neural network devices and methods of operating the same
CN111684473B (zh) 提高神经网络阵列的性能
KR102224510B1 (ko) 데이터 관리를 위한 시스템들 및 방법들
JP6905573B2 (ja) 計算装置と計算方法
CN108629406B (zh) 用于卷积神经网络的运算装置
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
CN108009627A (zh) 神经网络指令集架构
CN110766127B (zh) 神经网络计算专用电路及其相关计算平台与实现方法
CN107239824A (zh) 用于实现稀疏卷积神经网络加速器的装置和方法
CN107533667A (zh) 神经网络处理器中的向量计算单元
CN106951395A (zh) 面向压缩卷积神经网络的并行卷积运算方法及装置
CN107403117A (zh) 基于fpga的三维卷积器
CN109711533A (zh) 基于fpga的卷积神经网络模块
CN109446996B (zh) 基于fpga的人脸识别数据处理装置及处理方法
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
CN110765413B (zh) 矩阵求和结构及神经网络计算平台
CN109146065B (zh) 二维数据的卷积运算方法及装置
CN110147252A (zh) 一种卷积神经网络的并行计算方法及装置
CN114003201B (zh) 矩阵变换方法、装置及卷积神经网络加速器
JP2021517702A (ja) 効率的な畳み込みエンジン
Sreenivasulu et al. Efficient hardware implementation of 2d convolution on FPGA for image processing application
CN113688976A (zh) 一种神经网络加速方法、装置、设备及存储介质
Duan et al. Energy-efficient architecture for FPGA-based deep convolutional neural networks with binary weights

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
GR01 Patent grant
GR01 Patent grant