CN112766453A - 一种数据处理装置及数据处理方法 - Google Patents

一种数据处理装置及数据处理方法 Download PDF

Info

Publication number
CN112766453A
CN112766453A CN201911001878.6A CN201911001878A CN112766453A CN 112766453 A CN112766453 A CN 112766453A CN 201911001878 A CN201911001878 A CN 201911001878A CN 112766453 A CN112766453 A CN 112766453A
Authority
CN
China
Prior art keywords
calculation
row
unit
feature map
convolution
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
Application number
CN201911001878.6A
Other languages
English (en)
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.)
University of Science and Technology of China USTC
Huawei Technologies Co Ltd
Original Assignee
University of Science and Technology of China USTC
Huawei Technologies 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 University of Science and Technology of China USTC, Huawei Technologies Co Ltd filed Critical University of Science and Technology of China USTC
Priority to CN201911001878.6A priority Critical patent/CN112766453A/zh
Publication of CN112766453A publication Critical patent/CN112766453A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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

Landscapes

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

Abstract

本申请实施例公开了一种数据处理装置及数据处理方法,涉及图像处理领域,至少解决了现有技术中对于总线带宽以及片上存储空间要求高,计算效率低下的问题。具体方案为:将待处理的输入特征图从片外存储中传输到片上存储单元中,并依照计算的情况在计算阵列上进行初始化以及更新,同时在计算阵列是上进行卷积核权重数据的空间复用进行并行卷积计算。在完成一个输入特征图的所有卷积计算后再计算其他输入特征图的卷积计算,并将结果依次累加以获取输出特征图。

Description

一种数据处理装置及数据处理方法
技术领域
本申请涉及图像处理领域,尤其涉及一种数据处理装置及数据处理方法。
背景技术
目前,卷积神经网络已经被广泛应用于图像分类、视频处理、语音识别、数据分析等场景。而随着需要处理的对象数量(如需要处理的图像个数)以及复杂度(如需要处理的图像的特征图数据数量)的增加,对执行卷积神经网络模型的硬件架构(或者称为计算平台)的计算能力以及存储带宽提出了更高的要求。其中,基于传统的硬件架构,如中央处理器(central processing unit,CPU)的计算能力已经无法满足大型卷积神经网络推理的过程中对系统性能(如计算能力以及存储带宽)的要求。而对于具备较高计算能力的图形处理器(Graphics Processing Unit,GPU),由于其功耗较高,因而限制了GPU在卷积神经网络计算中的使用范围,如不能使用于低功耗、资源受限的硬件架构。
除此之外,为了适应不同场景的需求,卷积神经网络模型的种类也变得非常多样化。例如,不同的卷积神经网络模型具有不同大小的卷积核,以实现对应的卷积计算。这也就需要设计不同的硬件架构来实现不同场景下卷积神经网络的推理过程。
因此,需要设计一种硬件架构来适用于不同的场景下卷积神经网络的推理。
发明内容
本申请实施例提供一种数据处理装置及数据处理方法,至少解决了现有技术中对于总线带宽以及片上存储空间要求高,计算效率低下的问题,同时能够适配不同大小的卷积核。
为达到上述目的,本申请实施例提供如下技术方案:
第一方面,本申请提供一种通信方法,一种数据处理装置,该装置包括:片外存储单元,与片外存储单元连接的第一缓存单元,与片外存储单元连接的第二缓存单元,计算阵列,第三缓存单元,算术逻辑单元及调度单元。其中,计算阵列包括多个计算单元,多个计算单元包括R行C列,R行C列的计算单元在行方向和列方向上依次连接,R,C均为大于1的整数。第一缓存单元还与计算阵列的第1行计算单元的输入端连接。第二缓存单元还与计算阵列的所有计算单元的输入端连接。计算阵列的第R行计算单元的输出端与第三缓存单元连接。第三缓存单元还与算术逻辑单元的输入端连接。调度单元分别与片外存储单元,第一缓存单元,第二缓存单元,计算阵列,第三缓存单元及算术逻辑单元连接。片外存储单元,用于存储N个输入特征图及M个卷积核。N,M均为大于或等于1的整数。针对N个输入特征图中的每个输入特征图,调度单元执行以下操作以获得每个输入特征图与对应权重数据的卷积结果:调度单元,用于将第一输入特征图的特征图数据存储到第一缓存单元,将M个卷积核中与第一输入特征图对应的权重数据存储到第二缓存单元,第一输入特征图是N个输入特征图中的任意一个特征图。调度单元,还用于将第一缓存单元存储的第一输入特征图的特征图数据以1行C列为单位依次传输给计算阵列,并将第二缓存单元存储的权重数据映射到计算阵列,用于计算阵列中的计算单元进卷积计算,获得卷积结果并存储到第三缓存单元。算术逻辑单元,用于将第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,获得与M个卷积核对应的M个中间输出特征图。
采用上述技术方案,片上存储单元在一个时刻只需要存储一组待处理的特征图数据以及对应的权重数据,显著降低了输入特征图处理过程中对片上存储空间的要求。通过将特征图数据固定在计算阵列的计算单元上,并通过卷积窗口在计算阵列上滑动实现卷积计算的方法(或称为固定特征图数据的方法),能够支持任意大小的卷积核大小的卷积计算,即可以适配不同大小的卷积核。另外,通过采用以1行C列为单位依次将特征图数据更新到计算阵列中,实现了一个输入特征图和一个通道的计算不间断,显著地缩短了整个计算过程的耗时。
在一种可能的设计中,调度单元,用于将第一缓存单元中存储的第一输入特征图中前R行C列的特征图数据,从第1行中第1列至第C列的特征图数据开始,由计算阵列的第1行计算单元的输入端,以1行C列为单位通过级联的方式依次向下传递,以便将第一输入特征图的前R行C列的特征图数据依次传输给计算阵列的第R行至第1行的计算单元上进行卷积计算。其中,用于卷积计算的卷积核的步长为S,S为大于或等于1的整数。当针对第一输入特征图中前S行中第1列至第C列的特征图数据的卷积计算完成时,调度单元还用于控制计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行,并将第一缓存单元中存储的第一输入特征图的第R+1行至第R+S+1行中第1列至第C列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的前S行计算单元,依次类推,直到第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的传输到计算阵列的第1行计算单元,其中,H为第一输入特征图中包括的特征图数据的行数,H为大于R的整数。当针对第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的卷积计算完成时,调度单元还用于控制计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行。如果
Figure BDA0002241579410000021
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000022
列至第
Figure BDA0002241579410000023
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元;如果
Figure BDA0002241579410000024
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000025
列至第
Figure BDA0002241579410000026
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元。依次类推,直到第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到计算阵列的第1行计算单元,其中,L为第一输入特征图中包括的特征图数据的列数,K2为M个卷积核中的一个卷积核中与第一输入特征图对应的权重数据的列数,L为大于C的整数,K2为大于或等于1的整数。基于该方案,在一个输入特征图和一个通道的卷积计算中,该输入特征图的特征图数据只需要通过总线传输一次,其他传输过程均通过计算单元之间的级联实现,降低了计算过程中对总线带宽的要求。
在一种可能的设计中,调度单元,用于针对M个卷积核中的每个卷积核,执行以下操作以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果,第一通道与第一输入特征图对应:调度单元,用于将第二缓存单元存储的第一权重数据映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,以便第R-K1+1行到第R行的前K2列的计算单元根据第一权重数据进行卷积计算。当第R-K1+1行到第R行的前K2列的计算单元的卷积计算完成时,控制第一权重数据通过级联的方式向右传递S列,以便第R-K1+1行到第R行的第S列至第K2+S-1列的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元。第一权重数据是M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为M个卷积核中的一个卷积核的第一通道包括的权重数据的行数,K1为大于或等于1的整数。当第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,调度单元重新将第一权重数据映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,直到第一输入特征图的所有特征图数据与第一权重数据的卷积计算完成。基于该方案,通过将特征图数据固定在计算阵列的计算单元上,并通过卷积窗口在计算阵列上滑动实现卷积计算的方法(或称为固定特征图数据的方法),能够支持任意大小的卷积核大小的卷积计算,即可以适配不同大小的卷积核。
在一种可能的设计中,调度单元,用于针对M个卷积核中的每个卷积核,执行以下操作以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果,第一通道与第一输入特征图对应:调度单元,用于将第二缓存单元存储的第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000031
行至第R行中的第1列至第
Figure BDA0002241579410000032
列中,以便对应位置的计算单元根据第一权重数据进行卷积计算。当卷积计算完成时,控制重复映射到计算阵列的第一权重数据通过级联的方式向右传递S列,以便对应位置的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元。第一权重数据是M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为第一通道的权重数据的行数,K2为第一通道的权重数据的列数,K1,K2均为大于或等于1的整数。当第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,调度单元重新将第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000033
行至第R行中的第1列至第
Figure BDA0002241579410000034
列的计算单元中,直到第一输入特征图的所有特征图数据与第一权重数据的卷积计算完成。基于该方案,通过采用卷积窗口在计算阵列中空间复用进行卷积计算,减少了卷积计算过程中卷积窗口在计算阵列中滑动的次数,提升了计算阵列中计算单元的并行计算效率。
在一种可能的设计中,算术逻辑单元的输出端与片外存储单元连接。算术逻辑单元,还用于将第三缓存单元存储的M个中间输出特征图分别进行池化和/或激活处理。调度单元,还用于将处理后的中间输出特征图存储到片外存储单元。基于该方案,在完成卷积计算之后,还可以进行池化和/或激活的处理。
在一种可能的设计中,数据处理装置还包括:与算术逻辑单元的输出端连接的第四缓存单元,第四缓存单元还与调度单元连接。算术逻辑单元,还用于将第三缓存单元存储的M个中间输出特征图分别进行池化和/或激活处理,并将处理后的中间输出特征图存储至第四缓存单元。调度单元,还用于将第四缓存单元中存储的处理后的中间输出特征图存储到片外存储单元。基于该方案,当总线资源不足或片外存储单元忙碌使得处理后的结果无法直接传输到片外存储单元中时,可以先将该结果存储到第四缓存单元中,并在合适的时候将该结果传输到片外存储单元中。
在一种可能的设计中,第三缓存单元还与片外存储单元连接。调度单元,还用于将片外存储单元存储的N个输入特征图存储到第三缓存单元。算术逻辑单元,还用于对第三缓存单元中存储的N个输入特征图进行激活处理。调度单元,还用于将激活后的N个输入特征图存储到片外存储单元。基于该方案,能够支持对数据进行先激活后卷积的操作。
第二方面,本申请实施例还提供一种数据处理方法,应用于数据处理装置,该数据处理装置包括:片外存储单元,与片外存储单元连接的第一缓存单元,与片外存储单元连接的第二缓存单元,计算阵列,第三缓存单元,算术逻辑单元及调度单元。其中,计算阵列包括多个计算单元,多个计算单元包括R行C列,R行C列的计算单元在行方向和列方向上依次连接,R,C均为大于1的整数。第一缓存单元还与计算阵列的第1行计算单元的输入端连接。第二缓存单元还与计算阵列的所有计算单元的输入端连接。计算阵列的第R行计算单元的输出端与第三缓存单元连接。第三缓存单元还与算术逻辑单元的输入端连接。调度单元分别与片外存储单元,第一缓存单元,第二缓存单元,计算阵列,第三缓存单元及算术逻辑单元连接。该方法可以包括:片外存储单元存储N个输入特征图及M个卷积核。N,M均为大于或等于1的整数。针对N个输入特征图中的每个输入特征图,调度单元执行以下操作以获得每个输入特征图与对应通道的权重数据的卷积结果:调度单元将第一输入特征图的特征图数据存储到第一缓存单元,将M个卷积核中与第一输入特征图对应的权重数据存储到第二缓存单元,第一输入特征图是N个输入特征图中的任意一个特征图。调度单元将第一缓存单元存储的第一输入特征图的特征图数据以1行C列为单位依次传输给计算阵列,将第二缓存单元存储的权重数据映射到计算阵列,以便计算阵列中的计算单元进卷积计算,获得卷积结果并存储到第三缓存单元。算术逻辑单元将第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,获得与M个卷积核对应的M个中间输出特征图。
在一种可能的设计中,调度单元将第一缓存单元存储的第一输入特征图的所有特征图数据以1行C列为单位依次传输给计算阵列,包括:调度单元将第一缓存单元中存储的第一输入特征图中前R行C列的特征图数据,从第1行中第1列至第C列的特征图数据开始,由计算阵列的第1行计算单元的输入端,以1行C列为单位通过级联的方式依次向下传递,以便将第一输入特征图的前R行C列的特征图数据依次传输给计算阵列的第R行至第1行的计算单元上进行卷积计算。其中,用于卷积计算的卷积核的步长为S,S为大于或等于1的整数。当针对第一输入特征图中前S行中第1列至第C列的特征图数据的卷积计算完成时,调度单元控制计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行,并将第一缓存单元中存储的第一输入特征图的第R+1行至第R+S+1行中第1列至第C列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的前S行计算单元,依次类推,直到第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的传输到计算阵列的第1行计算单元,其中,H为第一输入特征图中包括的特征图数据的行数,H为大于R的整数。当针对第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的卷积计算完成时,调度单元控制计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行。如果
Figure BDA0002241579410000041
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000042
列至第
Figure BDA0002241579410000043
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元;如果
Figure BDA0002241579410000051
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000052
列至第
Figure BDA0002241579410000053
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元。依次类推,直到第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到计算阵列的第1行计算单元,其中,L为第一输入特征图中包括的特征图数据的列数,K2为M个卷积核中的一个卷积核中与第一输入特征图对应的权重数据的列数,L为大于C的整数,K2为大于或等于1的整数。
在一种可能的设计中,调度单元将第二缓存单元存储的权重数据映射到计算阵列,以便计算阵列中的计算单元进卷积计算,获得卷积结果,包括:
调度单元针对M个卷积核中的每个卷积核,执行以下操作以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果,第一通道与第一输入特征图对应:调度单元将第二缓存单元存储的第一权重数据映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,以便第R-K1+1行到第R行的前K2列的计算单元根据第一权重数据进行卷积计算。当第R-K1+1行到第R行的前K2列的计算单元的卷积计算完成时,控制第一权重数据通过级联的方式向右传递S列,以便第R-K1+1行到第R行的第S列至第K2+S-1列的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元。第一权重数据是M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为M个卷积核中的一个卷积核的第一通道包括的权重数据的行数,K1为大于或等于1的整数。当第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,调度单元重新将第一权重数据映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,直到第一输入特征图的所有特征图数据与第一权重数据的卷积计算完成。
在一种可能的设计中,调度单元将第二缓存单元存储的权重数据映射到计算阵列,以便计算阵列中的计算单元进卷积计算,获得卷积结果,包括:调度单元针对M个卷积核中的每个卷积核,执行以下操作以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果,第一通道与第一输入特征图对应:调度单元将第二缓存单元存储的第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000054
行至第R行中的第1列至第
Figure BDA0002241579410000055
列中,以便对应位置的计算单元根据第一权重数据进行卷积计算。当卷积计算完成时,控制重复映射到计算阵列的第一权重数据通过级联的方式向右传递S列,以便对应位置的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元。第一权重数据是M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为第一通道的权重数据的行数,K2为第一通道的权重数据的列数,K1,K2均为大于或等于1的整数。当第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,调度单元重新将第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000056
行至第R行中的第1列至第
Figure BDA0002241579410000057
列的计算单元中直到第一输入特征图的所有特征图数据与第一权重数据的卷积计算完成。
在一种可能的设计中,算术逻辑单元的输出端与片外存储单元连接。该方法还包括:算术逻辑单元将第三缓存单元存储的M个中间输出特征图分别进行池化和/或激活处理。调度单元将处理后的中间输出特征图存储到片外存储单元。
在一种可能的设计中,数据处理装置还包括:与算术逻辑单元的输出端连接的第四缓存单元,第四缓存单元还与调度单元连接。该方法还包括:算术逻辑单元将第三缓存单元存储的M个中间输出特征图分别进行池化和/或激活处理,并将处理后的中间输出特征图存储至第四缓存单元。调度单元将第四缓存单元中存储的处理后的中间输出特征图存储到片外存储单元。
在一种可能的设计中,第三缓存单元还与片外存储单元连接。该方法还包括:调度单元将片外存储单元存储的N个输入特征图存储到第三缓存单元。算术逻辑单元对第三缓存单元中存储的N个输入特征图进行激活处理。调度单元将激活后的N个输入特征图存储到片外存储单元。
需要说明的是,第二方面及其可能的设计可以一一对应到上述第一方面及其可能的设计中,其所带来的有益效果也一一对应,此处不再赘述。
附图说明
图1为本申请实施例提供的一种卷积神经网络的逻辑组成图;
图2为本申请实施例提供的一种输入特征图在该卷积层中进行卷积计算的逻辑示意图;
图3为本申请实施例提供的N个输入特征图与卷积核1进行卷积计算的过程示意图;
图4为现有技术提供的一种卷积神经网络的硬件架构示意图;
图5为本申请实施例提供的一种数据处理装置的架构示意图;
图6为本申请实施例提供的一种卷积计算的逻辑示意图;
图7为本申请实施例提供的又一种卷积计算的逻辑示意图;
图8为本申请实施例提供的又一种卷积计算的逻辑示意图;
图9为本申请实施例提供的一种数据初始化示意图;
图10为本申请实施例提供的一种卷积计算的方法示意图;
图11为本申请实施例提供的一种卷积窗口的滑动示意图;
图12为本申请实施例提供的一种权重数据空间复用的方法示意图;
图13为本申请实施例提供的一种数据更新的方法示意图;
图14为本申请实施例提供的又一种数据更新的方法示意图;
图15为本申请实施例提供的一种数据处理方法的流程示意图。
具体实施方式
卷积神经网络可以根据卷积神经网络模型参数,对各类数据进行处理。一般而言,卷积神经网络中,对数据的处理可以包括卷积、池化、激活等操作。
示例性的,请参考图1,为一种卷积神经网络的逻辑组成图。如图1所示,卷积神经网络可以包括多个逻辑层,分别为输入层,卷积层,池化和/或激活层及输出层。输入层可用于存储输入数据。输入层中存储的输入数据可以经过卷积层的卷积计算,池化和/或激活层的池化和/或激活的处理后,在输出层中得到经过卷积神经网络处理的输出数据。对输入数据的卷积计算及池化和/或激活处理可以是一次,也可以是多次。
其中,以输入数据为一个或多个输入特征图为例。卷积层中可以包括一个或多个卷积核,每个卷积核中可以包括一个或多个通道,每个通道都可以包括一个或多个权重数据。卷积核包括的通道与输入层中存储的输入特征图一一对应。输入特征图在该卷积层中进行卷积计算时,每个输入特征图上的特征图数据可以与每个卷积核中与该输入特征图对应的通道上的权重数据进行卷积计算。为了便于描述,本申请实施例中,该过程也可称为输入特征图与对应通道的卷积计算。一个卷积核的所有通道在与对应的输入特征图进行卷积计算后,可以获得与该卷积核的通道数相同数量的卷积结果,将这些卷积结果进行累加,可以获得采用该卷积核对输入特征图进行卷积计算的结果(或称为输出特征图)。对于该卷积层中的其他卷积核,也可以进行类似的计算,最终获得与卷积核数量相同数量的输出特征图。
示例性的,假设输入特征图的数量为N,卷积层中卷积核的数量为M,每个卷积核包括与N个输入特征图一一对应的N个通道。请参考图2,示出了输入特征图在该卷积层中进行卷积计算的逻辑示意图。如图2所示,该卷积层中包括的M个卷积核,分别用于与N个输入特征图进行卷积计算,以获得与卷积核对应的M个输出特征图。针对M个卷积核中的每个卷积核,请参考图3,示出了N个输入特征图与一个卷积核(如卷积核1)进行卷积计算的过程。如图3所示,输入特征图1与卷积核1中的通道1进行卷积计算,获得卷积结果1-1。输入特征图2与卷积核1中的通道2进行卷积计算,获得卷积结果2-1;依次类推,输入特征图N与卷积核1中的通道N进行卷积计算,获得卷积结果N-1。将上述卷积结果1-1至N-1累加,可以获得N个输入特征图与卷积核1卷积的结果,即获得输出特征图1。与之类似的,N个输入特征图还可以与其他卷积核分别进行卷积计算,以获得其他输出特征图,即获得输出特征图2,输出特征图3,…,输出特征图M。
可以理解的是,在进行卷积计算的过程中,需要进行大量的乘运算以及加运算。而随着输入特征图中包括的特征图数据量的增大,计算量以及中间数据量也会随之大幅增长,这就对承载该卷积计算的硬件架构的计算能力和片上存储能力提出了较高的要求。同时,不同的卷积神经网络模型的卷积核的大小也不同。因此,为了适用于不同类型的卷积神经网络模型的计算,该硬件架构也需要能够实现对不同大小的卷积核进行适配。
为了解决上述问题,在现有技术中可以将任意大小的卷积核分割成1×1的卷积模板,将这些使用分割后卷积模板分别计算出的结果累加即可得到与该卷积核对应的卷积结果。如图4所示,卷积计算的乘加运算可以通过多个计算单元组成的基础计算单元阵列实现。该基础单元阵列的互连结构可以由多级流水线构成:在行方向上,基础计算单元阵列共享输入特征图数据,通过使用不同的权重参数实现并行计算;在列方向上,基础计算单元阵列的计算结果逐行传递,作为下1行的输入参与运算。这样,在每个计算单元中依次完成卷积核中一个通道的所有卷积计算,并将该通道的卷积计算结果向下传递,每列基础计算单元就能够分别计算并输出一个输出特征图,实现一张特征图与多个不同卷积核的卷积计算的并行处理。
然而,在计算过程中,会产生大量的中间数据,都需要保存在片上存储空间中(如图4所示的寄存器),同时,每个计算周期都需要将特征图数据重复传输一次,这就要求较大的片上存储空间。由于输入特征图数据的数据量一般又非常大,在片上存储空间无法全部存下时,就需要每次计算都从片外存储空间(如图4所示的数据与参数片外缓存)中取数据,该过程均通过系统总线完成,就会对总线的带宽提出非常高的要求。另外,由于每个通道的所有卷积计算均在一个计算单元中进行,就会导致计算时间过长,计算效率低下的问题。
本申请实施例提供的数据处理装置,能够有效地减小对片上存储空间以及总线带宽的需求,提升卷积计算的计算效率,同时可以适配不同大小的卷积核。
请参考图5,为本申请实施例提供的一种数据处理装置的架构示意图。如图5所示,该数据处理装置可以包括片外存储单元,第一缓存单元,第二缓存单元,计算阵列,第三缓存单元,算术逻辑单元以及调度单元。
其中,计算阵列包括多个计算单元,如计算阵列包括R行C列计算单元。在计算阵列内部,R行C列计算单元可以通过二维级联的形式互相连接。R、C均为大于或等于1的整数。其中,第一缓存单元、第二缓存单元以及第三缓存单元均为设置在片上的存储单元。该硬件架构可以采用现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程阵列逻辑(Programmable Array Logic,PLA)和/或集成电路(如用于供专门应用的集成电路(Application Specific Integrated Circuit,ASIC))中的一种或多种方式实现。
在该架构中,如图5所示,片外存储单元可以分别与第一缓存单元和第二缓存单元连接。第一缓存单元还可以与计算阵列的第1行计算单元的输入端连接。第二缓存单元还可以与计算阵列中的每个计算单元连接。计算阵列中的第R行(即最后1行)的输出端还可以与第三缓存单元连接。第三缓存单元还可以与一个或多个算术逻辑单元的输入端连接。上述片外存储单元,第一缓存单元,第二缓存单元,包括R行C列计算单元的计算阵列,第三缓存单元以及算术逻辑单元均与调度单元连接。
进一步的,如图5所示,数据处理装置还可以包括第四缓存单元,一个或多个算术逻辑单元的输出端可通过第四缓存单元与片外存储单元连接。或者,一个或多个算术逻辑单元的输出端可以与片外存储单元连接(图5中未示出)。
基于上述如图5所示的数据处理装置可进行神经网络推理。具体的:片外存储单元存储有卷积神经网络模型参数(如权重数据和特征图数据等)。调度单元可将待计算的输入特征图的特征图数据存储至第一缓存单元,将与第一缓存单元中存储的特征图数据对应的不同卷积核的权重数据存储至第二缓存单元。调度单元可以将第一缓存单元中的特征图数据及第二缓存单元中不同卷积核的权重数据输入至计算阵列中。计算阵列的计算单元之间可以通过级联的方式在行方向和/或列方向上进行数据(如计算结果、特征图数据或权重数据)的传递及卷积计算,以获得不同卷积核的不同通道的卷积结果并存储在第三缓存单元中。算术逻辑单元可以将第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,便可获得与不同卷积核对应的中间输出特征图。
进一步的,算术逻辑单元还可以根据当前卷积神经网络模型的参数,对第三缓存单元中的中间输出特征图进行池化、激活等操作。调度单元还可将算术逻辑单元处理后的计算结果传输给片外存储单元或通过第四缓存单元传输给片外存储单元。
上述片外存储单元是一种具有存储功能的器件或设备。需要说明的是,图5所示的数据处理装置是以片外存储单元包括在该数据处理装置内为例示出的。在其他一些实施例中,上述片外存储单元也可以设置在上述数据处理装置之外,其可通过接口与上述数据处理装置进行数据交互置,本申请实施例在此不做限制。
以下结合图5所示的数据处理装置,对本申请的实施过程进行详细说明。
为了更加清楚的说明本申请实施例过程,以下以输入特征图为N个,每个输入特征图包括H行L列的特征图数据,用于卷积计算的卷积核为M个。其中,每个卷积核都有N个通道,每个卷积核的N个通道与N个输入特征图一一对应,每个通道包括K1行K2列的权重数据,每个卷积核的步长为S,计算阵列包括R行C列计算单元为例。其中,R,C,N,M,K1,K2以及S均为大于1的整数,H为大于R的整数,L为大于C的整数。
需要说明的是,N个输入特征图中不同输入特征图的行数和/或列数可以相同,也可以不同。M个卷积核中不同卷积核的大小和/或步长可以相同,也可以不同。在本实施例中,卷积核的大小可以采用卷积核包括的通道的权重数据的行数及列数表示。
在采用如图5所示的数据处理装置进行卷积神经网络计算时,可通过如下过程获得卷积计算的结果。如图6所示,数据处理装置可以对N个输入特征图中的任意一个(如输入特征图1),分别与M个卷积核中的每一个卷积核的与之对应的通道(如每一个卷积核的通道1)进行卷积计算,获取与每个卷积核的通道1卷积的M个卷积结果。如获取与卷积核1的通道1卷积的卷积结果1-1,与卷积核2的通道1卷积的卷积结果1-2,以及与卷积核N的通道1卷积的卷积结果1-N。之后,如图7所示,数据处理装置可以对N个输入特征图中的其他任意一个(如输入特征图2),分别与M个卷积核中的每一个卷积核的与之对应的通道(如每一个卷积核的通道2)进行卷积计算,获取与每个卷积核的通道2卷积的M个卷积结果。如获取与卷积核1的通道2卷积的卷积结果2-1,与卷积核2的通,2卷积的卷积结果2-2,以及与卷积核N的通道2卷积的卷积结果2-N。依次类推,直到数据处理装置完成所有N个输入特征图的每个输入特征图的对应卷积计算,获取M*N个卷积结果。如图8所示,接着数据处理装置可以将这些卷积结果中由同一卷积核的不同通道卷积得到的卷积结果进行累加,获取与卷积核对应的中间输出特征图。如,数据处理装置可以将卷积核1中的不同通道进行卷积计算获取的卷积结果1-1,卷积结果2-1直至卷积结果N-1进行累加,获取与卷积核1对应的中间输出特征图1;将卷积核2中的不同通道进行卷积计算获取的卷积结果1-2,卷积结果2-2直至卷积结果N-2进行累加,获取与卷积核2对应的中间输出特征图2;将卷积核M中的不同通道进行卷积计算获取的卷积结果1-M,卷积结果2-M直至卷积结果N-M进行累加,获取与卷积核M对应的中间输出特征图M。
以下结合附图对上述过程进行详细说明。
数据处理装置中,片外存储单元,用于存储上述N个输入特征图及M个卷积核。
针对片外存储单元存储的N个输入特征图中的每个输入特征图,调度单元可通过执行以下操作1-操作4,以获得每个输入特征图与对应通道的权重数据的卷积结果。
在本实施例中,调度单元可以作为该数据处理装置的控制中心,用于对卷积神经网络模型计算过程中的各个步骤进行控制。以下以N个输入特征图中的第一输入特征图为例,说明调度单元通过调度数据处理装置的各个单元模块,获得输入特征图与对应通道的权重数据的卷积结果的过程。第一输入特征图是N个输入特征图中的任意一个特征图,与第一输入特征图对应的通道称为第一通道。
操作1、调度单元用于将第一输入特征图的特征图数据存储到第一缓存单元,将M个卷积核中每个卷积核的第一通道的权重数据存储到第二缓存单元。
结合图5所示的架构,进行卷积神经网络推理所需的所有数据(如卷积神经网络模型的参数、特征图数据以及权重数据)均存储在具有较高存储能力的片外存储单元中。调度单元可以将待计算的特征图数据,如第一输入特征图的特征图数据,以及与该第一输入特征图对应通道,如第一通道的权重数据从片外存储单元存储到片上的存储单元。如,将第一输入特征图的特征图数据存储到第一缓存单元,将与该第一输入特征图对应通道的权重数据存储到第二缓存单元。
调度单元可将第一缓存单元和第二缓存单元中的数据传输给计算阵列,以便计算阵列的计算单元进行卷积计算,获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果。针对M个卷积核中的一个卷积核的第一通道与第一输入特征图的卷积过程,具体的,可以包括以下操作2和操作3。
操作2、调度单元用于将第一缓存单元存储的第一输入特征图的所有特征图数据以1行C列为单位依次从第一缓存单元中传输给计算阵列,用于计算阵列中的计算单元进卷积计算。
操作3、调度单元用于将第二缓存单元存储的M个卷积核中的每个卷积核的第一通道的权重数据映射到计算阵列的计算单元中,并进行卷积计算。
其中,调度单元可以以1行C列为单位依次将片上存储的第一输入特征图的特征图数据传输给计算阵列。
示例性的,调度单元可以将第一缓存单元中存储的第一输入特征图中前R行C列的特征图数据,从第1行中第1列至第C列的特征图数据开始,由计算阵列的第1行计算单元的输入端,以1行C列为单位通过级联的方式依次向下传递,以便将输入特征图的前R行C列的特征图数据铺满计算阵列,用于计算阵列的卷积计算。在本申请实施例中,可将输入特征图前R行C列的特征图数据铺满计算阵列的过程称为数据初始化。需要说明的是,在初始化完成时,第一输入特征图的前R行C列的特征图数据依次传输给计算阵列的第R行至第1行的计算单元上,也就是说,计算阵列的第R行计算单元上的特征图数据为第一输入特征图的第1行中第1列至第C列的特征图数据,计算阵列的第R-1行计算单元上的特征图数据为第一输入特征图的第2行中第1列至第C列的特征图数据,依次类推,计算阵列的第1行计算单元上的特征图数据为第一输入特征图的第R行中第1列至第C列的特征图数据。
例如,请参考图9,为本申请实施例提供的一种数据初始化示意图。以C=4为例,调度单元可将图9中的(a)所示输入特征图的第1行中第1列至第4列的特征图数据输入到计算阵列的第1行计算单元中,输入到计算阵列后的结果如图9中的(b)所示。输入特征图的第1行中第1列至第4列的特征图数据会在计算阵列中通过级联方式向下传递1行,其结果如图9中的(c)所示,输入特征图的第1行中第1列至第4列的特征图数据会被传递到计算阵列的第2行计算单元中。重复上述过程,直至这些特征图数据被传递到计算阵列的最后1行,即第R行,其结果如图9中的(d)所示。
在输入特征图的第1行中第1列至第4列的特征图数据以级联方式逐行向下传递的过程中,调度单元可将输入特征图的第2行中第1列至第4列的特征图数据按照如传输第1行特征数据的方式,传输给计算阵列,并在计算阵列中以级联方式逐行向下传递,直到输入特征图的第2行中第1列至第4列的特征图数据传递到计算阵列的倒数第2行(即第R-1行)。以此类推,直到将输入特征图的前第R行4列的特征图数据铺满计算阵列的计算单元,其结果如图9中的(e)所示。即,计算阵列的第R行计算单元上的特征图数据为第一输入特征图的第1行中第1列至第4列的特征图数据,计算阵列的第R-1行计算单元上的特征图数据为第一输入特征图的第2行中第1列至第4列的特征图数据,依次类推,计算阵列的第1行计算单元上的特征图数据为第一输入特征图的第R行中第1列至第4列的特征图数据。
在上述数据初始化过程中,调度单元还可以将第一输入特征图对应通道,即M个卷积核中每个卷积核的第一通道的权重数据分别映射到计算阵列中,也就是执行上述操作3。之后,可通过移动映射到计算阵列中的权重数据,对计算阵列中的特征图数据分别进行卷积计算。在本实施例中,可将移动映射到计算阵列中的权重数据的过程称为滑动卷积窗口。
以利用M个卷积核中的一个卷积核的第一通道与计算阵列中的特征图数据(即第一输入特征图的前R行C列的特征图数据)进行卷积计算为例,调度单元可以将第二缓存单元存储的该卷积核的第一通道的权重数据(如称为第一权重数据)映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,以便第R-K1+1行到第R行的前K2列的计算单元根据该第一权重数据进行卷积计算。当第R-K1+1行到第R行的前K2列的计算单元的卷积计算完成时,调度单元可控制第一权重数据通过级联的方式向右传递S列,以便第R-K1+1行到第R行的第S列至第K2+S-1列的计算单元根据该第一权重数据进行卷积计算,依次类推,直到该第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元,以便对应位置计算单元根据该第一权重数据进行卷积计算。
例如,以C=4,K1=K2=3,S=1,以Xijk表示第i个输入特征图中第j行第k列的特征图数据,以Wijk表示一个卷积核第i个通道第j行第k列的权重数据为例。在进行数据初始化后,计算阵列上后3行计算单元上的特征图数据分布如图10中的(a)所示。调度单元可以将第一权重数据映射到计算阵列中的后三行,即第R-2行至第R行中的第1列到第3列的计算单元上,第一权重数据的映射结果如图10中的(b)所示。X111所在的计算单元可以将该计算单元上的特征图数据与对应的权重数据进行乘运算,即该计算单元所做的计算为X111*W111,用R111表示X111*W111的乘结果。类似的该卷积窗口中的其他计算单元也可以执行进行对应数据的乘运算。这样,在该卷积窗口中的乘运算可以得到9个计算结果,分别为R111、R112、R113、R121、R122、R123、R131、R132以及R133,计算结果分布如图10中的(c)所示。在得到这些乘运算的结果后,再累加即可获得该卷积窗口对应的卷积计算的结果。
其中,本申请实施例中,每个计算单元均通过二维级联的方式连接。因此,卷积窗口中的每个计算结果都可以通过级联传递给下1行/列计算单元,作为下1行/列计算单元的输入数据。最终可获得该卷积窗口对应的卷积结果。示例性的,乘运算的计算结果的传递可以如图10中的(d)所示。如图10中的(d)所示,计算结果可以在该卷积窗口中,分别在行方向上向后传递,然后在最后1列向下传递。例如,R131可以被传递给该卷积窗口中第1行第2列的计算单元,由该计算单元将自身计算得到的R132与接收到的R131累加,得到R132+R131后传递给该卷积窗口中第1行第3列的计算单元。类似的,就可以在卷积窗口中,第3列计算单元上分别获得R131+R132+R133、R121+R122+R123以及R111+R112+R113。第3列第1行以及第2行的计算单元可以将对应的累加结果向下通过级联继续传递并由下一级计算单元累加。最终就可以在卷积窗口的第3行第3列的计算单元上获得R111+R112+R113+R121+R122+R123+R131+R132+R133的累加结果,即得到该卷积窗口对应的卷积结果。
当该卷积窗口在计算阵列中的后三行,即第R-2行至第R行中的第1列到第3列的计算单元上的卷积计算完成后,第一权重数据可以通过级联的方式向右传递1列,并进行卷积计算。示例性的,请参考图11。当卷积窗口在图11中的(a)所示的位置的卷积计算完成后,该卷积窗口中的每个权重数据可以通过级联的方式向右传递1列。传递后的卷积窗口以及第一权重数据的位置如图11中的(b)所示。该卷积窗口对应位置处的计算单元可以对相应位置的特征图数据进行卷积计算,计算过程与图10所示示例中的计算过程类似。重复上述操作,卷积窗口可以在行方向上以步长为单位滑动并进行卷积核计算,直至卷积窗口滑动到计算阵列的最右端并完成该位置的卷积计算。
以上示例是以一次性只映射一个卷积窗口到计算阵列上为例进行说明的。在本申请其他实施例中,还可以采用空间复用的方式进行权重数据的映射。示例性的,调度单元,用于将第二缓存单元存储的第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000121
行至第R行中的第1列至第
Figure BDA0002241579410000122
列中,以便计算阵列的第
Figure BDA0002241579410000123
行至第R行中的第1列至第
Figure BDA0002241579410000124
列中对应计算单元根据第一权重数据进行卷积计算;当卷积计算完成时,控制第一权重数据通过级联的方式向右传递S列,以便第
Figure BDA0002241579410000125
Figure BDA0002241579410000126
行到第R行中的第S+1列至第
Figure BDA0002241579410000127
列的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元,也就是说,调度单元可以一次性地将一个卷积窗口多次映射到计算阵列上的不同位置。例如,请参考图12,以C=11,K1=K2=3,S=1为例。可以将上述第一权重数据一次性地在计算阵列的后3行的不同位置映射3次,映射3次后的卷积窗口以及对应的权重数据如图12中的(a)所示。也就是说,在计算阵列的后3行上同时包含3个卷积窗口,使得在计算阵列中可进行并行计算,同时获得3个卷积窗口的计算结果。在获得每个卷积窗口对应的计算结果之后,对应卷积窗口中的权重数据可以向右通过级联传递1列,实现卷积窗口的滑动。如滑动后的卷积窗口以及对应的权重数据如图12中的(b)所示,以便对应位置的计算单元继续对后三行计算单元上的其他特征图数据进行卷积计算。直至最右端的卷积窗口滑动到计算阵列的最右端并完成该位置的卷积计算。
在经过上述计算过程后,针对第一输入特征图中前S行中第1列至第C列的特征图数据的卷积计算完成。如继续结合图10-图12所示示例,针对第一输入特征图中第1行中第1列至第C列的像素数据的卷积计算完成。
当针对第一输入特征图中前S行中第1列至第C列的像素数据的卷积计算完成时,调度单元可用于控制计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行,并将第一缓存单元中存储的第一输入特征图的第R+1行至第R+S+1行中第1列至第C列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的前S行计算单元,依次类推,直到第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的传输到计算阵列的第1行计算单元。
当针对第一输入特征图中前S行中第1列至第C列的特征图数据参与的卷积计算完成时,调度单元可以将第一输入特征图的其他特征图数据传输给计算阵列。本申请实施例中,该过程也可以称为对计算阵列上特征图数据的更新。示例性的,请参考图13,以C=4,卷积核的大小K1=K2=3,卷积核的步长S=1为例。在数据初始化完成时,通过调度单元的调度,如图13中的(a)所示的输入特征图中前R行4列的特征图数据被铺满计算阵列,其结果如图13中的(b)所示。在针对第一输入特征图中第1行中第1列至第4列的特征图数据的卷积计算完成时,调度单元可以控制计算阵列的第1行至第R-1行的计算单元中的特征图数据分别通过级联向下传递1行,将第R行计算单元中的特征图数据(即输入特征图的第1行前4列的特征图数据)淘汰。例如,如图13中的(b)所示,按照箭头1301所示的方向将原先计算阵列第1行上的特征图数据传递给第2行计算单元,以此类推,按照箭头1302所示的将原先计算阵列第R-1行上的特征图数据传递给第R行计算单元。调度单元还可以1行4列为单位,将第一输入特征图的第R+1行4列的特征图数据输入到计算阵列的第1行中,其结果如图13中的(c)所示。在完成对计算阵列中的特征图数据的更新之后,计算阵列后三行计算单元可以继续对更新后的计算阵列中的特征图数据进行卷积计算。其卷积计算过程与图10-图12所示示例中针对第一输入特征图中第1行中第1列至第C列的特征图数据的卷积计算过程类似,此处不再详细赘述。
这样,针对第一输入特征图中前2S行中第1列至第C列的特征图数据的卷积计算便完成。重复执行上述过程,计算阵列就可以不间断地对第一输入特征图中的第1行至第H-R+1行的前C列的特征数据进行卷积计算。
当针对第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的卷积计算完成时,调度单元还用于控制计算阵列中第1行至第R-S行计算单元上的特征图数据通过级联的方式向下传递S行,并视情况不同将第一缓存单元中存储的第一输入特征图其他特征图数据传输到计算阵列中。
示例性的,如果
Figure BDA0002241579410000131
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000132
列至第
Figure BDA0002241579410000133
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元;如果
Figure BDA0002241579410000134
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000135
至第
Figure BDA0002241579410000136
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元,依次类推,直到第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到计算阵列的第1行计算单元。
示例性的,请参考图14,以C=4,卷积核的大小K1=K2=3,卷积核的步长S=1为例。在第H-R+1行中第1列至第4列的特征图数据参与的卷积计算完成时,通过调度单元的调度,如图14中的(a)所示的输入特征图中后R行的第1列至第4列的特征图数据被铺满计算阵列,其结果如图14中的(b)所示。在针对该输入特征图中第H-R+1行中第1列至第4列的特征图数据的卷积计算完成时,调度单元可以控制计算阵列的第1行至第R-1行的计算单元中的特征图数据分别通过级联向下传递1行,将第R行计算单元中的特征图数据(即输入特征图的第H-R+1行前4列的特征图数据)淘汰。例如,如图14中的(b)所示,按照箭头1401所示的方向将原先计算阵列第1行上的特征图数据传递给第2行计算单元,以此类推,按照箭头1402所示的将原先计算阵列第R-1行上的特征图数据传递给第R行计算单元。调度单元还可以1行4列为单位,将输入特征图的第1行中第3列至第6列的特征图数据输入到计算阵列的第1行中。请参考图14中的(c),示出了输入特征图中包括第1行中第3列至第6列的特征图数据的部分,执行上述输入的操作的结果如图14中的(d)所示。在完成对计算阵列中的特征图数据的更新之后,计算阵列后三行计算单元可以继续对更新后的计算阵列中的特征图数据进行卷积计算。其卷积计算过程与图10-图12所示示例中针对第一输入特征图中第1行中第1列至第C列的特征图数据的卷积计算过程类似,此处不再详细赘述。依次类推,直到第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到计算阵列的第1行计算单元,并完成卷积计算。这样,第一输入特征图与一个卷积核的第一通道的卷积计算完成,以获得第一输入特征图中所有特征图数据与一个卷积核的第一通道对应的一个卷积结果。之后,可重新执行上述操作2和操作3,以便第一输入特征图与其他卷积核的第一通道进行卷积计算,以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果。
可以看到的是,随着卷积计算的进行,计算阵列中的数据一直是被铺满的,则在该第一输入特征图与一个通道(如一个卷积核的第一通道)的卷积计算过程中,无需再次进行数据初始化,提高了计算效率。
操作4、在获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果后,调度单元控制这些卷积结果通过计算阵列的第R行计算单元的输出端传输给第三缓存单元。
可以理解的是,一个卷积结果是由多个计算结果组成的。示例性的,每得到一个卷积窗口对应的计算结果,调度单元可以控制最后累加获得该计算结果的计算单元将该计算结果通过级联的方式向下传递,直至通过计算阵列的第R行计算单元的输出端输出给第三缓存单元。这样,在完成第一输入特征图与一个卷积核中的第一通道的全部计算后,第三缓存单元中就存储了一张完整的与该卷积过程对应的卷积结果。
类似的,在完成第一输入特征图与所有M个卷积核的第一通道的卷积计算后,可以对N个输入特征图中的其他特征图执行上述步骤1-步骤4,则针对每个输入特征图就可以获得M个卷积结果并存储在第三缓存单元中。
在将N个输入特征图中的每个输入特征图对应的M个卷积结果存储在第三缓存单元后,算术逻辑单元可用于将该第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,获得与M个卷积核对应的M个中间输出特征图。
根据上述说明,在第三缓存单元中存储了针对所有N个输入特征图中每个输入特征图对应的M个卷积结果,那么,调度单元可控制算术逻辑单元将所有卷积结果中,经过M个卷积核中同一卷积核不同通道卷积获得的卷积结果进行累加,以获得与该卷积核对应的中间输出特征图。
示例性的,以N=3,M=4,即输入特征图的数量为3,分别为:输入特征图1,输入特征图2和输入特征图3。卷积核的数量为4,分别为:卷积核1,卷积核2,卷积核3及卷积核4,每个卷积核包括3个通道,分别为通道1,通道2和通道3为例。在完成对3个输入特征图的卷积计算(即分别执行上述步骤1-步骤4)后,第三缓存单元中可以包括以下卷积结果:输入特征图1与卷积核1的通道1卷积获得的卷积结果1-1,输入特征图1与卷积核2的通道1卷积获得的卷积结果1-2,输入特征图1与卷积核3的通道1卷积获得的卷积结果1-3,输入特征图1与卷积核4的通道1卷积获得的卷积结果1-4;输入特征图2与卷积核1的通道2卷积获得的卷积结果2-1,输入特征图2与卷积核2的通道2卷积获得的卷积结果2-2,输入特征图2与卷积核3的通道2卷积获得的卷积结果2-3,输入特征图2与卷积核4的通道2卷积获得的卷积结果2-4;输入特征图3与卷积核1的通道3卷积获得的卷积结果3-1,输入特征图3与卷积核2的通道3卷积获得的卷积结果3-2,输入特征图3与卷积核3的通道3卷积获得的卷积结果3-3,输入特征图3与卷积核4的通道3卷积获得的卷积结果3。
算术逻辑单元在调度单元的控制下可以将卷积核1的通道1、通道2以及通道3参与计算的卷积结果1-1、卷积结果2-1以及卷积结果3-1进行累加,获得中间输出特征图1。该中间输出特征图1就是所有3个输入特征图经过卷积核1卷积计算后获得的中间输出特征图。类似的,算术逻辑单元可以将卷积核2的通道1、通道2以及通道3参与计算的卷积结果1-2、卷积结果2-2以及卷积结果3-2进行累加,获得中间输出特征图2。该中间输出特征图2就是所有3个输入特征图经过卷积核2卷积计算后获得的中间输出特征图。算术逻辑单元还可以将卷积核3的通道1、通道2以及通道3参与计算的卷积结果1-1、卷积结果2-1以及卷积结果3-1进行累加,获得中间特征图3。该中间特征图3就是所有3个输入特征图经过卷积核3卷积计算后获得的中间输出特征图。
上述实施例中,是以将N个输入特征图中的每个输入特征图对应的M个卷积结果均存储在第三缓存单元后,分别进行累加获得M个中间输出特征图为例进行说明的。在其他一些实施例中,由于不同输入特征图的卷积结果是依次输入到第三缓存单元中的,也就是说,第三缓存单元中会先存储完一个输入特征图与所有卷积核的对应通道的卷积结果,后再存储另一个输入特征图与所有卷积核对应的其他通道的卷积结果。因此,本申请实施例中,在第一输入特征图与M个卷积核的每个卷积核的第一通道完成卷积计算获得对应的M个卷积结果并存储在第三缓存单元中后,则当第三缓存单元接收到N个输入特征图的其他任一输入特征图与对应通道的卷积结果时,算术逻辑单元可以将存储的第一输入特征图的卷积结果与接收到的卷积结果进行累加,即同一卷积核中不同通道的卷积结果的累加过程也可以与卷积结果存入第三缓存单元中的过程同步。示例性的,继续以N=3,M=4为例。在输入特征图1参与的卷积计算完成后,第三缓存单元中可以存储有4个卷积核中所有卷积核的通道1对应的卷积结果。那么,在将输入特征图2与卷积核1的通道2的卷积结果传输给第三缓存单元时,算术逻辑单元可以将该卷积结果与已经存储在第三缓存单元中的输入特征图1与卷积核1的通道1的卷积结果进行累加,并将累加结果替换输入特征图1与卷积核1通道1的卷积。这样,在输入特征图2参与的卷积计算完成后,第三缓存单元中存储的就是4个卷积核中每个卷积核的通道1与该卷积核的通道2累加得到的4个卷积结果。也就是说,在第三缓存单元中,只需同时保存与卷积核数量相同的M个中间输出特征图。这样能够显著地减小对第三缓存单元的容量要求,进而减小对片上存储空间的要求。在完成所有卷积结果的累加后,在第三缓存单元中就存储了N个输入特征图与M个卷积核卷积计算后获取的M个中间输出特征图。
当需要对上述第三缓存单元中存储的M个中间输出特征图进行激活和/或池化等操作时,算术逻辑单元,还可以用于在调度单元的控制下,对第三缓存单元中存储的M个中间输出特征图执行对应的激活和/或池化操作,并将该输出的结果传输给片外存储单元,或通过第四缓存单元传输给片外存储单元。
上述示例中,均是以卷积神经网络的计算为先卷积后激活为例进行说明的。在另一些实施例中,图5所示的数据处理装置还可用于支持先激活后卷积的卷积神经网络计算。示例性的,调度单元可以将输入特征图从片外存储单元存入第三缓存单元。算术逻辑单元可以在调度单元的的控制下,对存储在第三缓存单元中的输入特征图进行激活操作。例如,该激活操作可以为使用Relu函数进行的非线性计算。在获取激活操作后的结果(如激活后的输入特征图)后,算术逻辑单元可以将这些激活后的输入特征图传输到片外存储单元,或者通过第四缓存单元传输到片外存储单元。而这些存储到片外存储单元中的激活后的输入特征图,可以在调度单元的控制下,传输到片上的存储空间(如第一缓存单元)中,以便执行上述示例中的卷积计算。
需要说明的是,上述示例中,是以调度单元存入第一缓存单元的输入特征图为一个完整的输入特征图为例进行说明的。在另一些实施例中,调度单元还可以将N个输入特征图根据计算阵列的资源情况进行划分后,再将划分后的待计算特征图数据存入第一缓存单元。例如,当第一输入特征图的数据量较大时(如大于第一缓存单元的存储能力),调度单元可以对第一输入特征图进行划分,得到多个数据量相对较小的特征图,将这些相对较小的特征图中的每一个都作为一个待计算的特征图,并依次存入第一缓存单元中,分别执行上述计算。又如,当输入特征图的数据量较小时,调度单元可以一次性地将多个输入特征图存入第一缓存单元中,以便减少片上的存储单元与片外的存储单元之间的数据交互次数。
采用上述技术方案,片上存储单元在一个时刻只需要存储一组待处理的特征图数据以及对应的权重数据,显著降低了输入特征图处理过程中对片上存储空间的要求。在一个输入特征图和一个通道的卷积计算中,该输入特征图的特征图数据只需要通过总线传输一次,其他传输过程均通过计算单元之间的级联实现,降低了计算过程中对总线带宽的要求。通过将特征图数据固定在计算阵列的计算单元上,并通过卷积窗口在计算阵列上滑动实现卷积计算的方法(或称为固定特征图数据的方法),能够支持任意大小的卷积核大小的卷积计算,即可以适配不同大小的卷积核。另外,通过采用以1行C列为单位依次将特征图数据更新到计算阵列中,实现了一个输入特征图和一个通道的计算不间断,显著地缩短了整个计算过程的耗时。
另外,在一个时刻只需存储与卷积核数量(即输出特征图的数量)相同数量的卷积结果,进一步的降低了输入特征图处理过程中对片上存储空间的要求。通过采用卷积窗口在计算阵列中空间复用进行卷积计算,减少了卷积计算过程中卷积窗口在计算阵列中滑动的次数,提升了计算阵列中计算单元的并行计算效率。
本申请实施例还提供一种数据处理方法,该方法可以应用于上述图5数据处理装置。基于该数据处理方法,能够有效地减小对片上存储空间以及总线带宽的需求,提升卷积计算的计算效率,同时可以适配不同大小的卷积核。
为了更加清楚的说明本申请实施例过程,以下以输入特征图为N个,每个输入特征图包括H行L列的特征图数据,用于卷积计算的卷积核为M个。其中,每个卷积核都有N个通道,每个卷积核的N个通道与N个输入特征图一一对应,每个通道包括K1行K2列的权重数据,每个卷积核的步长为S,计算阵列包括R行C列计算单元为例。其中,R,C,N,M,K1,K2以及S均为大于1的整数,H为大于R的整数,L为大于C的整数。如图15所示,该数据处理方法可以包括S1501-S1503。
S1501、调度单元将第一输入特征图的特征图数据存储到第一缓存单元,将M个卷积核中与第一输入特征图对应的权重数据存储到第二缓存单元,第一输入特征图是N个输入特征图中的任意一个特征图。
示例性的,调度单元可以将M个卷积核中每个卷积核的第一通道的权重数据存储到第二缓存单元,第一通道与第一输入特征图对应。
S1502、调度单元将第一缓存单元存储的第一输入特征图的特征图数据以1行C列为单位依次传输给计算阵列,将第二缓存单元存储的权重数据映射到计算阵列,以便计算阵列中的计算单元进卷积计算,获得卷积结果并存储到第三缓存单元。
示例性的,调度单元将第一缓存单元中存储的第一输入特征图中前R行C列的特征图数据,从第1行中第1列至第C列的特征图数据开始,由计算阵列的第1行计算单元的输入端,以1行C列为单位通过级联的方式依次向下传递,以便将第一输入特征图的前R行C列的特征图数据依次传输给计算阵列的第R行至第1行的计算单元上进行卷积计算。其中,用于卷积计算的卷积核的步长为S,S为大于或等于1的整数。
当针对第一输入特征图中前S行中第1列至第C列的特征图数据的卷积计算完成时,调度单元控制计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行,并将第一缓存单元中存储的第一输入特征图的第R+1行至第R+S+1行中第1列至第C列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的前S行计算单元,依次类推,直到第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的传输到计算阵列的第1行计算单元,其中,H为第一输入特征图中包括的特征图数据的行数,H为大于R的整数。
当针对第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的卷积计算完成时,调度单元控制计算阵列中第1行至第R-S行的特征图数据通过级联向下传递S行。
如果
Figure BDA0002241579410000171
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000172
列至第
Figure BDA0002241579410000173
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元。
如果
Figure BDA0002241579410000174
则将第一缓存单元中存储的第一输入特征图的第1行中第
Figure BDA0002241579410000175
列至第
Figure BDA0002241579410000176
列的特征图数据通过计算阵列的第1行计算单元的输入端传输到计算阵列的第1行计算单元。
依次类推,直到第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到计算阵列的第1行计算单元,其中,L为第一输入特征图中包括的特征图数据的列数,K2为M个卷积核中的一个卷积核中与第一输入特征图对应的权重数据的列数,L为大于C的整数,K2为大于或等于1的整数。
调度单元针对M个卷积核中的每个卷积核,执行以下操作以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果,第一通道与第一输入特征图对应:
调度单元将第二缓存单元存储的第一权重数据映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,以便第R-K1+1行到第R行的前K2列的计算单元根据第一权重数据进行卷积计算。当第R-K1+1行到第R行的前K2列的计算单元的卷积计算完成时,控制第一权重数据通过级联的方式向右传递S列,以便第R-K1+1行到第R行的第S列至第K2+S-1列的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元。第一权重数据是M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为M个卷积核中的一个卷积核的第一通道包括的权重数据的行数,K1为大于或等于1的整数。
当第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,调度单元重新将第一权重数据映射到计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,直到第一输入特征图的所有特征图数据与第一权重数据的卷积计算完成。
以上示例中,是以一次在计算阵列上映射一个卷积窗口为例进行说明的,本申请的另一些实施例中,还可以一次在计算阵列上映射多个卷积窗口,以便计算阵列可以同时对多个卷积窗口进行卷积计算。
示例性的,调度单元针对M个卷积核中的每个卷积核,执行以下操作以获得第一输入特征图中所有特征图数据与M个卷积核的第一通道一一对应的M个卷积结果,第一通道与第一输入特征图对应:
调度单元将第二缓存单元存储的第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000181
Figure BDA0002241579410000182
行至第R行中的第1列至第
Figure BDA0002241579410000183
列中,以便对应位置的计算单元根据第一权重数据进行卷积计算。当卷积计算完成时,控制重复映射到计算阵列的第一权重数据通过级联的方式向右传递S列,以便对应位置的计算单元根据第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元。第一权重数据是M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为第一通道的权重数据的行数,K2为第一通道的权重数据的列数,K1,K2均为大于或等于1的整数。
当第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,调度单元重新将第一权重数据重复映射到计算阵列的第
Figure BDA0002241579410000184
行至第R行中的第1列至第
Figure BDA0002241579410000185
列的计算单元中,直到第一输入特征图的所有特征图数据与第一权重数据的卷积计算完成。
S1503、算术逻辑单元将第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,获得与M个卷积核对应的M个中间输出特征图。
本申请实施例中,当需要对上述中间输出特征图进行其他处理(如池化和/或激活的处理)时,算术逻辑单元可以将第三缓存单元存储的M个中间输出特征图分别进行池化和/或激活处理。调度单元可以将处理后的中间输出特征图存储到片外存储单元。
需要说明的是,调度单元将处理后的中间输出特征图通过总线存储到片外存储单元的过程中,可能由于总线资源不足或片外存储单元忙碌造成存储过程受阻的问题,因此,本申请实施例中,调度单元还可通过在数据处理装置中设置的第四缓存单元,缓存处理后的中间输出特征图,并在总线资源以及片外存储单元允许的情况下,将处理后的中间输出特征图存储到片外存储单元中。即算术逻辑单元将第三缓存单元存储的M个中间输出特征图分别进行池化和/或激活处理。调度单元将处理后的中间输出特征图通过第四缓存单元存储到片外存储单元。
上述示例中,均是以卷积神经网络的计算为先卷积后激活为例进行说明的。在另一些实施例中,该数据处理方法还可用于支持先激活后卷积的卷积神经网络计算。示例性的,调度单元可以将输入特征图从片外存储单元存入第三缓存单元。算术逻辑单元可以在调度单元的的控制下,对存储在第三缓存单元中的输入特征图进行激活操作。在获取激活操作后的结果(如激活后的输入特征图)后,算术逻辑单元可以将这些激活后的输入特征图传输到片外存储单元,或者通过第四缓存单元传输到片外存储单元。而这些存储到片外存储单元中的激活后的输入特征图,可以在调度单元的控制下,传输到片上的存储空间(如第一缓存单元)中,以便执行上述示例中的卷积计算。
可以理解的是,上述图15所示出的数据处理方法的各个步骤,均可对应到上述针对数据处理装置的功能说明过程中,其有益效果类似,此处不再赘述。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

Claims (14)

1.一种数据处理装置,其特征在于,包括:片外存储单元,与所述片外存储单元连接的第一缓存单元,与所述片外存储单元连接的第二缓存单元,计算阵列,第三缓存单元,算术逻辑单元及调度单元;
其中,所述计算阵列包括多个计算单元,所述多个计算单元包括R行C列,所述R行C列的计算单元在行方向和列方向上依次连接,R,C均为大于1的整数;所述第一缓存单元还与所述计算阵列的第1行计算单元的输入端连接;所述第二缓存单元还与所述计算阵列的所有计算单元的输入端连接;所述计算阵列的第R行计算单元的输出端与所述第三缓存单元连接;所述第三缓存单元还与所述算术逻辑单元的输入端连接;所述调度单元分别与所述片外存储单元,所述第一缓存单元,所述第二缓存单元,所述计算阵列,所述第三缓存单元及所述算术逻辑单元连接;
所述片外存储单元,用于存储N个输入特征图及M个卷积核;N,M均为大于或等于1的整数;
针对所述N个输入特征图中的每个输入特征图,所述调度单元执行以下操作以获得每个输入特征图与对应权重数据的卷积结果:
所述调度单元,用于将第一输入特征图的特征图数据存储到所述第一缓存单元,将所述M个卷积核中与第一输入特征图对应的权重数据存储到所述第二缓存单元,所述第一输入特征图是所述N个输入特征图中的任意一个特征图;
所述调度单元,还用于将所述第一缓存单元存储的所述第一输入特征图的特征图数据以1行C列为单位依次传输给所述计算阵列,并将所述第二缓存单元存储的权重数据映射到所述计算阵列,用于所述计算阵列中的计算单元进卷积计算,获得卷积结果并存储到所述第三缓存单元;
所述算术逻辑单元,用于将所述第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,获得与M个卷积核对应的M个中间输出特征图。
2.根据权利要求1所述的数据处理装置,其特征在于,
所述调度单元,用于将所述第一缓存单元中存储的所述第一输入特征图中前R行C列的特征图数据,从第1行中第1列至第C列的特征图数据开始,由所述计算阵列的第1行计算单元的输入端,以1行C列为单位通过级联的方式依次向下传递,以便将所述第一输入特征图的前R行C列的特征图数据依次传输给所述计算阵列的第R行至第1行的计算单元上进行卷积计算;其中,用于卷积计算的卷积核的步长为S,S为大于或等于1的整数;
当针对所述第一输入特征图中前S行中第1列至第C列的特征图数据的卷积计算完成时,所述调度单元还用于控制所述计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行,并将所述第一缓存单元中存储的所述第一输入特征图的第R+1行至第R+S+1行中第1列至第C列的特征图数据通过所述计算阵列的第1行计算单元的输入端传输到所述计算阵列的前S行计算单元,依次类推,直到所述第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的传输到所述计算阵列的第1行计算单元,其中,H为所述第一输入特征图中包括的特征图数据的行数,H为大于R的整数;
当针对所述第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的卷积计算完成时,所述调度单元还用于控制所述计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行;
如果
Figure FDA0002241579400000021
则将所述第一缓存单元中存储的所述第一输入特征图的第1行中第
Figure FDA0002241579400000022
列至第
Figure FDA0002241579400000023
列的特征图数据通过所述计算阵列的第1行计算单元的输入端传输到所述计算阵列的第1行计算单元;
如果
Figure FDA0002241579400000024
则将所述第一缓存单元中存储的所述第一输入特征图的第1行中第
Figure FDA0002241579400000025
列至第
Figure FDA0002241579400000026
列的特征图数据通过所述计算阵列的第1行计算单元的输入端传输到所述计算阵列的第1行计算单元;
依次类推,直到所述第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到所述计算阵列的第1行计算单元,其中,L为所述第一输入特征图中包括的特征图数据的列数,K2为所述M个卷积核中的一个卷积核中与第一输入特征图对应的权重数据的列数,L为大于C的整数,K2为大于或等于1的整数。
3.根据权利要求1或2所述的数据处理装置,其特征在于,
所述调度单元,用于针对所述M个卷积核中的每个卷积核,执行以下操作以获得所述第一输入特征图中所有特征图数据与所述M个卷积核的第一通道一一对应的M个卷积结果,所述第一通道与所述第一输入特征图对应:
所述调度单元,用于将所述第二缓存单元存储的第一权重数据映射到所述计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,以便所述第R-K1+1行到第R行的前K2列的计算单元根据所述第一权重数据进行卷积计算;当所述第R-K1+1行到第R行的前K2列的计算单元的卷积计算完成时,控制所述第一权重数据通过级联的方式向右传递S列,以便所述第R-K1+1行到第R行的第S列至第K2+S-1列的计算单元根据所述第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元;所述第一权重数据是所述M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为所述M个卷积核中的一个卷积核的第一通道包括的权重数据的行数,K1为大于或等于1的整数;
当所述第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,所述调度单元重新将所述第一权重数据映射到所述计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,直到所述第一输入特征图的所有特征图数据与所述第一权重数据的卷积计算完成。
4.根据权利要求1或2所述的数据处理装置,其特征在于,
所述调度单元,用于针对所述M个卷积核中的每个卷积核,执行以下操作以获得所述第一输入特征图中所有特征图数据与所述M个卷积核的第一通道一一对应的M个卷积结果,所述第一通道与所述第一输入特征图对应:
所述调度单元,用于将所述第二缓存单元存储的第一权重数据重复映射到所述计算阵列的第
Figure FDA0002241579400000027
行至第R行中的第1列至第
Figure FDA0002241579400000028
列中,以便对应位置的计算单元根据所述第一权重数据进行卷积计算;当卷积计算完成时,控制重复映射到所述计算阵列的所述第一权重数据通过级联的方式向右传递S列,以便对应位置的计算单元根据所述第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元;所述第一权重数据是所述M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为所述第一通道的权重数据的行数,K2为所述第一通道的权重数据的列数,K1,K2均为大于或等于1的整数;
当所述第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,所述调度单元重新将所述第一权重数据重复映射到所述计算阵列的第
Figure FDA0002241579400000031
行至第R行中的第1列至第
Figure FDA0002241579400000032
列的计算单元中,直到所述第一输入特征图的所有特征图数据与所述第一权重数据的卷积计算完成。
5.根据权利要求1-4中任一项所述的数据处理装置,其特征在于,所述算术逻辑单元的输出端与所述片外存储单元连接;
所述算术逻辑单元,还用于将所述第三缓存单元存储的所述M个中间输出特征图分别进行池化和/或激活处理;
所述调度单元,还用于将处理后的中间输出特征图存储到所述片外存储单元。
6.根据权利要求1-5中任一项所述的数据处理装置,其特征在于,所述数据处理装置还包括:与所述算术逻辑单元的输出端连接的第四缓存单元,所述第四缓存单元还与所述调度单元连接;
所述算术逻辑单元,还用于将所述第三缓存单元存储的所述M个中间输出特征图分别进行池化和/或激活处理,并将处理后的中间输出特征图存储至所述第四缓存单元;
所述调度单元,还用于将所述第四缓存单元中存储的处理后的中间输出特征图存储到所述片外存储单元。
7.根据权利要求1-6中任一项所述的数据处理装置,其特征在于,所述第三缓存单元还与所述片外存储单元连接;
所述调度单元,还用于将所述片外存储单元存储的所述N个输入特征图存储到所述第三缓存单元;
所述算术逻辑单元,还用于对所述第三缓存单元中存储的所述N个输入特征图进行激活处理;
所述调度单元,还用于将激活后的所述N个输入特征图存储到所述片外存储单元。
8.一种数据处理方法,其特征在于,应用于数据处理装置,所述数据处理装置包括:片外存储单元,与所述片外存储单元连接的第一缓存单元,与所述片外存储单元连接的第二缓存单元,计算阵列,第三缓存单元,算术逻辑单元及调度单元;
其中,所述计算阵列包括多个计算单元,所述多个计算单元包括R行C列,所述R行C列的计算单元在行方向和列方向上依次连接,R,C均为大于1的整数;所述第一缓存单元还与所述计算阵列的第1行计算单元的输入端连接;所述第二缓存单元还与所述计算阵列的所有计算单元的输入端连接;所述计算阵列的第R行计算单元的输出端与所述第三缓存单元连接;所述第三缓存单元还与所述算术逻辑单元的输入端连接;所述调度单元分别与所述片外存储单元,所述第一缓存单元,所述第二缓存单元,所述计算阵列,所述第三缓存单元及所述算术逻辑单元连接;
所述方法包括:
所述片外存储单元存储N个输入特征图及M个卷积核;N,M均为大于或等于1的整数;
针对所述N个输入特征图中的每个输入特征图,所述调度单元执行以下操作以获得每个输入特征图与对应通道的权重数据的卷积结果:
所述调度单元将第一输入特征图的特征图数据存储到所述第一缓存单元,将所述M个卷积核中与第一输入特征图对应的权重数据存储到所述第二缓存单元,所述第一输入特征图是所述N个输入特征图中的任意一个特征图;
所述调度单元将所述第一缓存单元存储的所述第一输入特征图的特征图数据以1行C列为单位依次传输给所述计算阵列,将所述第二缓存单元存储的权重数据映射到所述计算阵列,以便所述计算阵列中的计算单元进卷积计算,获得卷积结果并存储到所述第三缓存单元;
所述算术逻辑单元将所述第三缓存单元中的相同卷积核的不同通道对应的卷积结果进行累加,获得与M个卷积核对应的M个中间输出特征图。
9.根据权利要求8所述的数据处理方法,其特征在于,所述调度单元将所述第一缓存单元存储的所述第一输入特征图的所有特征图数据以1行C列为单位依次传输给所述计算阵列,包括:
所述调度单元将所述第一缓存单元中存储的所述第一输入特征图中前R行C列的特征图数据,从第1行中第1列至第C列的特征图数据开始,由所述计算阵列的第1行计算单元的输入端,以1行C列为单位通过级联的方式依次向下传递,以便将所述第一输入特征图的前R行C列的特征图数据依次传输给所述计算阵列的第R行至第1行的计算单元上进行卷积计算;其中,用于卷积计算的卷积核的步长为S,S为大于或等于1的整数;
当针对所述第一输入特征图中前S行中第1列至第C列的特征图数据的卷积计算完成时,所述调度单元控制所述计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行,并将所述第一缓存单元中存储的所述第一输入特征图的第R+1行至第R+S+1行中第1列至第C列的特征图数据通过所述计算阵列的第1行计算单元的输入端传输到所述计算阵列的前S行计算单元,依次类推,直到所述第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的传输到所述计算阵列的第1行计算单元,其中,H为所述第一输入特征图中包括的特征图数据的行数,H为大于R的整数;
当针对所述第一输入特征图中第H-R+1行中第1列至第C列的特征图数据的卷积计算完成时,所述调度单元控制所述计算阵列中第1行至第R-S行的特征图数据通过级联的方式向下传递S行;
如果
Figure FDA0002241579400000041
则将所述第一缓存单元中存储的所述第一输入特征图的第1行中第
Figure FDA0002241579400000042
列至第
Figure FDA0002241579400000043
列的特征图数据通过所述计算阵列的第1行计算单元的输入端传输到所述计算阵列的第1行计算单元;
如果
Figure FDA0002241579400000044
则将所述第一缓存单元中存储的所述第一输入特征图的第1行中第
Figure FDA0002241579400000045
列至第
Figure FDA0002241579400000046
列的特征图数据通过所述计算阵列的第1行计算单元的输入端传输到所述计算阵列的第1行计算单元;
依次类推,直到所述第一输入特征图中第H-R+1行中第L-C+1列至第L列的特征图数据的传输到所述计算阵列的第1行计算单元,其中,L为所述第一输入特征图中包括的特征图数据的列数,K2为所述M个卷积核中的一个卷积核中与第一输入特征图对应的权重数据的列数,L为大于C的整数,K2为大于或等于1的整数。
10.根据权利要求8或9所述的数据处理方法,其特征在于,所述调度单元将所述第二缓存单元存储的权重数据映射到所述计算阵列,以便所述计算阵列中的计算单元进卷积计算,获得卷积结果,包括:
所述调度单元针对所述M个卷积核中的每个卷积核,执行以下操作以获得所述第一输入特征图中所有特征图数据与所述M个卷积核的第一通道一一对应的M个卷积结果,所述第一通道与所述第一输入特征图对应:
所述调度单元将所述第二缓存单元存储的第一权重数据映射到所述计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,以便所述第R-K1+1行到第R行的前K2列的计算单元根据所述第一权重数据进行卷积计算;当所述第R-K1+1行到第R行的前K2列的计算单元的卷积计算完成时,控制所述第一权重数据通过级联的方式向右传递S列,以便所述第R-K1+1行到第R行的第S列至第K2+S-1列的计算单元根据所述第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元;所述第一权重数据是所述M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为所述M个卷积核中的一个卷积核的第一通道包括的权重数据的行数,K1为大于或等于1的整数;
当所述第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,所述调度单元重新将所述第一权重数据映射到所述计算阵列的第R-K1+1行到第R行的前K2列的计算单元中,直到所述第一输入特征图的所有特征图数据与所述第一权重数据的卷积计算完成。
11.根据权利要求8或9所述的数据处理方法,其特征在于,所述调度单元将所述第二缓存单元存储的权重数据映射到所述计算阵列,以便所述计算阵列中的计算单元进卷积计算,获得卷积结果,包括:
所述调度单元针对所述M个卷积核中的每个卷积核,执行以下操作以获得所述第一输入特征图中所有特征图数据与所述M个卷积核的第一通道一一对应的M个卷积结果,所述第一通道与所述第一输入特征图对应:
所述调度单元将所述第二缓存单元存储的第一权重数据重复映射到所述计算阵列的第
Figure FDA0002241579400000051
行至第R行中的第1列至第
Figure FDA0002241579400000052
列中,以便对应位置的计算单元根据所述第一权重数据进行卷积计算;当卷积计算完成时,控制重复映射到所述计算阵列的所述第一权重数据通过级联的方式向右传递S列,以便对应位置的计算单元根据所述第一权重数据进行卷积计算,依次类推,直到第一权重数据传递到第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元;所述第一权重数据是所述M个卷积核中任意一个卷积核的第一通道的权重数据,其中,K1为所述第一通道的权重数据的行数,K2为所述第一通道的权重数据的列数,K1,K2均为大于或等于1的整数;
当所述第R-K1+1行到第R行的第C-K2+1列至第C列的计算单元的卷积计算完成时,所述调度单元重新将所述第一权重数据重复映射到所述计算阵列的第
Figure FDA0002241579400000053
行至第R行中的第1列至第
Figure FDA0002241579400000054
列的计算单元中,直到所述第一输入特征图的所有特征图数据与所述第一权重数据的卷积计算完成。
12.根据权利要求8-11中任一项所述的数据处理方法,其特征在于,所述算术逻辑单元的输出端与所述片外存储单元连接;
所述方法还包括:
所述算术逻辑单元将所述第三缓存单元存储的所述M个中间输出特征图分别进行池化和/或激活处理;
所述调度单元将处理后的中间输出特征图存储到所述片外存储单元。
13.根据权利要求8-12中任一项所述的数据处理方法,其特征在于,所述数据处理装置还包括:与所述算术逻辑单元的输出端连接的第四缓存单元,所述第四缓存单元还与所述调度单元连接;
所述方法还包括:
所述算术逻辑单元将所述第三缓存单元存储的所述M个中间输出特征图分别进行池化和/或激活处理,并将处理后的中间输出特征图存储至所述第四缓存单元;
所述调度单元将所述第四缓存单元中存储的处理后的中间输出特征图存储到所述片外存储单元。
14.根据权利要求8-13中任一项所述的数据处理方法,其特征在于,所述第三缓存单元还与所述片外存储单元连接;
所述方法还包括:
所述调度单元将所述片外存储单元存储的所述N个输入特征图存储到所述第三缓存单元;
所述算术逻辑单元对所述第三缓存单元中存储的所述N个输入特征图进行激活处理;
所述调度单元将激活后的所述N个输入特征图存储到所述片外存储单元。
CN201911001878.6A 2019-10-21 2019-10-21 一种数据处理装置及数据处理方法 Pending CN112766453A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911001878.6A CN112766453A (zh) 2019-10-21 2019-10-21 一种数据处理装置及数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911001878.6A CN112766453A (zh) 2019-10-21 2019-10-21 一种数据处理装置及数据处理方法

Publications (1)

Publication Number Publication Date
CN112766453A true CN112766453A (zh) 2021-05-07

Family

ID=75691783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911001878.6A Pending CN112766453A (zh) 2019-10-21 2019-10-21 一种数据处理装置及数据处理方法

Country Status (1)

Country Link
CN (1) CN112766453A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113487017A (zh) * 2021-07-27 2021-10-08 湖南国科微电子股份有限公司 数据卷积处理方法、装置及计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647773A (zh) * 2018-04-20 2018-10-12 复旦大学 一种可重构卷积神经网络的硬件互连架构
US20190179870A1 (en) * 2017-12-12 2019-06-13 Tesla, Inc. Systems and methods for converting a matrix input to a vectorized input for a matrix processor
CN109934339A (zh) * 2019-03-06 2019-06-25 东南大学 一种基于一维脉动阵列的通用卷积神经网络加速器
US20190205738A1 (en) * 2018-01-04 2019-07-04 Tesla, Inc. Systems and methods for hardware-based pooling
CN109993297A (zh) * 2019-04-02 2019-07-09 南京吉相传感成像技术研究院有限公司 一种负载均衡的稀疏卷积神经网络加速器及其加速方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190179870A1 (en) * 2017-12-12 2019-06-13 Tesla, Inc. Systems and methods for converting a matrix input to a vectorized input for a matrix processor
US20190205738A1 (en) * 2018-01-04 2019-07-04 Tesla, Inc. Systems and methods for hardware-based pooling
CN108647773A (zh) * 2018-04-20 2018-10-12 复旦大学 一种可重构卷积神经网络的硬件互连架构
CN109934339A (zh) * 2019-03-06 2019-06-25 东南大学 一种基于一维脉动阵列的通用卷积神经网络加速器
CN109993297A (zh) * 2019-04-02 2019-07-09 南京吉相传感成像技术研究院有限公司 一种负载均衡的稀疏卷积神经网络加速器及其加速方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113487017A (zh) * 2021-07-27 2021-10-08 湖南国科微电子股份有限公司 数据卷积处理方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
US10824934B2 (en) Methods and apparatus for matrix processing in a convolutional neural network
CN109409511B (zh) 一种用于动态可重构阵列的卷积运算数据流调度方法
CN107704916B (zh) 一种基于fpga实现rnn神经网络的硬件加速器及方法
CN107229967B (zh) 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
CN109102065B (zh) 一种基于PSoC的卷积神经网络加速器
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
US11487845B2 (en) Convolutional operation device with dimensional conversion
KR20190074195A (ko) 뉴럴 프로세싱 가속기
CN110188869B (zh) 一种基于卷积神经网络算法的集成电路加速计算的方法及系统
CN113033794B (zh) 基于深度可分离卷积的轻量级神经网络硬件加速器
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
CN110543939A (zh) 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构
CN113807509A (zh) 神经网络加速装置、方法和通信设备
CN111340198A (zh) 基于fpga的数据高度复用的神经网络加速器
CN113537482B (zh) 神经网络计算模块、方法和通信设备
CN115310037A (zh) 矩阵乘法计算单元、加速单元、计算系统和相关方法
CN111160542A (zh) 集成电路芯片装置及相关产品
CN114519425A (zh) 一种规模可扩展的卷积神经网络加速系统
CN111222090B (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
CN112766453A (zh) 一种数据处理装置及数据处理方法
CN112862091B (zh) 一种基于快速卷积的资源复用型神经网络硬件加速电路
CN113792868A (zh) 神经网络计算模块、方法和通信设备
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
CN111126588A (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