[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

WO2023098256A1 - 神经网络运算方法、装置、芯片、电子设备和存储介质 - Google Patents

神经网络运算方法、装置、芯片、电子设备和存储介质 Download PDF

Info

Publication number
WO2023098256A1
WO2023098256A1 PCT/CN2022/121427 CN2022121427W WO2023098256A1 WO 2023098256 A1 WO2023098256 A1 WO 2023098256A1 CN 2022121427 W CN2022121427 W CN 2022121427W WO 2023098256 A1 WO2023098256 A1 WO 2023098256A1
Authority
WO
WIPO (PCT)
Prior art keywords
sub
convolution
convolution kernel
input data
result
Prior art date
Application number
PCT/CN2022/121427
Other languages
English (en)
French (fr)
Inventor
徐东
熊先奎
Original Assignee
中兴通讯股份有限公司
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 中兴通讯股份有限公司 filed Critical 中兴通讯股份有限公司
Publication of WO2023098256A1 publication Critical patent/WO2023098256A1/zh

Links

Images

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/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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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

Definitions

  • the data rearrangement mode corresponding to the first sub-convolution kernel group is set so that the position of each part of the data in the input data remains unchanged.
  • the operation of the ith sub-convolution kernel group after the operation of the ith sub-convolution kernel group is completed, it is necessary to judge the size of the i value, and when the i value is less than Wk*Hk, update the i value to i+1, and load the i+1th Sub-convolution kernel group, execute the operation step again; when the value of i is equal to Wk*Hk, the operation step ends at this time, and the data at the effective position in the i-th accumulation result will be used as the output result of the neural network operation.
  • step division of the above various methods is only for the sake of clarity of description. During implementation, it can be combined into one step or some steps can be split and decomposed into multiple steps. As long as they include the same logical relationship, they are all within the scope of protection of this patent. ; Adding insignificant modifications or introducing insignificant designs to the algorithm or process, but not changing the core design of the algorithm and process are all within the scope of protection of this patent.
  • the convolution unit is used to convolve each sub-convolution kernel group and the rearranged input data corresponding to each sub-convolution kernel group to obtain a convolution result corresponding to each sub-convolution kernel group, and to convolve each sub-convolution kernel group
  • the corresponding convolution result is output to the addition unit;

Landscapes

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

Abstract

本申请涉及一种神经网络运算方法、装置、芯片、电子设备及存储介质。神经网络运算方法包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组;运算步骤包括:根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据;将各子卷积核组和各子卷积核组对应的重排后输入数据卷积得到各子卷积核组的卷积结果;将各子卷积核组的卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果。

Description

神经网络运算方法、装置、芯片、电子设备和存储介质
相关申请
本申请要求于2021年12月3日申请的、申请号为202111466758.0的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及数据计算领域,特别涉及一种神经网络运算方法、装置、芯片、电子设备及存储介质。
背景技术
神经网络90%的计算量都在卷积和全连接,全连接从本质上来说也是一种特殊的卷积运算,卷积运算当前基本转换为矩阵运算,通过脉动阵列或通用矩阵乘法(General Matrix Multiplication,简称GEMM)来实现,现有技术对神经网络的研究主要还是如何高效实现卷积运算中的乘法和加法运算,而忽略了数据访问对计算效率的影响,以及访存带来功耗的增加。
现有神经网络加速器为了方便调度,通常采用img2col的方式对权重和激活数据进行排布。当权重和输入数据都经过img2col以后,将2个矩阵输入到矩阵运算单元进行运算,就得到最终2个矩阵相乘的结果,也就是神经网络卷积输出的结果。权重数据img2col后不会增加数据的大小,仅仅需要对数据进行重排,而且由于权重可以通过离线的方式排布好,所以权重img2col并不增加额外的开销。但对于输入数据采用img2col以后,由于卷积滑窗的原因,会明显增加输入数据的容量,如图1所示,原始输入为W=10,H=10的图片,数据总量为10*10=100,img2col后数据为64*9=576,数据膨胀了近6倍,如果输入的尺寸(W*H)更大的情况下,理论的数据膨胀接近卷积核的K W*K H倍。img2col可以由软件或硬件实现,但不管采用何种方式都会增加对输入数据的访问,这样会导致动态功耗的增加。而且由于神经网络计算本身就是访存受限的,这种数据量的增加也会导致性能的降低。
发明内容
本申请实施例的主要目的在于提出一种神经网络运算方法、装置、电子设备及存储介质。旨在消除因为img2col带来的硬件设计的开销、数据访存量的增加、以及动态功耗的增加。
为实现上述目的,本申请实施例提供了一种神经网络运算方法,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤,包括:根据各所述子卷积核组对应的数据重排方式对所述输入数据进行重排,得到各所述子卷积核组对应的重排后输入数据;将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果;将各所述子卷积核组对应的卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;其中,各所述子卷积核组对应的重排后输入数据中与各所述子卷积核组对应的所述部分输入数据具有相同的数据位置,所述相同的数据位置为所述有效位置。
为实现上述目的,本申请实施例还提供了一种神经网络运算方法,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组, 且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤,包括:将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果;根据各所述子卷积核组对应的数据重排方式对各所述子卷积核组对应的卷积结果进行重排,得到各所述子卷积核组对应的重排后卷积结果;将各所述子卷积核组对应的重排后卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;其中,各所述子卷积核组与各所述子卷积核组对应的所述部分输入数据卷积得到各所述子卷积核组对应的有效卷积结果,各所述子卷积核组对应的重排后卷积结果中的所述有效卷积结果具有相同的数据位置,且所述相同的数据位置为所述有效位置。
为实现上述目的,本申请实施例还提供了一种神经网络运算方法,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组;并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤包括:将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果;其中,所述第i个子卷积核组与所述第i个子卷积核组对应的所述部分输入数据卷积得到所述第i个子卷积核组对应的有效卷积结果,所述第i个卷积结果中包含所述有效卷积结果;将所述第(i-1)次累加结果进行重排,以使得重排后的第(i-1)次累加结果中所述有效卷积结果和所述第i个卷积结果中所述有效卷积结果具有相同的数据位置;将所述重排后的第(i-1)次累加结果与所述第i个卷积结果累加,得到第i次累加结果;若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中的所述有效卷积结果作为所述神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且所述重排后的第0次累加结果中所述有效卷积结果和所述第1个卷积结果中所述有效卷积结果被默认为具有相同的数据位置。
为实现上述目的,本申请实施例还提供一种神经网络运算装置,包括:第一存储单元、第二存储单元、控制单元、第一数据重排单元、卷积单元以及加法单元;所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述第一数据重排单元,所述控制单元还用于将各所述子卷积核组对应的数据重排方式发送至所述第一数据重排单元;所述第一数据重排单元用于根据各所述子卷积核组对应的数据重排方式对所述输入数据进行重排,得到各所述子卷积核组对应的重排后输入数据,并将各所述子卷积核组对应的重排后输入数据输出至所述卷积单元;其中,各所述子卷积核组对应的重排后输入数据中与各所述子卷积核组对应的所述部分输入数据具有相同的数据位置,所述相同的数据位置为所述有效位置;所述控制单元还用于从所述第二存储单元获取各所述子卷积核组,并将各所述子卷积核组发送至所述卷积单元;所述卷积单元用于将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果,并将各所述子卷积核组对应的卷积结果输出至所述加法单元;所述加法单元用于将各所述子卷积核组对应的卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所 述神经网络运算的输出结果。
为实现上述目的,本申请实施例还提供一种神经网络运算装置,包括:第一存储单元、第二存储单元、控制单元、第二数据重排单元、卷积单元以及加法单元;所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述卷积单元,所述控制单元还用于从所述第二存储单元获取各所述子卷积核组,并将各所述子卷积核组输入所述卷积单元;所述卷积单元用于将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果,并将各所述子卷积核组对应的卷积结果输出至所述第二数据重排单元;所述控制单元还用于将各所述子卷积核组对应的数据重排方式发送至所述第二数据重排单元;所述第二数据重排单元根据各所述子卷积核组对应的数据重排方式对各所述子卷积核组对应的卷积结果进行重排,得到各所述子卷积核组对应的重排后卷积结果,并将各所述子卷积核组对应的重排后卷积结果输出至所述加法单元;其中,各所述子卷积核组与各所述子卷积核组对应的所述部分输入数据卷积得到各所述子卷积核组对应的有效卷积结果,各所述子卷积核组对应的重排后卷积结果中的所述有效卷积结果具有相同的数据位置,且所述相同的数据位置为所述有效位置。
为实现上述目的,本申请实施例还提供一种神经网络运算装置,包括:第一存储单元、第二存储单元、第三存储单元、控制单元、第三数据重排单元、卷积单元以及加法单元;所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述卷积单元,所述控制单元还用于从所述第二存储单元获取第i个子卷积核组,并将所述第i个子卷积核组输入所述卷积单元;所述卷积单元用于将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果,并将所述第i个卷积结果输出至所述加法单元;其中,所述第i个子卷积核组与所述第i个子卷积核组对应的所述部分输入数据卷积得到所述第i个子卷积核组对应的有效卷积结果,所述第i个卷积结果中包含所述有效卷积结果;所述控制单元还用于从所述第三存储单元中获取所述第(i-1)次累加结果,并将所述第(i-1)次累加结果发送至所述第三数据重排单元;所述第三数据重排单元用于将所述第(i-1)次累加结果进行重排,以使得重排后的第(i-1)次累加结果中所述有效卷积结果和所述第i个卷积结果中所述有效卷积结果具有相同的数据位置;并将所述重排后的第(i-1)次累加结果输出至所述加法单元;将所述重排后的第(i-1)次累加结果与所述第i个卷积结果累加,得到第i次累加结果,并将所述第i次累加结果存储到所述第三存储单元中且覆盖所述第(i-1)次累加结果;所述控制单元还用于判断i的数值大小,若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中的所述有效卷积结果作为所述神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且所述重排后的第0次累加结果中所述有效卷积结果和所述第1个卷积结果中所述有效卷积结果被默认为具有相同的数据位置。
为实现上述目的,本申请实施例还提供了一种芯片,包括:至少一个处理器;以及,与所述至少一个 处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的神经网络运算方法。
为实现上述目的,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的神经网络运算方法。
为实现上述目的,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的神经网络运算方法。
本申请提出的神经网络运算方法,在神经网络运算的过程中,获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同;运算步骤,包括:根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据;将各子卷积核组和各子卷积核组对应的重排后输入数据卷积得到各子卷积核组对应的卷积结果;将各子卷积核组对应的卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果;其中,各子卷积核组对应的重排后输入数据中与各子卷积核组对应的部分输入数据具有相同的数据位置,相同的数据位置为有效位置。通过将卷积进行拆分,复用输入数据,而不需要为了满足调度和计算将数据进行img2col的重排,由于不对输入数据做img2col转换,直接在原始输入数据上进行计算,从而消除因为img2col带来的硬件设计的开销、数据访存量的增加、以及动态功耗的增加。
附图说明
图1是现有技术中对输入数据进行img2col处理的示意图;
图2是本申请实施方式提供的神经网络运算方法的流程图;
图3是本申请实施方式提供的输入数据的示意图;
图4是本申请实施方式提供的子卷积核组的示意图;
图5是本申请实施方式提供的重排后输入数据的有效位置的示意图;
图6是本申请实施方式提供的拆分输入数据的示意图;
图7是现有技术中对输入数据进行卷积的示意图;
图8是本申请实施方式提供的对输入数据进行卷积的示意图;
图9是本申请实施方式提供的神经网络运算方法方法的流程图;
图10是本申请实施方式提供的神经网络运算方法的流程图;
图11是本申请实施方式提供的神经网络运算方法的流程图;
图12是本申请实施方式提供的神经网络运算装置的结构示意图;
图13是本申请实施方式提供的神经网络运算装置的结构示意图;
图14是本申请实施方式提供的神经网络运算装置的结构示意图;
图15是本申请实施方式提供的芯片的结构示意图;
图16是本申请实施方式提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而 提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本申请的一个实施例涉及一种神经网络运算方法,如图2所示,包括:
步骤101,获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同。
在一示例实施中,如图3所示,所获取的输入数据是W 输入*H 输入*C 输入的数据,当C 输入为1时,输入数据为二维数据,当C 输入大于1时,输入数据为三维数据。
在一示例实施中,如图4所示,所获取的子卷积核组是由卷积核拆分得到的,一个子卷积核组中包含的子卷积核的个数由进行拆分的卷积核的个数决定的,如:有9个卷积核进行拆分,所获取的各个子卷积核组中均包含有9个子卷积核;而子卷积核组的个数是由卷积核的宽度W和长度H决定的,如:进行拆分的卷积核为3*3大小的,拆分之后可以得到3*3=9个子卷积核组。
在一示例实施中,每个子卷积核对应输入数据中的部分输入数据,如:图4的子卷积核00对应图3的输入数据中的00至77、图4的子卷积核01对应图3的输入数据中的01至78、图4的子卷积核02对应图3的输入数据中的02至79、……、图4的子卷积核22对应图3的输入数据中的22至99;当一个子卷积核组中包含两个以上的子卷积核时,每个子卷积核组中的N个子卷积核对应的部分输入数据相同,如:图4的第1个子卷积核组中的各子卷积核00均对应图3的输入数据中的00至77、图4的第2个子卷积核组中的各子卷积核01对应图3的输入数据中的01至78、图4的第3个子卷积核组中的各子卷积核02对应图3的输入数据中的02至79、……、图4的第9个子卷积核组中的各子卷积核22对应图3的输入数据中的22至99。
步骤102,根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据;将各子卷积核组和各子卷积核组对应的重排后输入数据卷积得到各子卷积核组对应的卷积结果;将各子卷积核组对应的卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果;其中,各子卷积核组对应的重排后输入数据中与各子卷积核组对应的部分输入数据具有相同的数据位置,相同的数据位置为有效位置。
在一示例实施中,各子卷积核组和输入数据的运算过程在神经网络的矩阵运算单元中完成,各子卷积核组都有其对应的数据重排方式,将各子卷积核组与输入数据进行卷积之前,需要先获取各子卷积核组对应的数据重排方式,根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据。之后将各子卷积核组和各子卷积核组对应的重排后输入数据进行卷积,得到各子卷积核组对应的卷积结果,再将各子卷积核组对应的卷积结果进行累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果。
在一示例实施中,各子卷积核组对应的重排后输入数据中与各子卷积核组对应的部分输入数据具有相同的数据位置,相同的数据位置为有效位置。也就是:各子卷积核组的重排后输入数据与其部分输入数据具有相同的数据位置,但相同的数据位置上的数据进行了重排,图4中的第1个子卷积核组00对应的数据重排方式被设定为输入数据中各部分数据的位置不变,第1个子卷积核组00对应的重排后输入数据如图5所示;图4中的第2个子卷积核组01对应的数据重排方式被设定为输入数据中各部分数据的各列数 据向前平移一列,第2个子卷积核组01对应的重排后输入数据如图5所示,以此类推,图4中的第Wk*Hk个子卷积核组22对应的数据重排方式被设定为输入数据中各部分数据的各列数据向前平移两列和各行向上平移两列,第Wk*Hk个子卷积核组22对应的重排后输入数据如图5所示;其中,有效位置为图5中的实线部分数据。
在一示例实施中,为了满足矩阵运算单元的高效运行,为矩阵运算提供输入数据位宽需要和矩阵运算的规模匹配,假设矩阵运算模块单周期能够输出M*N的矩阵,那么输入数据的带宽M*W i,其中W i为单个数据的表示的位宽,如INT8精度下W i=8,FP16精度下W i=16。假设C0为参与一次矩阵运算的输入数据的深度,也就是输入数据在深度方向的切分粒度,最小为1。C 1输入数据总的深度C根据C0为粒度切分的次数。输入数据在Buffer中的存放顺序为按照C 1HWC0,如图6所示,M*Wi bit位宽的数据将被分成M*Wi/C0组,每组的数据都用一个内存块进行存储,位宽为Wi*C0,每组数据都有单独的地址管理,单个周期可以从任意位置取出W i*C 0bit的数据。数据重排模块根据从每个Buffer读取的数据进行重新排布,然后送到矩阵运算模块进行处理。
在一示例实施中,若将输入数据存储至内存块中时,输入到矩阵运算单元的指令只需要指定输入数据的起始地址、权重数据的起始地址,以及2个参与矩阵运算的矩阵的大小,即m、n、k的大小,假设矩阵单元支持的最小规格为M*K和K*N的矩阵运算,那么控制模块会自动每个周期从存储单元1获取M*K个数据,从存储单元2取K*N个数据加载到矩阵运算单元进行矩阵运算,对于m*k和k*n的2个数据矩阵,控制单元会自动进行切分并进行计算,所以m、n、k的值必须是M、N、K的整数倍,如果不是需要在输入的时候就补齐好,即参与矩阵运算的时候,m、n、k的值满足是M、N、K的整数倍的条件。
在一示例实施中,图7所示的是现有技术中所使用的卷积方式,图8是本申请所使用的卷积过程,各个子卷积核组的输入源数据是相同的,并没有产生数据膨胀。卷积计算的流程和传统的卷积计算流程基本一致,先加载输入数据和权重数据,对于单次卷积块来说,输入数据是一次性加载,卷积时的权重数据可以根据图8所示的方式拆分进行分批加载,但也可以一次加载到权重的缓存单元。为了满足更好的并行性,输入数据和权重数据可以同时加载到各自的存储单元。输入数据和权重加载完成后,按照图8描述的拆分规则进行多次矩阵运算操作,中间不需要改变输入数据,只需要指定不同的起始位置,其中输入数据高度复用,对于卷积时的数据,每次都是取不同的卷积时的权值数据参与矩阵运算。
在一示例实施中,假设图8所示的深度C为16,那针对图8所示的10*10*16的输入数据,图4所示的卷积核为3*3*16(拆分为图8中的1*1*16的各个子卷积核组),会增加2列输出的无效计算(即图5中虚线所示部分),假设矩阵计算本身效率为100%,那么针对10*10*16的输入数据,3*3*16的卷积核下效率为8*8/(8*10)=80%。而通常情况下通用神经网络加速器在单图模式下很难做到大于50%的效率,所以这种计算模式并不会对整个网络计算效率有太多影响,但输入数据访问仅仅为img2col模式下的(10*10)/(9*8*8)=17.3%。对于输入尺寸大于10*10的情况下无效计算的比例会更低,无效计算比例(Wk-1)/W。如果输入尺寸过小,那么可以通过批量或img2col的方式上进行计算,由于这种情况下输入数据通常不会是瓶颈,产生img2col数据也不会成影响系统性能。
在一示例实施中,对于包含N个子卷积核的子卷积核组,子卷积核组中的N个子卷积核分别与该子卷积核组对应的重排后输入数据进行卷积,得到N个子卷积结果,将N个子卷积结果分别作为子卷积核组对应的卷积结果的第N层数据。
本申请实施例,在神经网络运算的过程中,获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积 核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同;运算步骤,包括:根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据;将各子卷积核组和各子卷积核组对应的重排后输入数据卷积得到各子卷积核组对应的卷积结果;将各子卷积核组对应的卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果;其中,各子卷积核组对应的重排后输入数据中与各子卷积核组对应的部分输入数据具有相同的数据位置,相同的数据位置为有效位置。通过将卷积进行拆分,复用输入数据,而不需要为了满足调度和计算将数据进行img2col的重排,由于不对输入数据做img2col转换,直接在原始输入数据上进行计算,从而消除因为img2col带来的硬件设计的开销、数据访存量的增加、以及动态功耗的增加。
本申请的一个实施例涉及一种神经网络运算方法的运算步骤,如图9所示,包括:
步骤201,根据第i个子卷积核组对应的数据重排方式对输入数据进行重排,得到第i个重排后输入数据。
在一示例实施中,本申请在获取到输入数据之后,再获取子卷积核组,但在获取子卷积核组的时候,并不是一次性全部获取到Wk*Hk个子卷积核组;而是首先获取第1个子卷积核组,在第1个子卷积核组执行完所有的运算步骤之后,在获取第2个子卷积核组,以此类推,直至获取到第Wk*Hk个子卷积核组。
在一示例实施中,对于每一次所获取到的第i个子卷积核组,首先确定该第i个子卷积核组对应的第i个数据重排方式,在根据第i个数据重排方式对输入数据进行重排,得到第i个重排后输入数据;其中,i的取值为从1至Wk*Hk。
在一示例实施中,第i个子卷积核组的加载方式为数据覆盖加载方式,如:加载第2个子卷积核组时,用第2个子卷积核组覆盖第1个子卷积核组,以此来减少存储各个子卷积核组所占用的内存。
在一示例实施中,当i的值为1时,第1个子卷积核组对应的数据重排方式被设定为输入数据中各部分数据的位置不变。
步骤202,将第i个子卷积核组和第i个重排后输入数据卷积,得到第i个卷积结果。
在一示例实施中,在获取到第i个重排后输入数据之后,将第i个子卷积核组和第i个重排后输入数据进行卷积,得到第i个卷积结果。
在一示例实施中,当神经网络中包含有X个矩阵运算单元时(以3个为例),可以将图4中的9个子卷积核组划分为3组,第一次将第1-3个子卷积核组分别输入到3个矩阵运算单元进行运算,第二次将第4-6个子卷积核组分别输入到3个矩阵运算单元进行运算,第三次将第7-9个子卷积核组分别输入到3个矩阵运算单元进行运算,获取到各自对应的卷积结果。
步骤203,将第i个卷积结果和第(i-1)次累加结果累加,得到第i次累加结果。
在一示例实施中,将所生成的第i个卷积结果与前一次的第(i-1)次累加结果进行累加,得到第i次累加结果。
在一示例实施中,当i的值为1时,第1个子卷积核组对应的第0次累加结果被设定零。
在一示例实施中,当神经网络中包含有Y个加法单元时(以3个为例),可以将图4中的9个子卷积核组对应的9个卷积结果,划分为3组,将第1-3个卷积结果输入到第1个加法单元中计算第1-3个的卷积累加结果,将第4-6个卷积结果输入到第2个加法单元中计算第4-6个的卷积累加结果,将第7-8个卷积结果输入到第3个加法单元中计算第7-8个的卷积累加结果,之后再将第1-3个的卷积累加结果、第4-6个的卷积累加结果和第7-8个的卷积累加结果输入到任一个加法单元中计算获取到9个卷积结果的累加结果。
步骤204,若i小于Wk*Hk,将i更新为i+1,并再次执行运算步骤;若i等于Wk*Hk,将第i次累加结果中有效位置上的数据作为神经网络运算的输出结果。
在一示例实施中,当第i个子卷积核组的运算完成之后,需要判断i值的大小,当i值小于Wk*Hk时,将i值更新为i+1,并加载第i+1个子卷积核组,再次执行运算步骤;当i值等于Wk*Hk时,此时运算步骤结束,将将第i次累加结果中有效位置上的数据作为神经网络运算的输出结果。
本申请的实施方式,在其他实施例的基础之上还可以通过串行或并行的方式进行子卷积核组和输入数据的卷积运算,从而使得本申请所提及的神经网络运算方法能够应用到各类型的神经网络中。
本申请的一个实施例涉及一种神经网络运行方法,如图10所示,包括:
步骤301,获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同。
在一示例实施中,本步骤与本申请实施例的步骤101大致相同,此处不一一赘述。
步骤302,将各子卷积核组和输入数据分别卷积得到各子卷积核组对应的卷积结果;根据各子卷积核组对应的数据重排方式对各子卷积核组对应的卷积结果进行重排,得到各子卷积核组对应的重排后卷积结果;将各子卷积核组对应的重排后卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果;其中,各子卷积核组与各子卷积核组对应的部分输入数据卷积得到各子卷积核组对应的有效卷积结果,各子卷积核组对应的重排后卷积结果中的有效卷积结果具有相同的数据位置,且相同的数据位置为有效位置。
在一示例实施中,先将各子卷积核组和输入数据分别进行卷积得到各子卷积核组对应的卷积结果,之后再获取到各子卷积核组对应的数据重排方式,根据各子卷积核组对应的数据重排方式对各子卷积核组对应的卷积结果进行重排,得到各子卷积核组对应的重排后卷积结果;之后将各子卷积核组对应的重排后卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果。
在一示例实施中,对于包含N个子卷积核的子卷积核组,子卷积核组中的N个子卷积核分别与该子卷积核组对应的重排后输入数据进行卷积,得到N个子卷积结果,将N个子卷积结果分别作为子卷积核组对应的卷积结果的第N层数据。在一示例实施中,各子卷积核组对应的数据重排方式与本申请实施例步骤102提及的数据重排方式大致相同,此处不一一赘述。
在一示例实施中,步骤201至步骤204提及的串行运算和并行运算均可以应用在本申请实施例中;先对一个子卷积核组进行卷积、重排后累加,直至进行到最后一个子卷积核组的卷积、重排后累加,便可以得到神经网络运算的输出结果;也可以由多个矩阵运算单元和或多个加法单元进行运算步骤。
本申请的实施方式,在其他实施例的基础之上还可以先对各子卷积核组和输入数据进行卷积,再对各子卷积核组和输入数据的卷积结果进行重排、累加等操作,使得本申请对卷积和重排的先后顺序有着具体的规定,提高本申请的适用性。
本申请的一个实施例涉及一种神经网络运算方法,如图11所示,包括:
步骤401,获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的 N个子卷积核对应的部分输入数据相同。
在一示例实施中,本步骤与本申请实施例的步骤101大致相同,此处不一一赘述。
步骤402,将第i个子卷积核组和输入数据卷积,得到第i个卷积结果;其中,第i个子卷积核组与第i个子卷积核组对应的部分输入数据卷积得到第i个子卷积核组对应的有效卷积结果,第i个卷积结果中包含有效卷积结果。
在一示例实施中,将第i个子卷积核组与输入数据进行卷积,得到第i个卷积结果;而在第i个子卷积核组与输入数据进行卷积的过程中,将第i个子卷积核组与第i个子卷积核组对应的部分输入数据卷积得到卷积结果称为有效卷积结果,也就是第i个卷积结果中包含有效卷积结果。
在一示例实施中,对于包含N个子卷积核的子卷积核组,子卷积核组中的N个子卷积核分别与该子卷积核组对应的重排后输入数据进行卷积,得到N个子卷积结果,将N个子卷积结果分别作为子卷积核组对应的卷积结果的第N层数据。
在一示例实施中,Wk*Hk个子卷积核组可以按照顺序进行加载,当加载第i个子卷积核组时,以数据覆盖方式进行加载,即:使用第i个子卷积核组覆盖第i-1个子卷积核组。
步骤403,将第(i-1)次累加结果进行重排,以使得重排后的第(i-1)次累加结果中有效卷积结果和第i个卷积结果中有效卷积结果具有相同的数据位置。
在一示例实施中,根据第i个子卷积核组对应的数据重排方式对第(i-1)次的累加结果进行重排,使得重排后的第(i-1)次累加结果中有效卷积结果和第i个卷积结果中有效卷积结果具有相同的数据位置。
步骤404,将重排后的第(i-1)次累加结果与第i个卷积结果累加,得到第i次累加结果。
在一示例实施中,将重排后的第(i-1)次累加结果与第i个卷积结果累加,得到第i次累加结果。
在一示例实施中,i的初始值为1,且i=1时,第0次累加结果被设定零,且重排后的第0次累加结果中有效卷积结果和第1个卷积结果中有效卷积结果被默认为具有相同的数据位置。
步骤405,若i小于Wk*Hk,将i更新为i+1,并再次执行运算步骤;若i等于Wk*Hk,将第i次累加结果中的有效卷积结果作为神经网络运算的输出结果。
在一示例实施中,当第i个子卷积核组的运算完成之后,需要判断i值的大小,当i值小于Wk*Hk时,将i值更新为i+1,并加载第i+1个子卷积核组,再次执行运算步骤;当i值等于Wk*Hk时,此时运算步骤结束,将将第i次累加结果中有效位置上的数据作为神经网络运算的输出结果。
本申请的实施方式,在其他实施例的基础之上还可以通过串行或并行的方式进行子卷积核组和输入数据的卷积运算,从而使得本申请所提及的神经网络运算方法能够应用到各类型的神经网络中。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请的另一个实施例涉及一种神经网络运算装置,下面对本实施例的神经网络运算装置的细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本例的必须,图12是本实施例所述的神经网络运算装置的示意图,包括:第一存储单元1201、第二存储单元1202、控制单元1203、第一数据重排单元1204、卷积单元1205以及加法单元1206;
其中,第一存储单元,用于存储神经网络运算的输入数据;
第二存储单元,用于存储神经网络运算的Wk*Hk个子卷积核组;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子 卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同;
控制单元,用于从第一存储单元获取输入数据,并将输入数据输入第一数据重排单元,控制单元还用于将各子卷积核组对应的数据重排方式发送至第一数据重排单元;
第一数据重排单元,用于根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据,并将各子卷积核组对应的重排后输入数据输出至卷积单元;其中,各子卷积核组对应的重排后输入数据中与各子卷积核组对应的部分输入数据具有相同的数据位置,相同的数据位置为有效位置;
控制单元,还用于从第二存储单元获取各子卷积核组,并将各子卷积核组发送至卷积单元;
卷积单元,用于将各子卷积核组和各子卷积核组对应的重排后输入数据卷积得到各子卷积核组对应的卷积结果,并将各子卷积核组对应的卷积结果输出至加法单元;
加法单元,用于将各子卷积核组对应的卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果。
在一示例实施中,本申请提供的神经网络运算装置,还包括第三存储单元,用于在神经网络运算过程为串行运算时,存储上一次子卷积核组和输入数据运算的运算结果。
本申请的另一个实施例涉及一种神经网络运算装置,下面对本实施例的神经网络运算装置的细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本例的必须,图13是本实施例所述的神经网络运算装置的示意图,包括:第一存储单元1301、第二存储单元1302、控制单元1303、第二数据重排单元1404、卷积单元1405以及加法单元1406。
其中,第一存储单元,用于存储神经网络运算的输入数据。
第二存储单元,用于存储神经网络运算的Wk*Hk个子卷积核组;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同;
控制单元,用于从第一存储单元获取输入数据,并将输入数据输入卷积单元,控制单元还用于从第二存储单元获取各子卷积核组,并将各子卷积核组输入卷积单元;
卷积单元,用于将各子卷积核组和输入数据分别卷积得到各子卷积核组对应的卷积结果,并将各子卷积核组对应的卷积结果输出至第二数据重排单元;
控制单元,还用于将各子卷积核组对应的数据重排方式发送至第二数据重排单元;
第二数据重排单元,用于根据各子卷积核组对应的数据重排方式对各子卷积核组对应的卷积结果进行重排,得到各子卷积核组对应的重排后卷积结果,并将各子卷积核组对应的重排后卷积结果输出至加法单元;其中,各子卷积核组与各子卷积核组对应的部分输入数据卷积得到各子卷积核组对应的有效卷积结果,各子卷积核组对应的重排后卷积结果中的有效卷积结果具有相同的数据位置,且相同的数据位置为有效位置。
在一示例实施中,本申请提供的神经网络运算装置,还包括第三存储单元,用于在神经网络运算过程为串行运算时,存储上一次子卷积核组和输入数据运算的运算结果。
本申请的另一个实施例涉及一种神经网络运算装置,下面对本实施例的神经网络运算装置的细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本例的必须,图14是本实施例所述的神 经网络运算装置的示意图,包括:第一存储单元1401、第二存储单元1402、控制单元1403、第三数据重排单元1404、卷积单元1405以及加法单元1406;
其中,第一存储单元,用于存储神经网络运算的输入数据;
第二存储单元,用于存储神经网络运算的Wk*Hk个子卷积核组;其中,神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的部分输入数据相同;
控制单元,用于从第一存储单元获取输入数据,并将输入数据输入卷积单元,控制单元还用于从第二存储单元获取第i个子卷积核组,并将第i个子卷积核组输入卷积单元;
卷积单元,用于将第i个子卷积核组和输入数据卷积,得到第i个卷积结果,并将第i个卷积结果输出至加法单元;其中,第i个子卷积核组与第i个子卷积核组对应的部分输入数据卷积得到第i个子卷积核组对应的有效卷积结果,第i个卷积结果中包含有效卷积结果;
控制单元,还用于从第三存储单元中获取第(i-1)次累加结果,并将第(i-1)次累加结果发送至第三数据重排单元;
第三数据重排单元,用于将第(i-1)次累加结果进行重排,以使得重排后的第(i-1)次累加结果中有效卷积结果和第i个卷积结果中有效卷积结果具有相同的数据位置;并将重排后的第(i-1)次累加结果输出至加法单元;将重排后的第(i-1)次累加结果与第i个卷积结果累加,得到第i次累加结果,并将第i次累加结果存储到第三存储单元中且覆盖第(i-1)次累加结果;
控制单元,还用于判断i的数值大小,若i小于Wk*Hk,将i更新为i+1,并再次执行运算步骤;若i等于Wk*Hk,将第i次累加结果中的有效卷积结果作为神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且重排后的第0次累加结果中有效卷积结果和第1个卷积结果中有效卷积结果被默认为具有相同的数据位置。
不难发现,本实施例为与上述方法实施例对应的系统实施例,本实施例可以与上述方法实施例互相配合实施。上述实施例中提到的相关技术细节和技术效果在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本申请另一个实施例涉及一种芯片,如图6所示,包括:至少一个处理器601;以及,与所述至少一个处理器601通信连接的存储器602;其中,所述存储器602存储有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述至少一个处理器601能够执行上述各实施例中的神经网络运算方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输, 进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请另一个实施例涉及一种电子设备,如图6所示,包括:至少一个处理器601;以及,与所述至少一个处理器601通信连接的存储器602;其中,所述存储器602存储有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述至少一个处理器601能够执行上述各实施例中的神经网络运算方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请另一个实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

Claims (20)

  1. 一种神经网络运算方法,包括:
    获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;
    所述运算步骤,包括:
    根据各所述子卷积核组对应的数据重排方式对所述输入数据进行重排,得到各所述子卷积核组对应的重排后输入数据;将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果;将各所述子卷积核组对应的卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;
    其中,各所述子卷积核组对应的重排后输入数据中与各所述子卷积核组对应的所述部分输入数据具有相同的数据位置,所述相同的数据位置为所述有效位置。
  2. 根据权利要求1所述的神经网络运算方法,其中,所述运算步骤包括:
    根据第i个子卷积核组对应的数据重排方式对所述输入数据进行重排,得到第i个重排后输入数据;
    将所述第i个子卷积核组和所述第i个重排后输入数据卷积,得到第i个卷积结果;
    将所述第i个卷积结果和第(i-1)次累加结果累加,得到第i次累加结果;
    若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中所述有效位置上的数据作为所述神经网络运算的输出结果;
    其中,i的初始值为1,且i=1时,第1个子卷积核组对应的数据重排方式被设定为所述输入数据中各部分数据的位置不变,第0次累加结果被设定零。
  3. 根据权利要求2所述的神经网络运算方法,其中,所述获取神经网络运算的输入数据和Wk*Hk个子卷积核组,包括:
    加载所述输入数据;
    在所述根据所述第i个子卷积核组对应的数据重排方式对所述输入数据进行重排,得到第i个重排后输入数据之前,加载所述第i个子卷积核组。
  4. 根据权利要求3所述的神经网络运算方法,其中,所述加载所述第i个子卷积核组,具体为:以数据覆盖方式加载所述第i个子卷积核组。
  5. 根据权利要求1至4中任一项所述的神经网络运算方法,其中,在N≥2的情况下,所述将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果,具体为:
    对于每个子卷积核组,所述子卷积核组中的N个子卷积核分别与所述子卷积核组对应的重排后输入数据卷积,得到N个子卷积结果,且所述N个子卷积结果作为所述子卷积核组对应的卷积结果中的N层数据。
  6. 一种神经网络运算方法,包括:
    获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于 或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;
    所述运算步骤,包括:
    将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果;根据各所述子卷积核组对应的数据重排方式对各所述子卷积核组对应的卷积结果进行重排,得到各所述子卷积核组对应的重排后卷积结果;将各所述子卷积核组对应的重排后卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;
    其中,各所述子卷积核组与各所述子卷积核组对应的所述部分输入数据卷积得到各所述子卷积核组对应的有效卷积结果,各所述子卷积核组对应的重排后卷积结果中的所述有效卷积结果具有相同的数据位置,且所述相同的数据位置为所述有效位置。
  7. 根据权利要求6所述的神经网络运算方法,其中,所述运算步骤包括:
    将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果;
    根据所述第i个卷积结果对应的数据重排方式对所述第i个卷积结果进行重排,得到第i个重排后卷积结果;
    将所述第i个重排后卷积结果和第(i-1)次累加结果累加,得到第i次累加结果;
    若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中所述有效位置上的数据作为所述神经网络运算的输出结果;
    其中,i的初始值为1,且i=1时,第1个卷积结果对应的数据重排方式被设定为所述第1个卷积结果中各部分卷积结果的位置不变,第0次累加结果被设定零。
  8. 根据权利要求7所述的神经网络运算方法,其中,所述获取神经网络运算的输入数据和Wk*Hk个子卷积核组,包括:
    加载所述输入数据;
    在所述将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果之前,加载所述第i个子卷积核组。
  9. 根据权利要求8所述的神经网络运算方法,其中,所述加载所述第i个子卷积核组,具体为:以数据覆盖方式加载所述第i个子卷积核组。
  10. 根据权利要求6至9中任一项所述的神经网络运算方法,其中,在N≥2的情况下,所述将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果,具体为:
    对于每个子卷积核组,所述子卷积核组中的N个子卷积核分别与所述输入数据卷积,得到N个子卷积结果,且所述N个子卷积结果作为所述子卷积核组对应的卷积结果中的N层数据。
  11. 一种神经网络运算方法,包括:
    获取神经网络运算的输入数据和Wk*Hk个子卷积核组;并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;
    所述运算步骤包括:
    将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果;其中,所述第i个子卷积核组与所述第i个子卷积核组对应的所述部分输入数据卷积得到所述第i个子卷积核组对应的有效卷积结果,所述第i 个卷积结果中包含所述有效卷积结果;
    将所述第(i-1)次累加结果进行重排,以使得重排后的第(i-1)次累加结果中所述有效卷积结果和所述第i个卷积结果中所述有效卷积结果具有相同的数据位置;
    将所述重排后的第(i-1)次累加结果与所述第i个卷积结果累加,得到第i次累加结果;
    若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中的所述有效卷积结果作为所述神经网络运算的输出结果;
    其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且所述重排后的第0次累加结果中所述有效卷积结果和所述第1个卷积结果中所述有效卷积结果被默认为具有相同的数据位置。
  12. 根据权利要求11所述的神经网络运算方法,其中,所述获取神经网络运算的输入数据和Wk*Hk个子卷积核组,包括:
    加载所述输入数据;
    在所述将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果之前,加载所述第i个子卷积核组。
  13. 根据权利要求12所述的神经网络运算方法,其中,所述加载所述第i个子卷积核组,具体为:以数据覆盖方式加载所述第i个子卷积核组。
  14. 根据权利要求11至13中任一项所述的神经网络运算方法,其中,在N≥2的情况下,所述将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果,具体为:
    将所述第i个子卷积核组中的N个子卷积核分别与所述输入数据卷积,得到N个子卷积结果,且所述N个子卷积结果作为所述第i个子卷积核组对应的卷积结果中的N层数据。
  15. 一种神经网络运算装置,包括:第一存储单元、第二存储单元、控制单元、第一数据重排单元、卷积单元以及加法单元;
    所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;
    所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述第一数据重排单元,所述控制单元还用于将各所述子卷积核组对应的数据重排方式发送至所述第一数据重排单元;
    所述第一数据重排单元用于根据各所述子卷积核组对应的数据重排方式对所述输入数据进行重排,得到各所述子卷积核组对应的重排后输入数据,并将各所述子卷积核组对应的重排后输入数据输出至所述卷积单元;其中,各所述子卷积核组对应的重排后输入数据中与各所述子卷积核组对应的所述部分输入数据具有相同的数据位置,所述相同的数据位置为所述有效位置;
    所述控制单元还用于从所述第二存储单元获取各所述子卷积核组,并将各所述子卷积核组发送至所述卷积单元;
    所述卷积单元用于将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果,并将各所述子卷积核组对应的卷积结果输出至所述加法单元;
    所述加法单元用于将各所述子卷积核组对应的卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果。
  16. 一种神经网络运算装置,包括:第一存储单元、第二存储单元、控制单元、第二数据重排单元、 卷积单元以及加法单元;
    所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;
    所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述卷积单元,所述控制单元还用于从所述第二存储单元获取各所述子卷积核组,并将各所述子卷积核组输入所述卷积单元;
    所述卷积单元用于将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果,并将各所述子卷积核组对应的卷积结果输出至所述第二数据重排单元;
    所述控制单元还用于将各所述子卷积核组对应的数据重排方式发送至所述第二数据重排单元;
    所述第二数据重排单元根据各所述子卷积核组对应的数据重排方式对各所述子卷积核组对应的卷积结果进行重排,得到各所述子卷积核组对应的重排后卷积结果,并将各所述子卷积核组对应的重排后卷积结果输出至所述加法单元;
    其中,各所述子卷积核组与各所述子卷积核组对应的所述部分输入数据卷积得到各所述子卷积核组对应的有效卷积结果,各所述子卷积核组对应的重排后卷积结果中的所述有效卷积结果具有相同的数据位置,且所述相同的数据位置为所述有效位置。
  17. 一种神经网络运算装置,包括:第一存储单元、第二存储单元、第三存储单元、控制单元、第三数据重排单元、卷积单元以及加法单元;
    所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;
    所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述卷积单元,所述控制单元还用于从所述第二存储单元获取第i个子卷积核组,并将所述第i个子卷积核组输入所述卷积单元;
    所述卷积单元用于将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果,并将所述第i个卷积结果输出至所述加法单元;其中,所述第i个子卷积核组与所述第i个子卷积核组对应的所述部分输入数据卷积得到所述第i个子卷积核组对应的有效卷积结果,所述第i个卷积结果中包含所述有效卷积结果;
    所述控制单元还用于从所述第三存储单元中获取所述第(i-1)次累加结果,并将所述第(i-1)次累加结果发送至所述第三数据重排单元;
    所述第三数据重排单元用于将所述第(i-1)次累加结果进行重排,以使得重排后的第(i-1)次累加结果中所述有效卷积结果和所述第i个卷积结果中所述有效卷积结果具有相同的数据位置;并将所述重排后的第(i-1)次累加结果输出至所述加法单元;
    将所述重排后的第(i-1)次累加结果与所述第i个卷积结果累加,得到第i次累加结果,并将所述第i次累加结果存储到所述第三存储单元中且覆盖所述第(i-1)次累加结果;
    所述控制单元还用于判断i的数值大小,若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中的所述有效卷积结果作为所述神经网络运算的输出结果;
    其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且所述重排后的第0次累加结果中所述有效卷积结果和所述第1个卷积结果中所述有效卷积结果被默认为具有相同的数据位置。
  18. 一种芯片,包括:
    至少一处理模块;以及,
    与所述至少一处理模块通信连接的存储模块;其中,
    所述存储模块存储有可被所述至少一处理模块执行的指令,所述指令被所述至少一处理模块执行,以使所述至少一处理模块能够执行如权利要求1至5中任一项所述的方法、或执行如权利要求6至10中任一项所述的方法、或执行如权利要求11至14中任一项所述的方法。
  19. 一种电子设备,包括:
    至少一处理器;以及,
    与所述至少一处理器通信连接的存储器;其中,
    所述存储器存储有可被所述至少一处理器执行的指令,所述指令被所述至少一处理器执行,以使所述至少一处理器能够执行如权利要求1至5中任一项所述的方法、或执行如权利要求6至10中任一项所述的方法、或执行如权利要求11至14中任一项所述的方法。
  20. 一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的方法、或执行如权利要求6至10中任一项所述的方法、或执行如权利要求11至14中任一项所述的方法。
PCT/CN2022/121427 2021-12-03 2022-09-26 神经网络运算方法、装置、芯片、电子设备和存储介质 WO2023098256A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111466758.0A CN116306840A (zh) 2021-12-03 2021-12-03 神经网络运算方法、装置、芯片、电子设备和存储介质
CN202111466758.0 2021-12-03

Publications (1)

Publication Number Publication Date
WO2023098256A1 true WO2023098256A1 (zh) 2023-06-08

Family

ID=86611499

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/121427 WO2023098256A1 (zh) 2021-12-03 2022-09-26 神经网络运算方法、装置、芯片、电子设备和存储介质

Country Status (2)

Country Link
CN (1) CN116306840A (zh)
WO (1) WO2023098256A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116861149A (zh) * 2023-09-05 2023-10-10 之江实验室 卷积运算的优化方法、装置及处理器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116881618B (zh) * 2023-08-25 2024-06-04 之江实验室 通用矩阵乘计算优化方法、装置及处理器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108241890A (zh) * 2018-01-29 2018-07-03 清华大学 一种可重构神经网络加速方法及架构
US20190065896A1 (en) * 2017-08-23 2019-02-28 Samsung Electronics Co., Ltd. Neural network method and apparatus
US20190188237A1 (en) * 2017-12-18 2019-06-20 Nanjing Horizon Robotics Technology Co., Ltd. Method and electronic device for convolution calculation in neutral network
CN111260037A (zh) * 2020-02-11 2020-06-09 深圳云天励飞技术有限公司 图像数据的卷积运算方法、装置、电子设备及存储介质
CN112215745A (zh) * 2020-09-30 2021-01-12 深圳云天励飞技术股份有限公司 图像处理方法、装置及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190065896A1 (en) * 2017-08-23 2019-02-28 Samsung Electronics Co., Ltd. Neural network method and apparatus
US20190188237A1 (en) * 2017-12-18 2019-06-20 Nanjing Horizon Robotics Technology Co., Ltd. Method and electronic device for convolution calculation in neutral network
CN108241890A (zh) * 2018-01-29 2018-07-03 清华大学 一种可重构神经网络加速方法及架构
CN111260037A (zh) * 2020-02-11 2020-06-09 深圳云天励飞技术有限公司 图像数据的卷积运算方法、装置、电子设备及存储介质
CN112215745A (zh) * 2020-09-30 2021-01-12 深圳云天励飞技术股份有限公司 图像处理方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116861149A (zh) * 2023-09-05 2023-10-10 之江实验室 卷积运算的优化方法、装置及处理器
CN116861149B (zh) * 2023-09-05 2024-01-09 之江实验室 卷积运算的优化方法、装置及处理器

Also Published As

Publication number Publication date
CN116306840A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US11321423B2 (en) Operation accelerator
JP7060720B2 (ja) ネットワークオンチップによるデータ処理方法及び装置
WO2023098256A1 (zh) 神经网络运算方法、装置、芯片、电子设备和存储介质
CN109447241B (zh) 一种面向物联网领域的动态可重构卷积神经网络加速器架构
CN111461311B (zh) 基于众核处理器的卷积神经网络运算加速方法及装置
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
CN110222818B (zh) 一种用于卷积神经网络数据存储的多bank行列交织读写方法
EP3844610B1 (en) Method and system for performing parallel computation
CN107742150A (zh) 一种卷积神经网络的数据处理方法和装置
CN115860080B (zh) 计算核、加速器、计算方法、装置、设备、介质及系统
CN111047036B (zh) 神经网络处理器、芯片和电子设备
EP3970036A1 (en) High throughput neural network operations using inter-layer memory layout transformation
CN110991619A (zh) 神经网络处理器、芯片和电子设备
US20210326078A1 (en) Machine perception and dense algorithm integrated circuit
KR20200138411A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
CN116185937B (zh) 基于众核处理器多层互联架构的二元运算访存优化方法及装置
CN110377874B (zh) 卷积运算方法及系统
CN115328439A (zh) 一种面向hpc/ai应用的增量式矩阵乘加速器
CN111047035B (zh) 神经网络处理器、芯片和电子设备
US20230128421A1 (en) Neural network accelerator
CN118276772A (zh) 神经网络的数据处理方法、系统及可读存储介质
TWI779475B (zh) 圖形處理器及其加速方法
CN111667052A (zh) 专用神经网络加速器的标准与非标准卷积一致性变换方法
WO2020093654A1 (en) Multichip system and data processing method adapted to the same for implementing neural network application
KR20200138413A (ko) 네트워크 온칩 데이터 처리 방법 및 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22900064

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE