CN112801278A - 数据处理方法、处理器、芯片及电子设备 - Google Patents
数据处理方法、处理器、芯片及电子设备 Download PDFInfo
- Publication number
- CN112801278A CN112801278A CN202110184423.3A CN202110184423A CN112801278A CN 112801278 A CN112801278 A CN 112801278A CN 202110184423 A CN202110184423 A CN 202110184423A CN 112801278 A CN112801278 A CN 112801278A
- Authority
- CN
- China
- Prior art keywords
- data
- core
- computing
- calculation
- operation result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- Neurology (AREA)
- Image Processing (AREA)
Abstract
本公开涉及一种数据处理方法、处理器、芯片及电子设备。该方法通过多个计算核之间进行数据交换,各计算核基于交换后的数据进行并行运算,得到并行运算结果,可以平衡各个计算核的计算资源,充分发挥每个计算核的计算效力,提高数据处理效率。
Description
技术领域
本公开涉及信息处理技术领域,尤其涉及一种数据处理方法、处理器、芯片及电子设备。
背景技术
在对大规模的网络数据进行切分并映射到众核的过程中,对输入图像数据在深度方向上拆分,造成计算结果为多个不完整的部分,需要对这个多个部分数据进一步相加才能得出最终的求和结果。由深度切分引起的多个部分数据称之为部分和。当一层的输入图像未作拆分,但是卷积核的个数进行分组,卷积计算结果输出至下一层则等效于在深度方向上做切分,在下一层的计算也会引入部分和。
发明内容
有鉴于此,本公开提出了一种数据处理方法、处理器、芯片及电子设备。
根据本公开的一方面,提供了一种数据处理方法,所述方法应用于处理器的计算核,所述处理器包括多个计算核,所述方法实现处理数据和权值数据的卷积运算;所述方法包括:多个计算核之间进行数据交换;各计算核基于交换后的数据进行并行运算,得到并行运算结果;根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;其中,进行数据交换的数据包括切分后的权值数据、切分后的处理数据和部分和数据中的一种,所述部分和数据是根据切分后的处理数据或切分后的权值数据得到的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,或者切分后的处理数据;所述权值数据或处理数据切分为n份;多个计算核之间进行数据交换,包括:n个计算核之间进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,或者,基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,所述权值数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有处理数据,以及n份权值数据中的1份权值数据,每个计算核在初始状态下存储的权值数据不同;其中,n为整数;
多个计算核之间进行数据交换,包括:每个计算核对初始状态下存储的处理数据和1份权值数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份权值数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份权值数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的处理数据,所述处理数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有权值数据,以及n份处理数据中的1份处理数据,每个计算核在初始状态下存储的处理数据不同;
多个计算核之间进行数据交换,包括:每个计算核对初始状态下存储的权值数据和1份处理数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份处理数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份处理数据中的每一份;其中,n为整数;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括部分和数据,所述多个计算核包括n个计算核,每个计算核中存储有n份部分和数据,多个计算核之间进行数据交换,包括:在所述n个计算核之间,进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段或同一列段;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照行方向或列方向进行n份切分后得到的。
根据本公开的另一方面,提供了一种处理器,所述处理器包括多个计算核,所述处理器实现处理数据和权值数据的卷积运算,包括:多个计算核之间进行数据交换;各计算核基于交换后的数据进行并行运算,得到并行运算结果;根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;其中,进行数据交换的数据包括切分后的权值数据、切分后的处理数据和部分和数据中的一种,所述部分和数据是根据切分后的处理数据或切分后的权值数据得到的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,或者切分后的处理数据;所述权值数据或处理数据切分为n份;
多个计算核之间进行数据交换,包括:n个计算核之间进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,或者,基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,所述权值数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有处理数据,以及n份权值数据中的1份权值数据,每个计算核在初始状态下存储的权值数据不同;其中,n为整数;
多个计算核之间进行数据交换,包括:每个计算核对初始状态下存储的处理数据和1份权值数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份权值数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份权值数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的处理数据,所述处理数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有权值数据,以及n份处理数据中的1份处理数据,每个计算核在初始状态下存储的处理数据不同;
多个计算核之间进行数据交换,包括:每个计算核对初始状态下存储的权值数据和1份处理数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份处理数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份处理数据中的每一份;其中,n为整数;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括部分和数据,所述多个计算核包括n个计算核,每个计算核中存储有n份部分和数据,多个计算核之间进行数据交换,包括:在所述n个计算核之间,进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段或同一列段;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照行方向或列方向进行n份切分后得到的。
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如上所述的处理器。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括如上所述人工智能芯片。
通过多个计算核之间进行数据交换,各计算核基于交换后的数据进行并行运算,得到并行运算结果,可以平衡各个计算核的计算资源,充分发挥每个计算核的计算效力,提高数据处理效率。其中,进行数据交换的数据可以是切分后的权值数据或切分后的处理数据,通过交换切分后的权值数据或切分后的处理数据,可灵活选择交换切分后的权值数据或切分后的处理数据二者中数据容量小的一方,降低计算数据缓存占据芯片的内存空间,降低路由传输数据量。进行数据交换的数据还可以是部分和数据,多个计算核可以并行同步计算部分和,可以提高计算速度,节省计算时间。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开的实施例的处理器结构的示意图;
图2示出相关技术中逐级求和方式实现卷积运算过程中部分和运算的示意图;
图3示出相关技术中权值数据中卷积核分组计算的示意图;
图4示出根据本公开的实施例的数据处理方法的流程图;
图5示出根据本公开的实施例的交换权值数据进行卷积运算的示意图;
图6示出根据本公开的实施例的权值数据交换方法的示意图。
图7示出根据本公开的实施例的部分和数据并行运算的示意图;
图8示出根据本公开的实施例的部分和数据并行交换的示意图;
图9是示出根据本公开实施例的电子装置的框图;
图10是示出根据本公开实施例的电子装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开的实施例的处理器的示意图。根据本公开实施例的数据处理方法用于处理器的计算核,所述处理器包括多个计算核。
在一种可能的实现方式中,如图1所示,所述计算核包括处理部件及存储部件。所述处理部件可以包括树突单元、轴突单元、胞体单元、路由单元。所述存储部件可以包括多个存储单元。
在一种可能的实现方式中,多个处理器可以集成在一个类脑计算芯片中,类脑计算芯片即存算一体的神经形态电路,以大脑的处理模式为参考,通过模拟大脑中神经元对信息的传递与处理,提升处理效率并降低功耗。每个处理器可包括多个计算核,计算核之间可独立处理不同的任务,或并行处理同一任务,以提升处理效率。计算核之间可通过计算核内的路由单元进行核间信息传输。
在计算核之内,可以设置有处理部件和存储部件。处理部件可以包括树突单元、轴突单元、胞体单元和路由单元。处理部件可以模拟大脑的神经元对信息的处理模式,其中,树突单元用于接收信号,轴突单元用于发送尖峰信号,胞体单元用于信号的集成变换,路由单元用于同其它计算核进行信息传输。计算核内的处理部件可以对存储部件的多个存储单元进行读写访问,以与计算核内的存储部件进行数据交互,并可分别承担各自的数据处理任务和/或数据传输任务,以获得数据处理结果,或者与其他计算核进行通信。其中,与其他计算核进行通信包括与本处理器内的其他计算核进行通信,以及与其他处理器内的计算核通信。
在一种可能的实现方式中,膜电位(Membrane Potential)为以膜相隔的两溶液之间产生的电位差。利用膜电位可以在神经细胞间通讯。类脑计算芯片内的各个计算核,可以模拟大脑中神经细胞利用膜电位对信息传递与处理的模式。
在一种可能的实现方式中,存储单元可以为静态随机存取存储器(Static RandomAccess Memory,SRAM)。例如,可以包括读写宽度为16B,容量为12KB的SRAM。其中,第三存储单元MEM2可以接收胞体单元读取运算参数以进行非线性运算,或者可接收路由单元读取路由表,以进行数据通信。本公开对存储单元的读写宽度和容量不做限制。
在将大规模的神经网络数据映射到众核簇(处理器中的多个计算核)的过程中,需要将处理数据在深度方向上进行切分,并将切分后的各个部分数据送入众核簇内各个计算核,众核簇内各个计算核对接收的部分数据进行运算获得部分数据的运算结果,称为部分和。在这种情况下,想要获取神经网络的运算结果还需要对部分数据的运算结果做进一步的相加运算,即对部分和数据做进一步数据处理。
相关技术中,可以采用逐级求和的方式来实现多层卷积运算过程中部分和的运算,逐个将计算核里的部分和数据发给相邻下一层的存储有部分和数据的计算核,两者做完加法运算后再发给下一层对应的计算核,逐层求和依次直至运算完毕。
举例来说,图2示出相关技术中逐级求和方式实现卷积运算过程中部分和运算的示意图。如图2所示,在对卷积运算过程中,假设处理数据的总深度为128。可以将处理数据在深度方向切分为4部分,并送入计算核Sm=0、计算核Sm=1、计算核Sm=2和计算核Sm=3做卷积运算,分别得到各计算核的部分和数据,即被切分后的处理数据的卷积运算结果。其中,计算核Sm=0存储着深度为0~31的部分和数据,计算核Sm=1存储着深度为32~63的部分和数据,计算核Sm=2存储着深度为64~95的部分和数据,计算核Sm=3存储着深度为96~127的部分和数据。
通过逐级求和方式实现卷积运算过程中部分和运算的过程包括三个计算阶段Phase1~Phase3:
在第一个计算阶段Phase1,计算核Sm=0将存储的“深度为0~31的部分和数据”发送给计算核Sm=1。计算核Sm=1对接收的“深度为0~31的部分和数据”与该计算核内存储的“深度为32~63的部分和数据”进行相加运算,得到相加结果数据Result1,即深度为0~63的部分和数据。
在第二个计算阶段Phase1,计算核Sm=1将数据Result1发送给计算核Sm=2。计算核Sm=2对接收的数据Result1与该计算核内存储的“深度为64~95的部分和数据”进行相加运算,得到相加结果数据Result2,即深度为0~95的部分和数据。
在第三个计算阶段Phase3,计算核Sm=2将数据Result2发送给计算核Sm=3。计算核Sm=3对接收的数据Result2与该计算核内存储的“深度为96~127的部分和数据”进行相加运算,得到相加结果数据Result3,即深度为0~127的部分和数据,也就是卷积运算的结果。
通过这样逐级求和。在逐级求和的过程中不难发现,很多计算核处于空闲状态,例如计算核Sm=1在接收计算核Sm=0发送的部分和数据后进行运算的情况下,计算核Sm=2,计算核Sm=3处于等待状态,其中,计算核Sm=3空闲的时间最长。
部分和数据占的位宽比较大,可以是处理数据、权值数据的4倍或者16倍,而且部分和数据的数据容量也比较大,可能会因为占的存储空间容量大,造成剩余的数据存储空间不足,在路由发送时延时也会比较长。
上述逐级求和的方法,不仅会造成数据发送量大,路由延时长,并且在整个运算过程中,存在多个计算核空闲等待的情况,造成计算资源浪费。
在多层卷积运算的过程中,当前层的卷积运算结果可以作为下一层的处理数据,卷积核的个数可以确定下一层处理数据的深度。因此,在对处理数据的深度未进行切分,对卷积核个数进行分组的情况下,相当于下一层处理数据在深度方向上进行了切分。对于下一层的计算需要对两部分计算结果进行深度方向上的合并。
图3示出相关技术中权值数据中卷积核分组计算的示意图,如图3所示,假设权值数据中卷积核的个数有64个(卷积核0~63),可以在切分过程中对卷积核的个数进行分组,每32个卷积核分为一组,共2组,即卷积核0~31为第一组,卷积核32~63为第二组。处理数据的宽度方向与高度方向为56,深度方向为128。
将处理数据和第一组卷积核发送给计算核Core1,并使计算核Core1对接收的数据进行卷积运算,得到深度方向为0~31的部分和;将处理数据和第二组卷积核发送给计算核Core2,并使计算核Core2对接收的数据进行卷积运算,得到深度方向为32~63的部分和。然后,计算核Core1将深度方向为0~31的部分和数据发送给计算核Core2,计算核Core2将深度方向为32~63的部分和数据发送给计算核Core1,使计算核Core1和计算核Core2对完成深度方向的部分和数据的合并。增加了路由传输以及数据合并计算时钟,降低了计算核的计算效力。
图4示出根据本公开的实施例的数据处理方法的流程图。如图4所示,所述方法实现处理数据和权值数据的卷积运算,所述方法包括步骤S1和步骤S2:
在步骤S1中,多个计算核之间进行数据交换;
在步骤S2中,各计算核基于交换后的数据进行并行运算,得到并行运算结果;
在步骤S3中,根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;
其中,进行数据交换的数据包括切分后的权值数据、切分后的处理数据和部分和数据中的一种,所述部分和数据是根据切分后的处理数据或切分后的权值数据得到的卷积运算结果。
在一种可能实现的方式中,在将大规模的卷积运算(例如多层卷积、循环卷积)映射到多个计算核的过程中,各个计算核存储的数据可以包括切分后的权值数据、切分后的处理数据和部分和数据中的一种或多种。多个计算核为了实现大规模的卷积运算,可以交换切分后的权值数据、切分后的处理数据或者部分和数据,再对交换数据进行并行运算,得到并行运算结果。再根据并行运算结果确定大规模的卷积运算结果。
其中,部分和数据可以是切分后的处理数据和切分后的权值数据的卷积运算结果,可以是未切分的处理数据和切分后的权值数据的卷积运算结果,还可以是切分后的处理数据和未切分的权值数据的卷积运算结果。
在一种可能实现的方式中,在步骤S1中,多个处理器可以集成在一个类脑计算芯片中,每个处理器内部的计算核之间、以及不同处理器的计算核之间能够进行数据交换;
可以是多个计算核中的每一个计算核将一个或多个数据交换至其他计算核。
例如,假设有4个计算核:计算核A,计算核B,计算核C和计算核D。
计算核A中存储有数据DateA,其中,数据DateA可以包括数据DateA1,数据DateA2,数据DateA3和数据DateA4;
计算核B中存储有数据DateB,其中,数据DateB可以包括数据DateB1,数据DateB2,数据DateB3和数据DateB4;
计算核B中存储有数据DateC,其中,数据DateC可以包括数据DateC1,数据DateC2,数据DateC3和数据DateC4;
计算核B中存储有数据DateD,其中,数据DateD可以包括数据DateD1,数据DateD2,数据DateD3和数据DateD4。
4个计算核中的每一个计算核可以并行将存储的一个数据交换至其他计算核,即:计算核A可以将数据DateA交换至计算核B,计算核B可以将数据DateB交换至计算核C,计算核C可以将数据DateC交换至计算核D,计算核D可以将数据DateD交换至计算核A。
或者,4个计算核中的每一个计算核可以并行将存储的多个数据交换至其他计算核,其中,每一个数据交换至不同的计算核,即:计算核A可以将数据DateA2交换至计算核B,将数据DateA3交换至计算核C,将数据DateA4交换至计算核D;计算核B可以将数据DateB1交换至计算核A,将数据DateB3交换至计算核C,将数据DateB4交换至计算核D;计算核C可以将数据DateC1交换至计算核A,将数据DateC2交换至计算核B,将数据DateC4交换至计算核D;计算核D可以将数据DateD1交换至计算核A,将数据DateD2交换至计算核B,将数据DateD3交换至计算核C。
在一种可能实现的方式中,在步骤S1中,多个计算核之间进行数据交换,可以通过各计算核内部的路由单元访问存储单元,读取交换数据并传输至待接收的计算核;各待接收的计算核可以通过路由单元访问存储单元,将接收的交换数据写入存储单元;其中,各计算核的路由单元通过访问存储单元,可以读取一个或多个交换数据发送至一个或多个计算核;相应的,各计算核的路由单元可以接收一个或多个计算核发送的交换数据,写入各计算核的存储单元。
在一种可能实现的方式中,在步骤S2中,各计算核基于交换后的数据进行并行运算,例如,假如各计算核交换后的数据是切分后的处理数据,可以将该切分后的处理数据与各计算核存储的权值数据进行卷积运算;假如各计算核交换后的数据是切分后的权值数据,可以将该切分后的权值数据与各计算核存储的处理数据进行卷积运算;假如各计算核交换后的数据是切分后的部分和数据,可以将该部分和数据与各计算核内存储的部分和数据进行求和运算,还可以将该部分和数据作为下一层(例如多层卷积)的处理数据与各计算核存储的权值数据进行卷积运算。
在一种可能实现的方式中,在步骤S2中,各计算核的处理部件可以通过访问存储单元读取交换后的数据,并对交换后的数据进行相乘和/或相加运算。因此,通过多个计算核并行对各自交换后的数据进行运算,得到并行运算结果。
在一种可能实现的方式中,在步骤S3中,根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;例如,假如各计算核通过交换的切分后的处理数据或切分后的权值数据,得到的并行运算结果,可以将并行运算结果作为该计算核中的处理数据或权值数据的卷积运算结果。或者,假如各计算核通过交换部分和数据得到的并行运算结果,还可以将各计算核的并行运算结果相加,得到处理数据和权值数据的卷积运算结果。
通过多个计算核之间进行数据交换,各计算核基于交换后的数据进行并行运算,可以平衡各个计算核的计算资源,充分发挥每个计算核的计算效力,提高数据处理效率。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,或者切分后的处理数据;所述权值数据或处理数据切分为n份;
多个计算核之间进行数据交换,包括:
n个计算核之间进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,或者,基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
举例来说,可以将权值数据或处理数据切分为n份(A1,A2,…,An),分别送入n个计算核(计算核1,计算核2,…,计算核n),其中,A1~An可以表示切分后的数据,可以是切分后的权值数据或切分后的处理数据。n个计算核中的每一个计算核可以存储切分后的权值数据或切分后的处理数据的n分之一,例如,计算核1存储切分后的A1数据,计算核2存储切分后的A2数据,依次类推,计算核n存储切分后的An数据。
各个计算核(计算核1,计算核2,…,计算核n)可以将存储的切分后的数据(A1,A2,…,An)与存储的处理数据或权值数据(B1,B2,…,Bn)进行卷积运算,得到卷积运算的结果(C1[0]=A1*B1,C2[0]=A2*B2,…,Cn[0]=An*Bn)。即,在各个计算核存储的数据为切分后的权值数据的情况下,可以将存储的切分后的权值数据与存储的处理数据进行卷积运算,得到卷积运算的结果;在各个计算核存储的为切分后的处理数据的情况下,可以将存储的切分后的处理数据与存储的权值数据进行卷积运算,得到卷积运算的结果;
将各个计算核(计算核1,计算核2,…,计算核n)存储的切分后的数据(A1,A2,…,An)通过多轮数据交换,n个计算核之间可以进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,例如,计算核1可以在第一轮存储过切分后的权值数据A2,在第二轮存储过切分后的权值数据A3,依次类推,在第n-1轮存储过切分后的权值数据An,其他计算核(计算核2~计算核n)类似,此处不再赘叙。
在第i轮(i=1~n-1)数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据或处理数据(A1,A2,…,An)与所存储的处理数据或权值数据(B1,B2,…,Bn)进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核中的处理数据与权值数据的并行运算结果,即卷积运算结果(C1[i],C2[i],…,Cn[i])。
例如,计算核1可以在第一轮数据交换后,交换到切分后的数据A2,并与计算核1存储的B1数据进行卷积运算,并将卷积运算的结果A2*B1与该计算核之前得到的卷积运算结果C1[0]进行累加,得到该计算核中的处理数据与权值数据的并行运算结果,即卷积运算结果C1[1]=C1[0]+A2*B1;
计算核1可以在第2轮数据交换后,交换到切分后的数据A3,并与计算核1存储的B1数据进行卷积运算,并将卷积运算的结果A3*B1与该计算核之前得到的卷积运算结果C1[1]进行累加,得到该计算核中的处理数据与权值数据的并行运算结果,即卷积运算结果C1[2]=C1[1]+A3*B1;
依次类推,计算核1可以在第n-1轮数据交换后,交换到切分后的数据An,并与计算核1存储的B1数据进行卷积运算,并将卷积运算的结果An*B1与该计算核之前得到的卷积运算结果C1[n-2]进行累加,得到该计算核中的处理数据与权值数据的并行运算结果,即卷积运算结果C1[n-1]=C1[n-2]+An*B1;其他计算核(计算核2~计算核n)类似,n各个计算核可以并行运算,此处不再赘叙。
应当理解,本公开对计算核之间每轮数据交换的顺序不做限定,在满足n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份的情况下,可以和任意计算核进行数据交换。
通过多个计算核之间进行切分后的权值数据,或者切分后的处理数据的交换,可以使n-1轮数据交换后,每个计算核均存储过n份权值数据或处理数据中的每一份,各计算核可以基于交换后的数据进行并行运算,不仅可以降低路由传输数据量,使各个计算核每轮可以交换处理数据或权值数据的数据量的1/n,还可根据计算需求对权值数据或处理数据切分,灵活选择交换切分后权值数据或切分后处理数据二者中数据容量小的一方。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,所述权值数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有处理数据,以及n份权值数据中的1份权值数据,每个计算核在初始状态下存储的权值数据不同;其中,n为整数;
多个计算核之间进行数据交换,包括:
每个计算核对初始状态下存储的处理数据和1份权值数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份权值数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份权值数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
举例来说,各计算核接收对应的处理数据和切分后的权值数据,并对接收的数据进行卷积运算,获得运算结果。
将计算核存储的切分后的权值数据,分轮发送至其他计算核;其中,每轮各计算核同步收发权值数据,将接收的切分后的权值数据与处理数据进行卷积运算,并与上一轮的运算结果相加,得到各计算核该轮的并行运算结果;其中,各个计算核最后一轮的并行运算结果,可以作为该计算核中的处理数据与权值数据的卷积运算结果。
图5示出根据本公开的实施例的交换权值数据进行卷积运算的示意图。如图5所示,对处理数据Xn不做深度方向的切分,对权值数据W做深度方向的切分,即对权值数据W中各个卷积核的深度方向进行切分。其中,权值数据可以包括N个卷积核。
可以沿着深度方向将权值数据W切分为4份,分别为权值数据W0、权值数据W1、权值数据W2和权值数据W3。例如,假设权值数据W的深度为128,可以沿着深度方向将权值数据切分为4份,W0表示深度为0~31的权值数据,W1表示深度为32~63的权值数据,W2表示深度为64~95的权值数据,W3表示深度为96~127的权值数据。
在T0计算周期,将处理数据Xn(n=1~4)以及切分后的权值数据W0~W3分别送入计算核Core0~Core3,计算核Core0中存储着处理数据X0与权值数据W0,计算核Core1中存储着处理数据X1与权值数据W1,计算核Core2中存储着处理数据X2与权值数据W2,计算核Core3中存储着处理数据X3与权值数据W3。
其中,在不对处理数据深度方向切分的情况下,可以将相同的处理数据Xn(n=1~4)送入计算核Core0~Core3,即,各个计算核中存储的处理数据X0、X1、X2与X3相同;也可以将不同的处理数据Xn送入计算核Core0~Core3,即,各个计算核中存储的处理数据X0、X1、X2与X3不同。
各个计算核对接收的处理数据和切分后的权值数据进行卷积运算,获得卷积运算结果(部分和)。例如,计算核Core0对接收的处理数据X0和权值数据W0进行卷积运算,得到运算结果Vout_0,即Vout_0=X0*W0。其中,运算结果Vout_0为对应切分后权值数据W0的深度的部分和。
在T0计算周期计算完毕之后,计算核Core0~Core3在接下来的计算周期分轮将各自存储的权值数据W0~W3发送至其他计算核。在之后的每个计算周期中,各计算核同步收发对应的权值数据,并在权值数据收发完毕后,进行权值数据与处理数据的卷积运算,可以一边卷积运算一边相加上一轮(计算周期)的运算结果。其中,上一轮的运算结果(部分和)在本轮运算中称为初值膜电位。
在T1计算周期(即第一轮),各个计算核同步收发数据,例如,计算核Core0将权值数据W0发送给计算核Core2,计算核Core1将权值数据W1发送给计算核Core0,计算核Core2将权值数据W2发送给计算核Core3,计算核Core3将权值数据W3发送给计算核Core1。
数据收发完毕后,各计算核对接收到的权值数据与该计算核内存储的处理数据进行卷积运算,并将卷积运算结果与上一轮(T0计算周期)的运算结果相加,得到本轮(T1计算周期)的运算结果。
例如,计算核Core0可以将权值数据W0发送给计算核Core2,并接收计算核Core1发送的权值数据W1。将接收到的权值数据W1与计算核Core0存储的处理数据X0进行卷积运算,再将得到卷积运算结果X0*W1与上一轮(T0计算周期)的运算结果Vout_0相加,得到运算结果Vout_1,即Vout_1=X0*W1+Vout_0。其中,运算结果Vout_1为对应切分后权值数据W0与权值数据W1的深度的部分和。
计算核Core0可以一边卷积运算,一边相加上一轮的运算结果Vout_0,上一轮的运算结果Vout_0在本轮运算中称为初值膜电位。
在T2计算周期(即第二轮),各个计算核同步收发数据,计算核Core0将权值数据W0发送给计算核Core1,计算核Core1将权值数据W1发送给计算核Core3,计算核Core2将权值数据W2发送给计算核Core0,计算核Core3将权值数据W3发送给计算核Core2。
数据收发完毕后,各计算核对接收到的权值数据与该计算核内存储的处理数据进行卷积运算,并将卷积运算结果与上一轮(T1计算周期)的运算结果相加,得到本轮(T2计算周期)的运算结果。
例如,计算核Core0可以将权值数据W0发送给计算核Core1,并接收计算核Core2发送的权值数据W2,并将接收到的权值数据W2与计算核Core0存储的处理数据X0进行卷积运算,再将得到卷积运算结果X0*W2与上一轮(T1计算周期)的运算结果Vout_1相加,得到运算结果Vout_2,即Vout_2=X0*W2+Vout_1。其中,运算结果Vout_2为对应切分后权值数据W0、权值数据W1与权值数据W2的深度的部分和。上一轮的运算结果Vout_1在本轮运算中称为初值膜电位。
在T3计算周期(即第三轮),各个计算核同步收发数据,计算核Core0将权值数据W0发送给计算核Core3,计算核Core1将权值数据W1发送给计算核Core2,计算核Core2将权值数据W2发送给计算核Core1,计算核Core3将权值数据W3发送给计算核Core0。
数据收发完毕后,各计算核对接收到的权值数据与该计算核内存储的处理数据进行卷积运算,并将卷积运算结果与上一轮(T2计算周期)的运算结果相加,得到本轮(T3计算周期)的并行运算结果。其中,各个计算核在本轮(T3计算周期)的并行运算结果为最后一轮,可以作为该计算核中的处理数据与权值数据的卷积运算结果。
例如,计算核Core0可以将权值数据W0发送给计算核Core3,并接收计算核Core3发送的权值数据W3,并将接收到的权值数据W3与计算核Core0存储的处理数据X0进行卷积运算,再将得到卷积运算结果X0*W3与上一轮(T1计算周期)的运算结果Vout_2相加,得到运算结果Vout_3,即Vout_3=X0*W3+Vout_3。其中,运算结果Vout_3为对应切分后权值数据W0~W3的深度的部分和。上一轮的运算结果Vout_2在本轮运算中称为初值膜电位。
应当理解,如果每个计算核中存储的处理数据Xn相同,经过T0~T3计算周期后,各计算核的运算结果相同;如果每个计算核中存储的处理数据Xn不同,经过T0~T3计算周期后,各计算核的运算结果不同。
通过将权值数据W沿着深度方向切分为n份(W1,W2,…,Wn),将拆分后的权值数据W1~Wn分别送入n个计算核,可以降低权值数据在每个计算核内的数据存储容量,占用的存储容量为拆分前的权值数据的1/n大小,各个计算核每轮需要传输的权值数据的数据量也降为切分前权值数据W的1/n大小,可以减少路由传输时间。并将每个计算核的权值数据通过n-1轮发送(对应T1~Tn-1计算周期),遍历至其他n-1个计算核,可以重复利用每一个计算核内数据缓存中存储的权值数据,提高数据缓存计算资源的利用率,节省存储空间。通过计算核间交换切分后权值数据的方式,可以一边卷积运算一边同初值膜电位相加,完成部分和的计算,各计算核可以并行运算,提高计算效率,还可以避免直接交换部分和数据对路由传输的高位宽和大数据量的压力,增大数据传输的路由延时。
在一种可能的实现方式中,可以分多轮进行n个计算核之间的权值数据交换,在每轮发送中,将n个计算核中的每个计算核的权值数据分别发送给n个计算核中一个目标计算核,其中,每个计算核对应的目标计算核各不相同;
在多个计算核之间的权值数据交换,存在多个计算核发送数据至一个计算核或者一个计算核发送数据至多个计算核的情况,在这种情况下,可以分多轮进行所述计算核之间的权值数据交换。其中,在n个计算核之间进行权值数据交换的情况下,可以通过在每轮权值数据交换的过程中,使各发送数据的计算核只需发送给一个计算核,各接收数据的计算核也只需要接收一个计算核的数据。
在一种可能的实现方式中,通过装载膜电位计算部分和的过程中,在n个计算核之间进行权值数据交换的情况下,n个计算核中的每个计算核的权值数据需要传输至其余n-1个计算核组成的目标计算核组,分多轮进行所述计算核之间的数据交换;
在每轮发送中,将n个计算核中的每个计算核的数据分别发送给n个计算核中一个目标计算核,包括:在每轮发送中,从各目标计算核组中,分别选取一个不同的计算核作为目标计算核,共发送n-1轮。
举例来说,在n个计算核之间进行数据交换的情况下,每一个计算核可以对应一个由其他n-1个计算核组成的目标计算核组,n个计算核对应n个目标计算核组。可以通过n-1轮发送完成n个计算核之间的数据交换。在每轮发送中,从n个目标计算核组中分别选取一个不同的计算核作为目标计算核,将n个计算核内存储的权值数据分别发送至对应的目标计算核。
例如,在4个计算核(n=1~4)之间进行数据交换,Core0、Core1、Core2、Core3分别对应4个计算核,每一个计算核内存储的权值数据需要传输至其余3个计算核组成的目标计算核组。
计算核Core0存储的权值数据需要传输至目标计算核组:Core1、Core2、Core3;
计算核Core1存储的权值数据需要传输至目标计算核组:Core0、Core2、Core3;
计算核Core2存储的权值数据需要传输至目标计算核组:Core0、Core1、Core3;
计算核Core3存储的权值数据需要传输至目标计算核组:Core0、Core1、Core2;
计算核Core0~Core3在每轮发送中,分别从各自对应的目标计算核组中,选取一个不同的计算核作为目标计算核,即从各计算核组中选取出的计算核彼此不同。将计算核Core0~Core3中各计算核存储的权值数据分别发送至对应的目标计算核,共发送3轮。并且,在3轮发送过程中需要遍历各组计算核中的每一个计算核。
例如,第一轮可以从计算核Core0对应的目标计算核组中选取Core3作为目标计算核、从计算核Core1对应的目标计算核组中选取Core2作为目标计算核、从计算核Core2对应的目标计算核组中选取Core1作为目标计算核、从计算核Core3对应的目标计算核组中选取Core0作为目标计算核,计算核Core0~Core3分别将各自存储的权值数据发送至对应的目标计算核Core3、Core2、Core1、Core0;
第一轮还可以从计算核Core0对应的目标计算核组中选取Core1作为目标计算核、从计算核Core1对应的目标计算核组中选取Core2作为目标计算核、从计算核Core2对应的目标计算核组中选取Core3作为目标计算核、从计算核Core3对应的目标计算核组中选取Core0作为目标计算核,计算核Core0~Core3分别将各自存储的权值数据发送至对应的目标计算核Core1、Core2、Core3、Core0;应当理解,对于每轮目标计算核的选取,在满足每一轮各组选取的目标计算核不相同的情况下,本公开对选取方式不做限定。
对于第二轮,第三轮选取目标计算核,需要在各组中之前未接收过权值数据的计算核(即未作为目标计算核的计算核)中选取。
例如,假如第一轮从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core3、Core2、Core1、Core0作为目标计算核。
第二轮可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core1、Core3、Core0、Core2作为目标计算核;第三轮可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core2、Core0、Core3、Core1作为目标计算核。或者,第二轮也可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core2、Core0、Core3、Core1作为目标计算核;第三轮可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core1、Core3、Core0、Core2作为目标计算核。
通过上述在n个计算核之间进行权值数据交换的方法,计算核之间的权值数据可以通过多轮交换的方式共享给其他计算核。n个不同计算核的权值数据通过n-1轮发送,可以使每一个计算核的权值数据遍历至其他n-1个计算核。而且可以重复利用数据存储空间,节省存储空间,提高数据空间的重复利用率。
在一种可能的实现方式中,图6示出根据本公开的实施例的权值数据交换方法的示意图。如图6所示,假设Core0、Core1、Core2、Core3分别对应4个计算核(n=4),可以表示为计算核Core0、计算核Core1、计算核Core2、以及计算核Core3。计算核Core0存储了卷积核个数为0~31的权值数据W0,计算核Core1存储了卷积核个数为32~63的权值数据W1,计算核Core2存储了卷积核个数为64~95的权值数据W2,计算核Core3存储了卷积核个数为96~127的权值数据W3。
在T0计算周期,计算核Core0、计算核Core1、计算核Core2、以及计算核Core3根据各计算核内存储的权值数据进行卷积运算。
例如,计算核Core0的轴突单元对该计算核内的存储单元执行读取操作,并对读取的处理数据和权值数据W0进行卷积运算,得到卷积运算的结果,然后再将卷积运算结果按照该计算核设定的存储顺序(例如,从低地址到高地址的顺序,本公开不做限定)写入计算核Core0的存储单元。
如图6所示,计算核Core0~Core3之间交换权值数据的过程可以包括T1~T3三个计算周期,其中,三个周期对应分多轮进行计算核之间的权值数据交换的轮数(即第一轮~第三轮)。
在T1计算周期(即第一轮),计算核Core0可以将权值数据W0送入计算核Core1,计算核Core1可以将权值数据W1送入计算核Core2,计算核Core2可以将权值数据W2送入计算核Core3,计算核Core3可以将权值数据W3送入计算核Core0。
例如,计算核Core0可以将权值数据W0送入计算核Core1,包括:计算核Core0的路由单元对该计算核的存储单元执行读取操作,并将读取的权值数据W0发送给计算核Core1。计算核Core1的路由单元对该计算核的存储单元执行写入操作,将接收到的由计算核Core0发送的权值数据W0,按照计算核Core1设定的存储顺序(例如,从低地址到高地址的顺序,本公开不做限定)写入计算核Core1的存储单元。应当理解,各计算核将待发送数据送入其它计算核的过程可以参考上述过程,不再赘叙。
在T2计算周期(即第二轮),计算核Core0可以将权值数据W0送入计算核Core2,计算核Core1可以将权值数据W1送入计算核Core3,计算核Core2可以将权值数据W2送入计算核Core0,计算核Core3可以将权值数据W3送入计算核Core1。
在T3计算周期(即第三轮),计算核Core0可以将权值数据W0送入计算核Core3,计算核Core1可以将权值数据W1送入计算核Core0,计算核Core2可以将权值数据W2送入计算核Core1,计算核Core3可以将权值数据W3送入计算核Core2。
四个不同的计算核之间可以通过3个计算周期(T1~T3计算周期)完成四个计算核的循环交换过程,并且在每个计算周期中,都可以遍历各个计算核,各个计算核发送和接收的数据量相同。
在上述四个计算周期中,计算核Core0内存储的权值数据W0、计算核Core1存储的权值数据W1、计算核Core2存储的权值数据W2、以及计算核Core3存储的权值数据W3为不可擦除数据,并且所在的计算核内存储部件中地址空间保持不变,例如,每一个权值数据W0~W3可以存储于各自计算核存储部件的1~4地址空间。
在不包括T0计算周期的其他计算周期(T1~T3),各计算核接收的权值数据是可以擦除的,在该计算周期根据该权值数据进行卷积运算后,可以被下一个周期接收的权值数据覆盖。例如,在T2计算周期,计算核Core0接收了计算核Core2发送的权值数据W2,可以将权值数据W2存储在该计算核存储部件中5~8地址空间,覆盖计算核Core0在T1计算核周期接收的计算核Core3发送的权值数据W3。在T3计算周期,计算核Core0接收的计算核Core2发送的权值数据W2,可以被计算核Core1发送的权值数据W1覆盖。
需要说明的是,尽管以计算核Core0~计算核Core3间的权值数据交换作为示例,介绍了循环遍历的数据交换方法如上,但本领域技术人员能够理解,本公开应不限于此,对计算核的数量不做限制,n个不同计算核的权值数据可以通过n-1轮发送,使权值数据遍历至所有计算核。其中,n-1轮代表数据交换的计算周期的轮数。
通过上述多个计算核之间循环遍历的数据交换方法,计算核之间的权值数据可以通过多轮交换的方式共享给其他计算核。
在一种可能的实现方式中,进行数据交换的数据包括切分后的处理数据,所述处理数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有权值数据,以及n份处理数据中的1份处理数据,每个计算核在初始状态下存储的处理数据不同;
多个计算核之间进行数据交换,包括:
每个计算核对初始状态下存储的权值数据和1份处理数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份处理数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份处理数据中的每一份;其中,n为整数;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
举例来说,各计算核接收对应的切分后的处理数据和权值数据,并对接收的数据进行卷积运算,获得运算结果。
将计算核存储的切分后的处理数据,分轮发送至其他计算核;其中,每轮各计算核同步收发处理数据,将接收的切分后的处理数据与权值数据进行卷积运算,并与上一轮的运算结果相加,得到各计算核该轮的并行运算结果;其中,各个计算核最后一轮的并行运算结果,可以作为该计算核中的权值数据与处理数据的卷积运算结果。
对权值数据Wn不做深度方向的切分,对处理数据X做深度方向的切分。其中,每个权值数据Wn可以包括多个卷积核,具体的卷积核数量,本公开不做限定。
可以沿着深度方向将处理数据X切分为4份,分别为处理数据X0、处理数据X1、处理数据X2和处理数据X3。例如,假设处理数据X的深度为128,可以沿着深度方向将处理数据切分为4份,X0表示深度为0~31的处理数据,X1表示深度为32~63的处理数据,X2表示深度为64~95的处理数据,X3表示深度为96~127的处理数据。应当理解,此处非下标形式的X、X0、X1、X2、X3与上文中下标形式的Xn、X0、X1、X2与X3代表的含义不同,非下标形式的X、X0、X1、X2、X3表示切分后的处理数据,下标形式的Xn、X0、X1、X2与X3表示未切分的处理数据。
在T0计算周期,将权值数据Wn(n=1~4)以及切分后的处理数据X0~X3分别送入计算核Core0~Core3,计算核Core0中存储着权值数据W0与处理数据X0,计算核Core1中存储着权值数据W1与处理数据X1,计算核Core2中存储着权值数据W2与处理数据X2,计算核Core3中存储着权值数据W3与处理数据X3。
其中,在不对权值数据深度方向切分的情况下,可以将相同的权值数据Wn(n=1~4)送入计算核Core0~Core3,即,各个计算核中存储的权值数据W0、W1、W2与W3相同;也可以将不同的权值数据Wn送入计算核Core0~Core3,即,各个计算核中存储的权值数据W0、W1、W2与W3不同。应当理解,此处下标形式的Wn、W0、W1、W2与W3与上文中非下标形式的W、W0、W1、W2、W3代表的含义不同,下标形式的Wn、W0、W1、W2与W3表示未切分的权值数据,W、W0、W1、W2与W3表示切分后的权值数据。
各个计算核对接收的权值数据和切分后的处理数据进行卷积运算,获得卷积运算结果(部分和)。例如,计算核Core0对接收的权值数据W0和处理数据X0进行卷积运算,得到运算结果Vout_0,即Vout_0=W0*X0。其中,运算结果Vout_0为对应切分后处理数据X0的深度的部分和。
在T0计算周期计算完毕之后,计算核Core0~Core3在接下来的计算周期分轮将各自存储的处理数据X0~X3发送至其他计算核。在之后的每个计算周期中,各计算核同步收发对应的处理数据,并在处理数据收发完毕后,进行处理数据与权值数据的卷积运算,可以一边卷积运算一边相加上一轮(计算周期)的运算结果。其中,上一轮的运算结果(部分和)在本轮运算中称为初值膜电位。
在T1计算周期(即第一轮),各个计算核同步收发数据,例如,计算核Core0将处理数据X0发送给计算核Core2,计算核Core1将处理数据X1发送给计算核Core0,计算核Core2将处理数据X2发送给计算核Core3,计算核Core3将处理数据X3发送给计算核Core1。
数据收发完毕后,各计算核对接收到的处理数据与该计算核内存储的权值数据进行卷积运算,并将卷积运算结果与上一轮(T0计算周期)的运算结果相加,得到本轮(T1计算周期)的运算结果。
例如,计算核Core0可以将处理数据X0发送给计算核Core2,并接收计算核Core1发送的处理数据X1。将接收到的处理数据X1与计算核Core0存储的权值数据W0进行卷积运算,再将得到卷积运算结果W0*X1与上一轮(T0计算周期)的运算结果Vout_0相加,得到运算结果Vout_1,即Vout_1=W0*X1+Vout_0。其中,运算结果Vout_1为对应切分后处理数据X0与处理数据X1的深度的部分和。
计算核Core0可以一边卷积运算,一边相加上一轮的运算结果Vout_0,上一轮的运算结果Vout_0在本轮运算中称为初值膜电位。
在T2计算周期(即第二轮),各个计算核同步收发数据,计算核Core0将处理数据X0发送给计算核Core1,计算核Core1将处理数据X1发送给计算核Core3,计算核Core2将处理数据X2发送给计算核Core0,计算核Core3将处理数据X3发送给计算核Core2。
数据收发完毕后,各计算核对接收到的处理数据与该计算核内存储的权值数据进行卷积运算,并将卷积运算结果与上一轮(T1计算周期)的运算结果相加,得到本轮(T2计算周期)的运算结果。
例如,计算核Core0可以将处理数据X0发送给计算核Core1,并接收计算核Core2发送的处理数据X2,并将接收到的处理数据X2与计算核Core0存储的权值数据W0进行卷积运算,再将得到卷积运算结果W0*X2与上一轮(T1计算周期)的运算结果Vout_1相加,得到运算结果Vout_2,即Vout_2=W0*X2+Vout_1。其中,运算结果Vout_2为对应切分后处理数据X0、处理数据X1与处理数据X2的深度的部分和。上一轮的运算结果Vout_1在本轮运算中称为初值膜电位。
在T3计算周期(即第三轮),各个计算核同步收发数据,计算核Core0将处理数据X0发送给计算核Core3,计算核Core1将处理数据X1发送给计算核Core2,计算核Core2将处理数据X2发送给计算核Core1,计算核Core3将处理数据X3发送给计算核Core0。
数据收发完毕后,各计算核对接收到的处理数据与该计算核内存储的权值数据进行卷积运算,并将卷积运算结果与上一轮(T2计算周期)的运算结果相加,得到本轮(T3计算周期)的并行运算结果。其中,各个计算核在本轮(T3计算周期)的并行运算结果为最后一轮,可以作为该计算核中的权值数据与处理数据的卷积运算结果。
例如,计算核Core0可以将处理数据X0发送给计算核Core3,并接收计算核Core3发送的处理数据X3,并将接收到的处理数据X3与计算核Core0存储的权值数据W0进行卷积运算,再将得到卷积运算结果W0*X3与上一轮(T1计算周期)的运算结果Vout_2相加,得到运算结果Vout_3,即Vout_3=W0*X3+Vout_3。其中,运算结果Vout_3为对应切分后处理数据X0~X3的深度的部分和。上一轮的运算结果Vout_2在本轮运算中称为初值膜电位。
应当理解,如果每个计算核中存储的权值数据Wn相同,经过T0~T3计算周期后,各计算核的运算结果相同;如果每个计算核中存储的权值数据Wn不同,经过T0~T3计算周期后,各计算核的运算结果不同。
通过将处理数据X沿着深度方向切分为n份(X1,X2,…,Xn),将拆分后的处理数据X1~Xn分别送入n个计算核,可以降低处理数据在每个计算核内的数据存储容量,占用的存储容量为拆分前的处理数据的1/n大小,各个计算核每轮需要交换的处理数据的数据量也降为切分前处理数据X的1/n大小,可以减少路由传输时间。并将每个计算核的处理数据通过n-1轮发送(对应T1~Tn-1计算周期),遍历至其他n-1个计算核,可以重复利用每一个计算核内数据缓存中存储的处理数据,提高数据缓存计算资源的利用率,节省存储空间。通过计算核间交换切分后处理数据的方式,可以一边卷积运算一边同初值膜电位相加,完成部分和的计算,各计算核可以并行运算,提高计算效率,还可以避免直接交换部分和数据对路由传输的高位宽和大数据量的压力,增大数据传输的路由延时。
在一种可能的实现方式中,在部分和计算的过程中,可以分多轮进行n个计算核之间的处理数据交换,在每轮发送中,将n个计算核中的每个计算核的处理数据分别发送给n个计算核中一个目标计算核,其中,每个计算核对应的目标计算核各不相同;
在多个计算核之间的处理数据交换,存在多个计算核发送数据至一个计算核或者一个计算核发送数据至多个计算核的情况,在这种情况下,可以分多轮进行所述计算核之间的处理数据交换。其中,在n个计算核之间进行处理数据交换的情况下,可以通过在每轮处理数据交换的过程中,使各发送数据的计算核只需发送给一个计算核,各接收数据的计算核也只需要接收一个计算核的数据。
在一种可能的实现方式中,通过装载膜电位计算部分和的过程中,在n个计算核之间进行处理数据交换的情况下,n个计算核中的每个计算核的处理数据需要传输至其余n-1个计算核组成的目标计算核组,分多轮进行所述计算核之间的数据交换;
在每轮发送中,将n个计算核中的每个计算核的数据分别发送给n个计算核中一个目标计算核,包括:在每轮发送中,从各目标计算核组中,分别选取一个不同的计算核作为目标计算核,共发送n-1轮。
举例来说,在n个计算核之间进行数据交换的情况下,每一个计算核可以对应一个由其他n-1个计算核组成的目标计算核组,n个计算核对应n个目标计算核组。可以通过n-1轮发送完成n个计算核之间的数据交换。在每轮发送中,从n个目标计算核组中分别选取一个不同的计算核作为目标计算核,将n个计算核内存储的处理数据分别发送至对应的目标计算核。
例如,在4个计算核(n=1~4)之间进行数据交换,Core0、Core1、Core2、Core3分别对应4个计算核,每一个计算核内存储的处理数据需要交换至其余3个计算核组成的目标计算核组。
计算核Core0存储的处理数据需要交换至目标计算核组:Core1、Core2、Core3;
计算核Core1存储的处理数据需要交换至目标计算核组:Core0、Core2、Core3;
计算核Core2存储的处理数据需要交换至目标计算核组:Core0、Core1、Core3;
计算核Core3存储的处理数据需要交换至目标计算核组:Core0、Core1、Core2;
计算核Core0~Core3在每轮发送中,分别从各自对应的目标计算核组中,选取一个不同的计算核作为目标计算核,即从各计算核组中选取出的计算核彼此不同。将计算核Core0~Core3中各计算核存储的处理数据分别发送至对应的目标计算核,共发送3轮。并且,在3轮发送过程中需要遍历各组计算核中的每一个计算核。
例如,第一轮可以从计算核Core0对应的目标计算核组中选取Core3作为目标计算核、从计算核Core1对应的目标计算核组中选取Core2作为目标计算核、从计算核Core2对应的目标计算核组中选取Core1作为目标计算核、从计算核Core3对应的目标计算核组中选取Core0作为目标计算核,计算核Core0~Core3分别将各自存储的处理数据发送至对应的目标计算核Core3、Core2、Core1、Core0;
第一轮还可以从计算核Core0对应的目标计算核组中选取Core1作为目标计算核、从计算核Core1对应的目标计算核组中选取Core2作为目标计算核、从计算核Core2对应的目标计算核组中选取Core3作为目标计算核、从计算核Core3对应的目标计算核组中选取Core0作为目标计算核,计算核Core0~Core3分别将各自存储的处理数据发送至对应的目标计算核Core1、Core2、Core3、Core0;应当理解,对于每轮目标计算核的选取,在满足每一轮各组选取的目标计算核不相同的情况下,本公开对选取方式不做限定。
对于第二轮,第三轮选取目标计算核,需要在各组中之前未接收过处理数据的计算核(即未作为目标计算核的计算核)中选取。
例如,假如第一轮从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core3、Core2、Core1、Core0作为目标计算核。
第二轮可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core1、Core3、Core0、Core2作为目标计算核;第三轮可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core2、Core0、Core3、Core1作为目标计算核。或者,第二轮也可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core2、Core0、Core3、Core1作为目标计算核;第三轮可以从计算核Core0~Core3对应的目标计算核组中分别选取了计算核Core1、Core3、Core0、Core2作为目标计算核。
通过上述在n个计算核之间进行处理数据交换的方法,计算核之间的处理数据可以通过多轮交换的方式共享给其他计算核。n个不同计算核的处理数据通过n-1轮发送,可以使每一个计算核的处理数据遍历至其他n-1个计算核。而且可以重复利用数据存储空间,节省存储空间,提高数据空间的重复利用率。
在一种可能的实现方式中,进行数据交换的数据包括部分和数据,所述多个计算核包括n个计算核,每个计算核中存储有n份部分和数据,
多个计算核之间进行数据交换,包括:
在所述n个计算核之间,进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段或同一列段;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照行方向或列方向进行n份切分后得到的。
举例来说,图7示出根据本公开的实施例的部分和数据并行运算的示意图。如图7所示,在4个(n=4)计算核之间进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段。假设Sm=0、Sm=1、Sm=2、Sm=3分别对应四个计算核,可以表示为计算核Sm=0、计算核Sm=1、计算核Sm=2、以及计算核Sm=3。其中,如图7第一行所示,计算核Sm=0存储了深度为0~31的部分和数据,计算核Sm=1存储了深度为32~63的部分和数据,计算核Sm=2存储了深度为64~95的部分和数据,计算核Sm=3存储了深度为96~127的部分和数据。其中,对应不同深度的各个部分和数据还包括了不同行段的数据,即“0~13行”区域的数据、“14~27行”区域的数据、“28~41行”区域的数据、以及“42~55行”区域的数据。“深度”可对应于切分的权值数据的深度和切分的处理数据的深度。
其中,部分和数据可以是图像数据,例如,对于多层卷积运算,计算核Sm=0中存储的“0~13行”区域的数据,可以对应所在层处理数据“0~13行”(即行段为0~13行)的像素与对应权值数据(例如切分后的权值数据的一部分W0~W4)的卷积运算结果(部分和),例如Sm=0中存储的“0~13行”区域的数据,可以是“0~13行”、深度为0~31的处理数据与深度为0~31的权值数据的卷积运算结果,可以作为下一层处理数据的“0~13行”的像素。
图8示出根据本公开的实施例的部分和数据并行交换的示意图。如图8所示,计算核Sm=0、计算核Sm=1、计算核Sm=2、以及计算核Sm=3需要并行发送“0~13行”区域的数据、“14~27行”区域的数据、“28~41行”区域的数据、以及“42~55行”区域的数据至对应的目标计算核。
在交换过程中,将同一区域(对应于同一行段)的数据发送至同一计算核,使每个计算核收到的数据为同一区域的数据。
例如,计算核Sm=1、计算核Sm=2、计算核Sm=3并行将不同深度段的“0~13行”区域的数据发送至计算核Sm=0,计算核Sm=0本身存储的“0~13行”区域的数据保持不变;
计算核Sm=0、计算核Sm=2、计算核Sm=3并行将不同深度段的“0~27行”区域的数据发送至计算核Sm=1,计算核Sm=1本身存储的“14~27行”区域的数据保持不变;
计算核Sm=0、计算核Sm=1、计算核Sm=3并行将不同深度段的“28~41行”区域的数据发送至计算核Sm=2,计算核Sm=2本身存储的“28~41行”区域的数据保持不变;
计算核Sm=0、计算核Sm=1、计算核Sm=2并行将不同深度段的“42~55行”区域的数据发送至计算核Sm=3,计算核Sm=3本身存储的“42~55行”区域的数据保持不变。
应该理解,上述各计算核收发数据的操作可以并行同步执行。各计算核将收到不同深度段的数据在每个计算核同步执行相加计算,得到部分处理数据和权值数据的卷积运算结果。如图7第二行所示,计算核Sm=0存储了深度为0~127的“0~13行”区域的数据,计算核Sm=1存储了深度为0~127的“14~27行”区域的数据,计算核Sm=2存储了深度0~127的“28~41行”区域的数据,计算核Sm=3存储了深度为0~127的“42~55行”区域的数据。
应当理解,在交换的数据为对应于处理数据的同一列段的部分和数据的情况下,即,在n计算核之间进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一列段。每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照列方向进行n份切分后得到的。可以参考上文,此处不再赘婿。
通过多个计算核并行同步计算部分和,可以提高计算速度,节省计算时间。
在一种可能的实现方式中,本公开实施例还提供了一种处理器,所述处理器包括多个计算核,所述处理器实现处理数据和权值数据的卷积运算,包括:多个计算核之间进行数据交换;各计算核基于交换后的数据进行并行运算,得到并行运算结果;根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;其中,进行数据交换的数据包括切分后的权值数据、切分后的处理数据和部分和数据中的一种,所述部分和数据是根据切分后的处理数据或切分后的权值数据得到的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,或者切分后的处理数据;所述权值数据或处理数据切分为n份;
多个计算核之间进行数据交换,包括:n个计算核之间进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,或者,基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的权值数据,所述权值数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有处理数据,以及n份权值数据中的1份权值数据,每个计算核在初始状态下存储的权值数据不同;其中,n为整数;
多个计算核之间进行数据交换,包括:每个计算核对初始状态下存储的处理数据和1份权值数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份权值数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份权值数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括切分后的处理数据,所述处理数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有权值数据,以及n份处理数据中的1份处理数据,每个计算核在初始状态下存储的处理数据不同;
多个计算核之间进行数据交换,包括:每个计算核对初始状态下存储的权值数据和1份处理数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份处理数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份处理数据中的每一份;其中,n为整数;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
在一种可能的实现方式中,进行数据交换的数据包括部分和数据,所述多个计算核包括n个计算核,每个计算核中存储有n份部分和数据,多个计算核之间进行数据交换,包括:在所述n个计算核之间,进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段或同一列段;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照行方向或列方向进行n份切分后得到的。
在一种可能的实现方式中,本公开实施例还提出一种人工智能芯片,所述芯片包括如上所述的处理器。如图1所示,所述芯片可以包括一个或多个处理器,所述处理器可以包括多个计算核,本公开对芯片内计算核的数量不做限制。
在一种可能的实现方式中,本公开实施例提出了一种电子设备,所述电子设备包括如上所述的人工智能芯片。
图9是示出根据本公开实施例的一种组合处理装置1200的结构图。如图9中所示,该组合处理装置1200包括计算处理装置1202(例如,上述包括多个计算核的人工智能处理器)、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210(例如,计算核)。
在一种可能的实现方式中,本公开的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本公开的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本公开的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本公开的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间交换数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并交换给其他处理装置。
附加地或可选地,本公开的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
根据不同的应用场景,本公开的人工智能芯片可用于服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
图10示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图10,电子设备1900包括处理组件1922(例如,包括多个计算核心的人工智能处理器),其进一步包括一个或多个计算核心,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在本公开中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本公开实施例所述方案的目的。另外,在一些场景中,本公开实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本公开的电子设备或处理器还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本公开的电子设备或处理器还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本公开方案的算力高的电子设备或处理器可以应用于云端设备(例如云端服务器),而功耗小的电子设备或处理器可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种数据处理方法,其特征在于,所述方法应用于处理器的计算核,所述处理器包括多个计算核,所述方法实现处理数据和权值数据的卷积运算;
所述方法包括:
多个计算核之间进行数据交换;
各计算核基于交换后的数据进行并行运算,得到并行运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;
其中,进行数据交换的数据包括切分后的权值数据、切分后的处理数据和部分和数据中的一种,所述部分和数据是根据切分后的处理数据或切分后的权值数据得到的卷积运算结果。
2.根据权利要求1所述的方法,其特征在于,进行数据交换的数据包括切分后的权值数据,或者切分后的处理数据;所述权值数据或处理数据切分为n份;
多个计算核之间进行数据交换,包括:
n个计算核之间进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,或者,基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
3.根据权利要求1或2所述的方法,其特征在于,进行数据交换的数据包括切分后的权值数据,所述权值数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有处理数据,以及n份权值数据中的1份权值数据,每个计算核在初始状态下存储的权值数据不同;其中,n为整数;
多个计算核之间进行数据交换,包括:
每个计算核对初始状态下存储的处理数据和1份权值数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份权值数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份权值数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
4.根据权利要求1或2所述的方法,其特征在于,进行数据交换的数据包括切分后的处理数据,所述处理数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有权值数据,以及n份处理数据中的1份处理数据,每个计算核在初始状态下存储的处理数据不同;
多个计算核之间进行数据交换,包括:
每个计算核对初始状态下存储的权值数据和1份处理数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份处理数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份处理数据中的每一份;其中,n为整数;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
5.根据权利要求1所述的方法,其特征在于,进行数据交换的数据包括部分和数据,所述多个计算核包括n个计算核,每个计算核中存储有n份部分和数据,
多个计算核之间进行数据交换,包括:
在所述n个计算核之间,进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段或同一列段;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照行方向或列方向进行n份切分后得到的。
6.一种处理器,其特征在于,所述处理器包括多个计算核,所述处理器实现处理数据和权值数据的卷积运算,包括:
多个计算核之间进行数据交换;
各计算核基于交换后的数据进行并行运算,得到并行运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果;
其中,进行数据交换的数据包括切分后的权值数据、切分后的处理数据和部分和数据中的一种,所述部分和数据是根据切分后的处理数据或切分后的权值数据得到的卷积运算结果。
7.根据权利要求6所述的处理器,其特征在于,进行数据交换的数据包括切分后的权值数据,或者切分后的处理数据;所述权值数据或处理数据切分为n份;
多个计算核之间进行数据交换,包括:
n个计算核之间进行n-1轮数据交换,使得在n-1轮数据交换后,每个计算核均存储过n份权值数据中的每一份,或者n份处理数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,或者,基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
8.根据权利要求6或7所述的处理器,其特征在于,进行数据交换的数据包括切分后的权值数据,所述权值数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有处理数据,以及n份权值数据中的1份权值数据,每个计算核在初始状态下存储的权值数据不同;其中,n为整数;
多个计算核之间进行数据交换,包括:
每个计算核对初始状态下存储的处理数据和1份权值数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份权值数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份权值数据中的每一份;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份权值数据与所存储的处理数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
9.根据权利要求6或7所述的处理器,其特征在于,进行数据交换的数据包括切分后的处理数据,所述处理数据按深度方向切分为n份,所述多个计算核包括n个计算核,每个计算核在初始状态下存储有权值数据,以及n份处理数据中的1份处理数据,每个计算核在初始状态下存储的处理数据不同;
多个计算核之间进行数据交换,包括:
每个计算核对初始状态下存储的权值数据和1份处理数据进行卷积运算,之后在所述n个计算核中进行n-1轮数据交换,在每轮数据交换中,每个计算核将初始存储的1份处理数据交换至其他计算核中的一个,使得在n-1轮数据交换后,每个计算核均存储过所述n份处理数据中的每一份;其中,n为整数;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
在每轮数据交换后,各计算核基于本轮数据交换中接收到的1份处理数据与所存储的权值数据进行卷积运算,并将卷积运算的结果与该计算核之前得到的卷积运算结果进行累加,得到该计算核的并运算结果;
根据各计算核的并行运算结果,确定处理数据和权值数据的卷积运算结果,包括:
将各计算核的并行运算结果,作为该计算核中的处理数据与权值数据的卷积运算结果。
10.根据权利要求6所述的处理器,其特征在于,进行数据交换的数据包括部分和数据,所述多个计算核包括n个计算核,每个计算核中存储有n份部分和数据,
多个计算核之间进行数据交换,包括:
在所述n个计算核之间,进行部分和数据的交换,使得交换后每个计算核中存储的部分和数据对应于处理数据的同一行段或同一列段;
各计算核基于交换后的数据进行并行运算,得到并行运算结果,包括:
每个计算核对数据交换后得到的部分和数据进行相加,得到部分处理数据和权值数据的卷积运算结果,所述部分处理数据为处理数据按照行方向或列方向进行n份切分后得到的。
11.一种人工智能芯片,其特征在于,所述芯片包括如权利要求6-10中任意一项所述的处理器。
12.一种电子设备,其特征在于,所述电子设备包括如权利要求11所述的人工智能芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110184423.3A CN112801278A (zh) | 2021-02-08 | 2021-02-08 | 数据处理方法、处理器、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110184423.3A CN112801278A (zh) | 2021-02-08 | 2021-02-08 | 数据处理方法、处理器、芯片及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112801278A true CN112801278A (zh) | 2021-05-14 |
Family
ID=75815100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110184423.3A Pending CN112801278A (zh) | 2021-02-08 | 2021-02-08 | 数据处理方法、处理器、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112801278A (zh) |
-
2021
- 2021-02-08 CN CN202110184423.3A patent/CN112801278A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832843B (zh) | 一种信息处理方法及相关产品 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN109753319B (zh) | 一种释放动态链接库的装置及相关产品 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114003198B (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN112801278A (zh) | 数据处理方法、处理器、芯片及电子设备 | |
CN114201727A (zh) | 数据的处理方法、处理器、人工智能芯片及电子设备 | |
CN112817898A (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN114282168A (zh) | 数值统计系统及数值统计方法 | |
CN112766475A (zh) | 处理部件及人工智能处理器 | |
US20230297386A1 (en) | Computing apparatus, integrated circuit chip, board card, electronic device, and computing method | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
US20230376562A1 (en) | Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method | |
CN114692847B (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN115237371A (zh) | 计算装置、数据处理方法及相关产品 | |
CN114692825A (zh) | 一种神经网络模型的量化训练方法、装置及设备 | |
CN114692846A (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 |