CN114580607A - 数据处理方法、装置和存储介质 - Google Patents
数据处理方法、装置和存储介质 Download PDFInfo
- Publication number
- CN114580607A CN114580607A CN202011403593.8A CN202011403593A CN114580607A CN 114580607 A CN114580607 A CN 114580607A CN 202011403593 A CN202011403593 A CN 202011403593A CN 114580607 A CN114580607 A CN 114580607A
- Authority
- CN
- China
- Prior art keywords
- data
- dimension
- splitting
- target
- determining
- 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
- 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/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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
Abstract
本公开涉及一种数据处理方法、装置和存储介质。其所公开的板卡包括:存储器件、接口装置和控制器件以及设置有数据处理装置的芯片;其中,数据处理装置与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现数据处理装置与外部设备之间的数据传输;控制器件,用于对数据处理装置的状态进行监控。本公开实施例所提供的数据处理方法、装置和存储介质,在执行神经网络运算任务时可以基于动态标签信息中的拆分索引对数据进行拆分、布局,提高了神经网络运算任务的处理效率和速度。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法、装置和存储介质。
背景技术
随着计算机技术的发展,神经网络(neural networks)也有了显著的进步,可以通过特定或者通用的处理器进行神经网络运算。相关技术中,在神经网络中数据类型多、运算量大、硬件限制等因素的影响下,神经网络运算的速度受到了很大限制。
发明内容
有鉴于此,本公开提出了一种数据处理方法、装置和存储介质。
根据本公开的一方面,提供了一种数据处理方法,应用于多核处理器,所述方法包括:
获取第一数据以及所述第一数据的标签信息,所述第一数据用于参与神经网络运算,所述标签信息包括静态标签信息和动态标签信息;
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引;
将所述拆分索引增加到所述动态标签信息中,以使所述多核处理器能够基于所述标签信息对所述第一数据进行所述神经网络运算,
其中,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关联的信息,所述动态标签信息用于表征所述第一数据与所述多核处理器相关联的信息。
根据本公开的另一方面,提供了一种数据处理装置,应用于多核处理器,所述装置包括:
信息获取模块,获取第一数据以及所述第一数据的标签信息,所述第一数据用于参与神经网络运算,所述标签信息包括静态标签信息和动态标签信息;
索引确定模块,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引;
标签增加模块,将所述拆分索引增加到所述动态标签信息中,以使所述多核处理器能够基于所述标签信息对所述第一数据进行所述神经网络运算,
其中,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关联的信息,所述动态标签信息用于表征所述第一数据与所述多核处理器相关联的信息。
根据本公开的另一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述数据处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述数据处理装置时,所述多个所述数据处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述数据处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述数据处理装置的互联方式是任意互联拓扑。
根据本公开的另一方面,提供了一种组合处理装置,所述组合处理装置包括:
如上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
根据本公开的另一方面,提供了一种芯片,所述芯片包括上述组合处理装置。
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上述芯片;
其中,所述数据处理装置与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述数据处理装置与外部设备之间的数据传输;
所述控制器件,用于对所述数据处理装置的状态进行监控,
其中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述数据处理装置通过总线连接,所述存储单元为:DDR SDRAM;
所述数据处理装置包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现上述数据处理方法。
本公开实施例所提供的数据处理方法、装置和存储介质,该方法包括:获取第一数据以及计算核簇第一数据的标签信息,计算核簇第一数据用于参与神经网络运算,计算核簇标签信息包括静态标签信息和动态标签信息;根据确定的计算核簇第一数据参与的操作所对应的算子的参数、计算核簇多核处理器中的内存通道数和计算核簇标签信息,确定出将计算核簇第一数据拆分成多个第二数据所需的拆分索引;将计算核簇拆分索引增加到计算核簇动态标签信息中,以使计算核簇多核处理器能够基于计算核簇标签信息对计算核簇第一数据进行计算核簇神经网络运算,其中,计算核簇静态标签信息用于表征计算核簇第一数据参与计算核簇神经网络运算相关联的信息,计算核簇动态标签信息用于表征计算核簇第一数据与计算核簇多核处理器相关联的信息。使得在执行神经网络运算任务时可以基于动态标签信息中的拆分索引对数据进行拆分、布局,提高了神经网络运算任务的处理效率和速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1a、图1b示出根据本公开一实施例的多核处理器架构示意图。
图1c、图1d示出根据本公开一实施例的计算核簇的架构示意图。
图2示出根据本公开一实施例的数据处理方法的流程图。
图3示出根据本公开一实施例的多核处理器1的架构示意图。
图4a示出根据本公开一实施例的多核处理器1执行运算任务A的计算任务分配示意图。
图4b示出根据本公开一实施例的多核处理器1执行运算任务A的过程示意图。
图5示出根据本公开一实施例的数据处理装置的框图。
图6是示出根据本公开实施例的一种组合处理装置1200的结构图。
图7是示出根据本公开实施例的一种板卡1300的结构示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
随着计算机技术及大数据的发展,多核处理器逐渐成为主流,多核处理器可以根据使用需要设置不同的架构。举例来说,多核处理器中可以包含多个计算核簇,每个计算核簇可以包括至少一个计算核,每个计算核簇可以设置有指定的存储器。图1a、图1b示出根据本公开一实施例的多核处理器架构示意图。图1c、图1d示出根据本公开一实施例的计算核簇的架构示意图。多核处理器可以为对称多处理器(Symmetrical Multi-Processing,简称SMP)架构,如图1a所示,假定该对称多处理器包括四个计算核簇(cluster)和四个存储器。计算核簇中的计算核(core)可以通过路由节点R访问存储器。其中,4个存储器分别为对应的4个计算核簇的“本地存储器”,但由于其对称设置,每个计算核簇中计算核在访问4个存储器时均需要经过两个路由节点R,在不发生拥挤的情况下,访问任何一个存储器的速率是相同的。例如,图1a中计算核簇x的“本地存储器”即为存储器a,在进行数据存取的过程中计算核簇x所对应的数据优先存储于“本地存储器”,计算核簇和其对应的“本地存储器”之间设置有对应的内存通道,以使得计算核簇可以通过该内存通道访问自身的“本地存储器”。这样,可以降低不同计算核簇中的计算核访问同一个存储器的几率。
多核处理器也可以为非统一对称存储访问(Non Uniform Memory AccessArchitecture,简称NUMA)架构,如图1b所示,假定非统一对称存储访问的多核处理器包括四个计算核簇和四个存储器。计算核簇中的计算核(core)可以通过路由节点R访问存储器。其中,4个存储器分别为对应的4个计算核簇的“本地存储器”,但由于其非对称设置,在不发生拥挤的情况下,每个计算核簇中计算核在访问其对应的“本地存储器”(如图1b中计算核簇n中的计算核访问存储器s)时,仅需要经过一个路由节点R,如计算核簇n中的计算核在访问存储器s的时候仅需要经过一个路由节点R,访问速率最快;每个计算核簇中计算核在访问其他非“本地存储器”需要经过至少两个路由节点R,访问速率慢。
可选地,在计算核簇设置多个计算核时,计算核簇中的组织结构也可以根据需要设置。计算核簇的架构可以是总线竞争型,如图1c所示,假定计算核簇中包括4个计算核,每个计算核均可以通过路由节点R进行存储器的访问。计算核簇的架构还可以是共享缓存型,如图1d所示,假定计算核簇中包括四个计算核,且设置有对应该计算核簇的核外缓存,计算核簇中的四个计算核共享该核外缓存。计算核簇中的每个计算核可以直接访问核外缓存且可以通过路由节点R访问存储器。
而为了实现神经网络运算任务等大数据量任务的加速,利用多核处理器进行运算时,一般会采用数据并行、模型并行和混合并行的方式进行具体的计算处理。数据并行是指不同的计算核处理同一神经网络的不同输入数据,相当于并行计算同一神经网络的多批次输入数据。模型并行是指不同的计算核处理同一神经网络同一输入数据的不同部分,也就是将神经网络中的各算子和数据进行拆解,每个计算核处理拆解后的一部分,相当于整个加速器并行处理一份输入数据。混合并行是指数据并行与模型并行的组合,比如计算核簇内使用模型并行,计算核簇间使用数据并行。但在多核处理器利用上述三种方式执行运算任务时,如何对算子、数据进行拆分、规划数据的存储位置,以保证运算任务的高效执行就是亟待解决的技术问题。
本公开提供一种数据处理方法,在实际执行神经网络运算任务之前,通过确定参与神经网络运算的第一数据的拆分索引、目标存储空间和目标数据交换层级,并将其添加到第一数据的动态标签信息中,使得多核处理器在执行运算任务时可以基于新的动态标签信息对数据进行拆分、布局、确定存储位置,提高了运算任务的处理效率和速度。本公开的数据处理方法具体可参见下文的描述。
图2示出根据本公开一实施例的数据处理方法的流程图。如图2所示,该方法应用于多核处理器,该方法包括步骤S11至步骤S13。
在步骤S11中,获取第一数据以及所述第一数据的标签信息,所述第一数据用于参与神经网络运算,所述标签信息包括静态标签信息和动态标签信息。其中,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关联的信息,所述动态标签信息用于表征所述第一数据与所述多核处理器相关联的信息。
在本实施例中,第一数据可以是参与神经网络运算各种数据类别的数据,如:输入神经元(Input Neuron)、输出神经元(Output Neuron)、隐藏神经元(Hidden Neuron)、常量神经元(Constant Neuron)、输入权值(Input Weight)、输出权值(Output Weight)、常量权值(Constant Weight)和辅助数据(Auxiliary)。第一数据所参与的神经网络运算可以包括卷积运算、全连接运算、池化运算、缩放运算等在神经网络中出现的运算,本公开对此不作限制。在实际的运算任务中通常是对一个或多个待运算数据进行运算处理,得到运算结果,第一数据可以是一个或多个待运算数据、运算结果中的一个或多个,本公开对此不作限制。
在本实施例中,静态标签信息可以包括描述第一数据本身性质的数据类型、维度、维度值等信息,还包括基于第一数据所参与的神经网络运算相关的信息。因此,同一第一数据在不同的神经网络中的静态标签信息可能不同。静态标签信息可以在神经网络建立之后确定。第一数据的静态标签信息可以适用于任意运行神经网络的处理器,也即在不同的处理器中第一数据的静态标签信息是不变的。
可选地,第一数据的静态标签信息可以是获取第一数据的过程(用户输入第一数据的过程)中处理器自动检测确定的,也可以是根据用户输入的信息确定的,本公开对此不作限制。
在一种可能的实现方式中,静态标签信息可以包括以下至少一项:数据类别、静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值。
在该实现方式中,数据类别表示的第一数据在神经网络中属于何种类别的数据,是基于用户是否可见、在神经网络中所参与操作等信息确定的。静态数据类型表示的是第一数据的类型和位数,如静态数据类型可以为32位浮点数或8位定点数等。静态数据维度可以是一维、二维、多维等维度,静态数据维度顺序可以表示第一数据的存储和/或读取的维度顺序。
可选地,静态数据维度可以包括但不限于以下至少一个:通道维度C、高度维度H、宽度维度W、数量维度N、深度维度D(用于三维卷积运算中)以及时间维度T(用于LSTM等RNN网络运算中),记录或者表征静态数据维度顺序可以使用前面6个字母或者其他对应各个静态数据维度的标识的排列顺序来实现,排列中顺序在前或者在左的静态数据维度先于顺序在后或者在右的静态数据维度。或者,也可以默认排列中顺序在前或者在左的静态数据维度高于顺序在后或者在右的静态数据维度。比如,第一数据的静态数据维度顺序为NCHW就代表第一数据是一个四维张量,其对应的静态数据维度顺序依次为数量维度N、通道维度C、高度维度H和宽度维度W,最高维是数量维度N,最低维是宽度维度W。第一数据的静态数据维度顺序为TNHWC代表第一数据为一个五维张量,其对应的静态数据维度顺序依次为时间维度T、数量维度N、高度维度H、宽度维度W和通道维度C,最高维是时间维度T,最低维是通道维度C。在实际用户输入或者多核处理器从物理存储器中获取时,第一数据会按照确定的静态数据维度顺序,映射成一维数组,存储在物理存储器上。对于一维张量(向量)可能不容易确定属于哪个维度。这种情况可以根据算子的算法定义确定。比如二维卷积中的偏置数据bias就是一维的,在算法定义中bias需要被叠加到输出特征图上,且每个输出通道叠加一个数,不同通道叠加的数不一样,因此一维bias的维度可以看成通道维度C。
在该实现方式中,对应每个静态数据维度的维度值表示的是对应静态数据维度的长度或尺寸。例如,某第一数据为矩阵,静态数据维度包括行和列,静态数据维度顺序为行优先,行的维度值为10、列的维度值为4,其表示行的长度为10、列的长度为4。
在一种可能的实现方式中,装置可以根据第一数据对应于神经网络的出度、入度和第一数据参与的神经网络中的操作,确定第一数据的数据类别。
在该实现方式中,入度表示该第一数据作为数据节点所参与的前续操作节点的数量(该第一数据为前续操作节点的输出),出度表示第一数据作为数据节点所参与的后续操作节点的数量(该第一数据为后续操作节点的输入)。例如,某第一数据cc可以是1个前续操作节点的输出、3个后续操作节点的输入,则该第一数据cc的出度为3、入度为1。可以为不同的数据类别设置不同的代码,以进行区分。如下表1所示,描述了不同数据类别的数据所具有的特点和对应的标识。
表1数据类别、对应标识及数据特点
其中,指令的出度和入度为零,用于触发神经网络运算。输入神经元、常量神经元、输入权值、常量权值、辅助数据的出度大于1、入度为0。输出神经元、输出权值的出度为0、入度大于或等于1。隐藏神经元的出度和入度均大于或等于1。
在一种可能的实现方式中,第一数据的静态标签信息可以表示为:
Static:classification,type1,DIM_A1…An,{x1…xn}
其中,static为表示标签信息为静态标签信息的标识。classification表示数据类别,type1表示静态数据类型。DIM_A1…An中的n表示静态数据维度,A1…An表示静态数据维度顺序为A1…An。A1的维度值为x1…An的维度值为xn。“,”、“{}”仅用于在本公开中分隔静态标签信息中的不同参数,并非静态标签信息的必备内容,实际应用中“,”、“{}”可以不存在,也可以由其他标识替代,本公开对此不作限制。
应当理解的是,本领域技术人员可以根据实际需要对静态标签信息、数据类别的标识,以及静态标签信息中各参数的位置进行设置,本公开对此不作限制。
在本实施例中,动态标签信息是在确定运行神经网络的处理器之后,根据静态标签信息、神经网络的算法特征、处理器的算力、性能等确定的,以使得具有动态标签信息的第一数据能够适用于处理器的运算。当神经网络采用不同的处理器进行运算时,第一数据的动态标签信息可以不同。当两个处理器的性能、算力等参数相同时,第一数据的动态标签信息可能相同。
在一种可能的实现方式中,动态标签信息可以包括以下至少一项:动态数据类型、动态数据维度顺序、分片参数、填充参数和数据尺寸。
在该实现方式中,动态数据类型可以是根据运行神经网络的处理器所能处理的数据的类型、算力等确定的。如,某处理器能够处理16位浮点数,那么在利用该处理器运行神经网络时,待处理数据的动态数据类型即为16位浮点数。动态数据维度顺序可以是根据运行神经网络的处理器读取或存储数据的需求确定。分片参数可以根据运行神经网络的处理器的算力确定的,例如,某处理器每一次能够进行8个数的运算,则可以将分片参数设置为8。填充参数可以根据该待处理数据的静态数据维度的维度值、分片参数确定的,填充参数可以包括在数据的不同维度需要填充的数据的长度和/或所需填充的填充数值。数据尺寸或者称为数据的大小、数据量,其是根据静态数据维度的维度值、分片参数以及填充参数确定的数据在实际参与运算中的各运算维度值、数据位宽的乘积,如,某数据为矩阵,在运算过程中两个维度的其分别运算维度值为4、8,数据位宽为4,则该数据的数据尺寸则为4×8×4=128bytes。
在一种可能的实现方式中,确定动态标签信息的步骤包括:获取运行神经网络的目标处理器(也即上述多核处理器)的信息。目标处理器的信息中可以包括目标处理器所能处理的数据的数据类型,目标处理器的读取、存储数据的维度顺序,目标处理器每一次处理的数据位数(或处理的数的个数)等与目标数量的算力和性能相关的信息。进而,数据处理装置可以根据目标处理器的信息和第一数据的静态标签信息,通过以下至少一项操作确定第一数据的动态标签信息:
根据目标处理器所能处理的数据的数据类型确定动态数据类型;
根据目标处理器的读取、存储数据的维度顺序确定动态数据维度顺序;
根据目标处理器每一次处理的数据位数确定分片参数;
根据分片参数、静态数据维度的维度值确定填充参数;
根据静态数据维度的维度值、分片参数以及填充参数确定数据尺寸。
在一种可能的实现方式中,第一数据的动态标签信息可以表示为:
dynamic:type2,DIM_B1…Bn,tiling,padding,size
其中,dynamic表示该标签信息为动态标签信息的标识。type2表示动态数据类型。DIM_B1…Bn表示动态数据维度顺序为B1…Bn。Tiling为分片参数。Padding为填充参数,size为数据尺寸,其表示经过维度转换、tiling或padding之后的数据所占用存储空间的大小。“,”仅用于在本公开中分隔动态标签信息中的不同参数,并非动态标签信息的必备内容,实际应用中“,”、可以不存在,也可以由其他标识替代,本公开对此不作限制。
在步骤S12中,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引。
在一种可能的实现方式中,步骤S12可以包括:
根据确定的所述第一数据参与的操作所对应的算子的参数和所述标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略;
根据所述拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引。
其中,所述拆分策略包括所述第一数据的至少一个可拆分维度以及每个可拆分维度对应的优先级别。所述拆分索引包括:目标拆分维度、每个第二数据在所述第一数据的目标拆分维度上的起始拆分位置和结束拆分位置,所述目标拆分维度为所述至少一个可拆分维度中被选中的维度。
在该实现方式中,算子的参数用于表示或描述该算子所需进行的运算的种类、实现其对应运算所需的参数,如卷积运算、池化运算等的算子的参数。
在该实现方式中,拆分策略可以指示数据在参与不同的多核处理器中、不同类型的神经网络运算、作为运算中不同的数据类别所对应的、可选的拆分方式,据此可以将数据按照不同的方式进一步拆分为多个数据。而拆分索引则表示第一数据在当前多核处理器、作为某一指定数据类别的数据参与当前类型的运算所对应的、与从拆分策略中给定的至少一种可选择的拆分方式中确定出的一种拆分方式相对应的、将第一数据拆分为多个第二数据的实现方案。拆分策略可以是预设确定的,该预先确定的拆分策略可以以拆分策略数据库的形式存储于存储器中。当然,在其他实施例中,拆分策略也可以是数据处理装置根据第一数据参与的运算以及多核处理器的运算器特性实际确定的。所述拆分策略数据库中记录有预先确定的拆分策略,不同数据类别的数在不同算子中设置有对应的拆分策略。
举例来说,在第一数据(如输入神经元、输入权值等)作为“输入”参与运算时,拆分索引可以用于将第一数据拆分为多个第二数据,进而实现运算。在第一数据(如输出神经元等)作为“输出”参与运算时,拆分索引可以用于指示或者说预见由于“输入”的拆分后运算使得最终得到的输出神经元(也即最终运算结果)会是由几个中间结果在进行运算得到,其指示的实际上是中间结果与输出神经元之间的拆分关系;或者由于输出神经元数据的尺寸限制,其可能不具备拆分的可能,也即其没有对应的拆分索引。在实际的运算任务中通常是对一个或多个待运算数据进行运算处理,得到运算结果,所确定的拆分索引可以是一个或多个待运算数据、运算结果中的任意一个数据的,本公开对此不作限制。
在步骤S13中,将所述拆分索引增加到所述动态标签信息中,以使所述多核处理器能够基于所述标签信息对所述第一数据进行所述神经网络运算。
在本实施例中,将拆分索引加入动态标签信息之后,多核处理器在利用第一数据(第一数据为待运算数据)执行运算任务时,可以根据该动态标签中的拆分索引将第一数据拆分为多个第二数据后执行运算任务;也可以在执行运算任务的过程中根据拆分索引确定相关计算过程如何进行(如第一数据为运算结果)。这样,在标签信息的辅助下,多核处理器可以简化运算任务中所涉及数据的拆分和布局过程,提高运算任务的运算速度。
在一种可能的实现方式中,根据确定的所述第一数据参与的操作所对应的算子的参数和所述标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略,可以包括:
获取对应所述神经网络的计算图,所述计算图中包括操作节点、数据节点、数据节点与操作节点之间的连接关系;其中,所述数据节点可以包含所述第一数据的标签信息,所述第一数据的标签信息包括静态标签信息和动态标签信息;
获得所述计算图中所述第一数据所在数据节点所连接的目标操作节点的信息,所述目标操作节点的信息包括实现所述目标操作节点的操作所对应的算子的参数;
根据所述算子的参数和所述第一数据的静态标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略。
在该实现方式中,可以首先根据神经网络的计算图确定静态标签信息和部分动态标签信息(除拆分索引、目标存储空间、目标数据交换层级),并该确定的标签信息与相应的数据节点进行绑定存储。
在该实现方式中,所述静态标签信息还可以包括数据类别,所述数据类别包括以下任一项:指令、输入神经元、输出神经元、隐藏神经元、常量神经元、输入权值、输出权值、常量权值和辅助数据。进一步地,可以根据所述算子的参数和所述第一数据的数据类别,从拆分策略数据库中确定出所述第一数据所对应的拆分策略。举例来说,参考下述表2,假定基于上述步骤确定出第一数据所参与的操作所对应的算子为二维卷积Conv、其数据类别为输入权值,则其对应的拆分策略为“可拆分维度为N、待选存储空间为Cluster、待选数据交换层级为No”。假定基于上述步骤确定出第一数据所参与的操作所对应的算子为二维卷积Conv、其数据类别为输入神经元,则其对应的拆分策略为“可拆分维度为N、H、W(优先级别依次降低),在可拆分维度为N时,待选存储空间为Mem,待选数据交换层级为No;在可拆分维度为H或W时,待选存储空间为Cluster、待选数据交换层级为Cluster”。
在一种可能的实现方式中,根据所述第一数据所对应的拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据的拆分索引,可以包括:
根据所述内存通道数和根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度;
根据所述内存通道数、所述第一数据在所述目标拆分维度上的运算维度值和所述拆分长度,确定出将所述第一数据拆分成多个第二数据的拆分索引。
在该实现方式中,运算维度值是指第一数据在实际进行运算的过程中,各个维度的维度值。
在本实施例中,由于对第一数据进行拆分的目的是为了尽可能的利用多核处理器实现并行处理。因此,在确定拆分长度之前,可以先确定第二数据的目标个数,进而根据目标拆分维度的维度值和目标个数确定出拆分长度。可以先判断目标拆分维度的运算维度值与多核处理器的计算核总数(也即多核处理器中所包含的计算核的数量)、内存通道数之间的大小关系,进而根据大小关系进一步采用对应的方式确定拆分长度,也即如下方式一、方式二、方式三。
方式一,在目标拆分维度的运算维度值大于或等于计算核总数时,将第二数据的目标个数确定为与计算核总数一致,拆分长度即为第一数据在所述目标拆分维度上的运算维度值与计算核总数相除所得的比值,且在该比值不为整数时可以利用预设的取整函数(如下文所述)进行取整处理,进而得到拆分长度。其中,取整函数可以包括向下取整函数(如floor function,也即Floor函数,取不大于所述比值的最大整数)、向上取整函数(如Ceil函数,取大于或等于所述比值的最小整数)、四舍五入取整函数(如roundingfunction,也即Round函数,对所述比值按照指定小数位数进行四舍五入运算得到的整数)等取整函数。这样,可以保证每一个计算核均参与到实际的运算过程中,减少多核处理器的算力闲置,提高了运算的效率和速度。
方式二,在目标拆分维度的运算维度值小于计算核总量、且大于或等于内存通道数时,将内存通道数确定为第二数据的目标个数,拆分长度即为第一数据在所述目标拆分维度上的运算维度值与内存通道数相除所得的比值,且在该比值不为整数时可以利用预设的取整函数进行取整处理,进而得到拆分长度。
方式三,在目标拆分维度的运算维度值小于内存通道数时,将目标拆分维度的运算维度值确定为第二数据的目标个数,拆分长度即为目标拆分维度的运算维度值的单位长度。
通过上述确定拆分长度的方式一、二、三进行拆分长度的确定,可以保证多核处理器中的计算核都参与到运算任务中,保证运算任务的高效、高速执行。
在一种可能的实现方式中,所述静态标签信息可以包括:静态数据维度、对应每个静态数据维度的维度值,所述动态标签信息可以包括动态数据类型、填充参数、数据尺寸,其中,根据所述拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,还可以包括:
根据所述第一数据的每个静态数据维度的维度值和填充参数,确定所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值。可以将每个静态数据维度的维度值与填充参数中对应该静态数据维度的填充数据长度之和确定为运算维度值。
在该实现方式中,还可以基于第一数据已有的静态标签信息和动态标签信息采用其他方式计算出运算维度值,本公开对此不作限制。
在一种可能的实现方式中,还可以预先计算出运算维度值并将其存储至动态标签信息中。以便于直接从动态标签信息中获取到运算维度值仅为进行拆分长度、拆分索引的确定,简化拆分索引是确定过程,提高效率。
在一种可能的实现方式中,根据所述内存通道数和所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,可以包括:
在所述可拆分维度为多个时,按照优先级别由高到低的顺序依次判断可拆分维度是否满足拆分条件,在确定当前可拆分维度满足拆分条件时,将当前可拆分维度确定为所述目标拆分维度,
其中,所述拆分条件包括:所述第一数据在当前可拆分维度上的运算维度值大于或等于所述内存通道数。
举例来说,假定第一数据具有三个维度“w1、w2、w3”、各维度的运算维度值w1=2、w2=32、w3=64,其对应的拆分策略中可拆分维度为w1和w3,且w1的优先级高于w3。若多核处理器的通道数为4,先判断第一数据优先级最高的“可拆分维度为w1”是否满足拆分条件,而由于w1的运算维度值2是小于“通道数4”不满足拆分条件;则继续判断下一个“可拆分维度w3”是否满足拆分条件,而由于w3的运算维度值32满足拆分条件,则将第一数据的w3作为目标拆分维度。
在一种可能的实现方式中,在所有的可拆分维度均不满足拆分条件时,也即每个可拆分维度上的运算维度值均小于内存通道数,可以将可拆分维度上运算维度值最大的确定为目标拆分维度。这样,可以保证针对该第一数据利用多核处理器中较多的计算核执行运算任务。
举例来说:
例1,假定多核处理器包括2个内存通道,2个计算核簇,每个计算核簇中包括2个计算核。若某第一数据包括三个维度a、b、c,且各维度的维度值为a=1,b=4,c=2。若其可拆分维度为a、b,且a的优先级别高于b。则,先判断可拆分维度a,由于a=1小于内存通道数2(即不满足拆分条件),则a不可作为目标拆分维度。继续判断可拆分维度b,由于b=4大于内存通道数,将可拆分维度b确定为目标拆分维度。进一步地,由于b=4等于计算核总数4,则可以将第二数据的目标个数确定为与计算核总数4相同,拆分长度=目标拆分维度b的维度值4÷计算核总数4=1。
例2,假定多核处理器包括2个内存通道,2个计算核簇,每个计算核簇中包括2个计算核。若某第一数据包括三个维度a、b、c,且各维度的维度值为a=1,b=4,c=2。若其可拆分维度为a、c,且a的优先级别高于c。则,先判断可拆分维度a,由于a=1小于内存通道数2(即不满足拆分条件),则a不可作为目标拆分维度。继续判断可拆分维度c,由于c=2小于计算核总数且等于内存通道数,可以将可拆分维度c确定为目标拆分维度。进一步地,由于c=2小于计算核总数4且等于内存通道数,则可以将第二数据的目标个数确定为与内存通道数2相同,拆分长度=目标拆分维度c的维度值2÷内存通道数2=1。
例2,假定多核处理器包括4个内存通道,2个计算核簇,每个计算核簇中包括2个计算核。若某第一数据包括三个维度a、b、c,且各维度的维度值为a=1,b=2,c=2。若其可拆分维度为a、c,且a的优先级别高于c。则,先判断可拆分维度a,由于a=1小于内存通道数4(即不满足拆分条件),则a不可作为目标拆分维度。继续判断可拆分维度c,由于c=2仍小于内存通道数4(即不满足拆分条件)。此时,由于c=2>a=1,则将可拆分维度c确定为目标拆分维度。进一步地,由于c=2小于内存通道数4,则可以将第二数据的目标个数确定为目标拆分维度C的维度值2,拆分长度=目标拆分维度c的维度值2。
需要说明的是,在实际运算过程中,运算任务多是至少两个待运算数据之间进行算术运算得到运算结果,则可以将待运算数据以及运算结果作为上述第一数据进行拆分索引的确定。
在本实施例中,第一数据在参与运算任务的过程中,由于算子的不同、目标拆分维度的不同、多核处理器架构的不同,为便于不同的计算核对第一数据的使用,还需要对拆分第一数据后得到的第二数据的目标存储空间进行设置,以保证实际利用第二数据执行对应运算任务的计算核读写便利、快捷。
在一种可能的实现方式中,步骤S12可以包括:根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器的运算器特性和所述标签信息(包括动态数据类型和数据类别),确定出所述第一数据所对应的至少一个可拆分维度以及每个可拆分维度对应的优先级别。
在该实现方式中,多核处理器的运算器特性可以包括:执行不同算子的运算时不同数据类别的数据可以拆分的维度,拆分不同的维度是否与多核处理器本身的硬件设置相匹配、或者与多核处理器被使用者设置的处理能力相匹配,不同拆分维度的设置对运算效率的影响等与处理器本身的硬件设置、用户定义设置相关的特性。这样,可以在保证能确定拆分策略的同时,满足运算的效率和速度要求。
在该实现方式中,可以预先根据已有的算子的参数、多核处理器的运算器特性、标签信息的情况训练出用于确定拆分策略的策略模型;或者也可以建立算子的参数、多核处理器的运算器特性、标签信息与拆分策略之间的对应关系,进而实时确定第一数据的拆分策略。
在一种可能的实现方式中,所述多核处理器设置有多个计算核簇,每个计算核簇包括多个计算核,所述方法还可以包括:
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中设置的存储空间,确定出每个可拆分维度所对应的待选存储空间;
根据所述目标拆分维度,从所述待选存储空间中确定出所述第一数据对应的目标存储空间,并将所述目标存储空间的标识信息增加到所述动态标签信息中,
其中,所述存储空间别包括多个存储器(如图1c所示,多核处理器中并未设置计算核簇的核外缓存);或者所述存储空间包括多个存储器、多个核外缓存(如图1d所示,多核处理器中设置有计算核簇的核外缓存),每个计算核能够访问所述多个存储器中任意一个,每个计算核簇中的多个计算核共享对应的一个核外缓存。
在该实现方式中,可以预先根据已有的算子的参数、多核处理器中设置的存储空间设定情况训练出用于确定待选存储空间的模型;或者也可以建立算子的参数、多核处理器设置的存储空间与待选存储空间之间的对应关系,进而实时确定第一数据的待选存储空间。
在该实现方式中,多核处理器是设置有多个存储器,每个计算核簇可以通过与对应的“本地存储器”之间的通道进行访问,也可以通过通道与路由节点访问其他存储器。多核处理器中因架构的不同核外缓存可以设置,也可以不设置。可以实时根据算子的参数、所述多核处理器中设置的存储空间,确定出每个可拆分维度所对应的待选存储空间,算子的不同会影响待选存储空间的选定,而多核处理器中设置的存储空间是否含有核外缓存是为算子提供可供选择的目标。
在该实现方式中,待选存储空间可以是一个或多个,确定待选存储空间的过程中,还可以确定出每个待选存储空间所对应的可拆分维度。每一个待选存储空间均与一个或多个可拆分维度相对应,不同的可拆分维度可以对应于同一个待选存储空间,一个可拆分维度仅有对应的一个待选存储空间(也即,一个可拆分维度不能与两个不同的待选存储空间对应)。进而将待选存储空间中对应的可拆分维度包括目标拆分维度的一个,确定为目标存储空间。
在该实现方式中,目标存储空间的标识信息可以是每个第二数据所存储的存储器(或核外缓存)所对应的编号、名称等能够区分存储器与其他存储器之间不同的身份标识,还可以是目标存储空间的类别,也即存储器的类别标识或核外缓存的类别标识。可以根据拆分索引进行设置存入动态标签信息中的目标存储空间的标识信息。举例来说,假定针对第一数据的运算使用了多核处理器中的每个计算核,也即每个计算核均需要获取到其对应的第二数据,则实际运算中第二数据是需要存储到每个存储器(假定目标存储空间为存储器)中的,则可以将存储器的类别标识作为目标存储空间的标识信息存入动态标签信息,以使多核处理器可以根据存储器的类别标识(也即目标存储空间的标识信息)确定需要依次将多个第二数据分别存入每个存储器中;或者,如果需要也可以设定每个第二数据的需要被存储至哪一个存储器,则可以将每个存储器的身份标识作为目标存储空间的标识信息存入动态标签信息。本领域技术人员可以根据实际需要对存入动态标签信息中的目标存储空间的标识信息进行设置,本公开对此不作限制。
举例来说,图3示出根据本公开一实施例的多核处理器1的架构示意图,如图3所示,多核处理器1包括存储器1和存储器2、计算核簇1(包括计算核1、计算核2)及其对应的核外缓存1、计算核簇2(包括计算核3、计算核4)及其对应的核外缓存2,计算核通过路由节点R访问存储器。其中,存储器的类别标识为mem,核外缓存的类别标识为cluster,存储器1、存储器2的标识信息分别为mem1和mem2,核外缓存1、核外缓存2的标识信息分别为cluster1和cluster2。假定第一数据a为输入神经元,其会被拆分成两个第二数据a1、a2,并且需要存储至存储器中。则存入动态标签信息中的可以是表示存储器这个存储空间类别的标识信息“mem”(a1和a2可以分别存入mem1和mem2中),也可以是存储器1和存储器2本身的标识信息“mem1”和“mem2”。
在一种可能的实现方式中,所述拆分策略还包括待选存储空间,每个可拆分维度设置有对应的待选存储空间,所述方法还包括:根据所述目标拆分维度,从所述待选存储空间中确定出目标存储空间,并将所述目标存储空间的标识信息增加到所述动态标签信息中,
其中,所述存储空间包括多个存储器;或者所述存储空间包括多个存储器、多个核外缓存,每个计算核能够访问所述多个存储器中任意一个,每个计算核簇中的多个计算核共享对应的一个核外缓存。
在该实现方式中,可以预先确定出数据的待选存储空间情况,并将其存入拆分策略数据库中,以简化目标存储空间的确定过程,提高数据处理的速度和效率。
在一种可能的实现方式中,所述方法还包括:
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器的运算器特性、所述标签信息,确定出每个可拆分维度所对应的待选数据交换层级;
根据所述目标拆分维度,从所述待选数据交换层级中确定出所述第一数据对应的目标数据交换层级,并将所述目标数据交换层级增加到所述动态标签信息中。
在该实现方式中,目标数据交换层级可以用于指示第二数据是否需要进行交换,该交换是指存储于核外缓存或存储器的第二数据除被计算该第二数据的计算核使用(作为待运算数据或者作为运算的结果)之外,是否还会被同一计算核簇中的其他计算核或者其他计算核簇中的计算核使用(作为待运算数据或者作为运算的结果)。待选数据交换层级可以包括:无交换、簇间数据交换和核间数据交换。其中,“无交换”可以是指数据不会被其他计算核使用,“簇间数据交换”可以是指数据会被其他计算核簇中的计算核使用,“核间数据交换”可以是指数据会被同一计算核簇中的计算核使用。
在该实现方式中,可以根据算子的参数、所述多核处理器的运算器特性、所述标签信息情况训练出用于确定待选数据交换层级的模型;或者也可以建立算子的参数、所述多核处理器的运算器特性、所述标签信息与待选数据交换层级之间的对应关系,进而实时确定第一数据的待选数据交换层级。
在该实现方式中,待选数据交换层级可以是一个或多个,确定待选数据交换层级的过程中,还可以确定出每个待选数据交换层级所对应的可拆分维度。每一个待选数据交换层级与一个或多个可拆分维度相对应,不同的可拆分维度可以对应于同一个待选数据交换层级,一个可拆分维度仅有对应的一个待选数据交换层级(也即,一个可拆分维度不能与两个不同的待选数据交换层级对应)。进而将待选数据交换层级中对应的可拆分维度包括目标拆分维度的一个,确定为目标数据交换层级。
在一种可能的实现方式中,所述拆分策略还包括每个可拆分维度所对应的待选数据交换层级,所述方法还包括:
将至少一个待选数据交换层级中与所述目标拆分维度相对应的待选数据交换层级,确定为所述第一数据对应的目标数据交换层级,并将所述目标数据交换层级增加到所述动态标签信息中。
在该实现方式中,可以预先确定出数据的待选数据交换层级,并将其存入拆分策略数据库中,以简化目标数据交换层级的确定过程,提高数据处理的速度和效率。
在本实施例中,可以预先根据上文所述当时对第一数据的拆分策略进行设置。为进一步说明拆分策略的设定,以图3所示的多核处理器的架构、第一数据为图像数据为例,下述表2给出了本公开实施例中第一数据的拆分策略示例。
表2拆分策略示例
其中,可拆分维度N表示数量维度,可拆分维度H表示高度维度,可拆分维度W表示宽度维度,可拆分维度C表示通道维度。
待选存储空间中“Mem”为存储器的类别标识,“Cluster”表示核外缓存的标识。
待选数据交换层级中“No”表示无交换,“Cluster”表示进行簇间数据交换,“Core”表示进行核间数据交换。同一数据中在前的可拆分维度的优先级别高于在后出现的可拆分维度的优先级别,以“二维卷积Conv”中的输入神经元为例,其可拆分维度为N、H、W,优先级别从高到低依次为N、H、W。
在一种可能的实现方式中,加入拆分索引、目标存储空间的标识信息、目标数据交换层级后的动态标签信息可以表示为:
dynamic:type2,DIM_B1…Bn,tiling,padding,size,split x[(1_0,1_n-1)…(i_i×n,i_(i+1)n-1)],store,swap
其中,split x[(1_0,1_n-1)…(i_i×n,i_(i+1)n-1)]表示拆分索引,其中,x表示目标拆分维度,拆分长度即为n。(1_0,1_n-1)表示第一个第二数据的起始拆分位置为0、结束拆分位置为n-1;(i_i×n,i_(i+1)n-1)表示第i个第二数据的起始拆分位置为i×n、结束拆分位置为(i+1)n-1。store表示目标存储空间的标识信息。swap表示目标数据交换层级。
在本实施例中,可以预先根据上文所述与拆分策略(包括可拆分维度、待选存储空间、待选数据交换维度)相关的参考信息与拆分策略的对应关系指定拆分策略实时确定模型,进而根据模型实时确定出第一数据的可拆分维度、待选存储空间、待选数据交换维度,进而在第一数据的动态标签信息中增加拆分索引、目标存储空间的标识信息、目标数据交换层级。也可以预先根据参考信息确定出拆分策略数据库,在其中记载所需的各种拆分策略,本公开对此不作限制。
在本实施例中,在多核处理器执行运算任务的过程中,计算核根据所接收到的执行指令或者基于标签信息的指示,针对该第一数据所能够执行的运算操作可以包括以下至少一项:
对从所述目标存储空间中获取到的第二数据执行运算,并将运算得到的第一中间结果存储至所述目标存储空间;
对从所述目标存储空间中获取到的第二数据执行运算,并将运算得到的第一中间结果存储至当前计算核所对应的核外缓存;
对从所述目标存储空间中获取到的第二数据执行运算,并将运算得到的第一中间结果存储至当前计算核本地内存;
从每个存储器中获取第一中间结果,对多个第一中间结果进行运算得到对应于所述运算指令的运算结果;
对从当前计算核的核外缓存中获取到的第一中间结果与当前计算核的本地内存中存储的第一中间结果进行运算,得到第二中间结果,并将所述第二中间结果存储至当前计算核的核外缓存;
对从当前计算核的核外缓存中获取到的第一中间结果与当前计算核的本地内存中存储的第一中间结果进行运算,得到第二中间结果,并将所述第二中间结果存储至当前计算核的本地内存;
对从所述多个核外缓存中除当前计算核的核外缓存之外的其他核外缓存中获取到的第二中间结果、与当前计算核的本地内存中存储的第二中间结果进行运算,得到对应于所述运算指令的运算结果;
将所述运算结果存储至所述目标存储空间。
应用示例
以下结合“对运算任务A进行处理”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解数据处理方法的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
假定处理该运算任务A所涉及到的数据包括输入神经元I、输入权值W和输出神经元O,执行该运算任务A的多核处理器为图3所示的多核处理器1该运算任务A为全连接MLP运算。输入神经元I、输入权值W和输出神经元O分别为1×1024、1024×4、1×4的数据,具体运算为I×W=O。则可以将输入神经元I、输入权值W和输出神经元O分为作为“第一数据”,确定出其对应的拆分索引、目标存储空间和目标数据交换层级。
输入神经元I的标签信息:Static:IN,float32,DIM_NC,{1 1024}dynamic:float16,DIM_NC,C=256,C=0,2KB。也即,I的数据类别为输入神经元,静态数据类型为float32,静态数据维度为N和C,维度N的维度值为1,维度C的维度值为1024,静态数据维度顺序为NC。动态数据类型为float16,动态数据维度顺序为NC,分片参数为在维度C的方向上按照256的长度进行分片,填充参数为在维度C的方向上以“0”为填充值进行填充,数据尺寸为2KB。
输入权值W的标签信息:Static:IW,float32,DIM_NC,{1024 4}dynamic:float16,DIM_NC,C=256,C=0,8KB。也即,W的数据类别为输入权值,静态数据类型为float32,静态数据维度为N和C,维度N的维度值为1024,维度C的维度值为4,静态数据维度顺序为NC。动态数据类型为float16,动态数据维度顺序为NC,分片参数为在维度C的方向上按照256的长度进行分片,填充参数为在维度C的方向上以“0”为填充值进行填充,数据尺寸为8KB。
输出神经元O的标签信息:Static:ON,float32,DIM_NC,{1 4}dynamic:float16,DIM_NC,C=4,C=0,8KB。也即,O的数据类别为输出神经元,静态数据类型为float32,静态数据维度为N和C,维度N的维度值为1,维度C的维度值为4,静态数据维度顺序为NC。动态数据类型为float16,动态数据维度顺序为NC,分片参数为在维度C的方向上按照4的长度进行分片,填充参数为在维度C的方向上以“0”为填充值进行填充,数据尺寸为8KB。
对于输入神经元I:假定根据预先确定的拆分策略数据库可知其可拆分维度包括N、C(N的优先级别高于C的优先级别),而由于输入神经元I为1×1024,多核处理器1包括2个通道。首先,针对可拆分维度N进行判断,通道数2大于输入神经元I在维度N上的运算维度值(确定方式参考上文),则可拆分维度N不可作为目标拆分维度;而后,对可拆分维度C进行判断,通道数2小于输入神经元I在维度C上的运算维度值,则将可拆分维度C确定为目标拆分维度。进一步可以确定出拆分长度为L=1024÷4(计算核总数)=512。则输入神经元I的拆分索引即为C[(0,255),(256,511),(512,767),(768,1023)]。继续基于目标拆分维度C预先确定的拆分策略数据库可知:输入神经元I的目标存储空间为“Mem”(也即存储器),目标数据交换层级为“NO”也即无交换。则输入神经元I的标签信息增加后为:Static:IN,float32,DIM_NC,{1 1024}dynamic:float16,DIM_NC,C=256,C=0,2KB,C[(0,255),(256,511),(512,767),(768,1023)],Mem,NO。
基于与输入神经元I相同的过程,可以判断出输入权值W的标签信息在增加后为:Static:IW,float32,DIM_NC,{1024 4}dynamic:float16,DIM_NC,C=256,C=0,8KB,N[(0,255),(256,511),(512,767),(768,1023)],Mem,NO。输出神经元O的标签信息在增加后为:Static:ON,float32,DIM_NC,{1 4}dynamic:float16,DIM_NC,C=4,C=0,8KB,C[(0,3)],Cluster,Core。
基于上述输入神经元I、输入权值W、输出神经元O的标签信息,多核处理器1在执行运算任务A时,图4a示出根据本公开一实施例的多核处理器1执行运算任务A的计算任务分配示意图,图4b示出根据本公开一实施例的多核处理器1执行运算任务A的过程示意图,结合图4a、图4b可知其具体过程为:
多核处理器1或者为多核处理器1分配任务的处理器根据输入神经元I、输入权值W的标签信息,先将输入神经元I、输入权值W进行如图4a所示的拆分。将输入神经元拆分为i1、i2、i3、i4,将输入权值W拆分为w1、w2、w3、w4。并按照如图4b所示将i1、i2、w1、w2分别存入存储器1,将i3、i4、w3、w4分别存入存储器2。
而后,计算核1从存储器1中获取i1、w1并进行计算得到第一中间结果o1,而后存入其对应的本地内存NB中;计算核2从存储器1中获取i2、w2并进行计算得到第一中间结果o2,并将第一中间结果o2存入核外缓存1;计算核3从存储器2中获取i3、w3并进行计算得到第一中间结果o3,而后存入其对应的本地内存NB中;计算核4从存储器2中获取i4、w4并进行计算得到第二中间结果o4,并将第二中间结果o4存入核外缓存2。
下一步,计算核1从核外缓存1中获取到o2,将o2与o1相加得到第二中间结果o5,而后存入其对应的本地内存NB中;计算核3从核外缓存2中获取到o4,将o4与o3相加得到第二中间结果o6,并将第二中间结果o6存储至核外缓存2中。
再之后,计算核1从核外缓存2中获取到o6,将o5与o6相加得到运算结果o7(也即输出神经元O),并将o7存入存储器1,完成运算任务。
其中,由于输出神经元O的目标存储空间为核外缓存Cluster,数据交换层级为核间数据交换Core,所以,计算核2、4会将其运算得到的结果o2、o4存储至对应的核外缓存,计算核3会将其得到的o6存储至核外缓存2中。这样,才能保证计算核1和计算核3可从核外缓存中获取到所需的中间结果或簇计算结果。
需要说明的是,尽管以上述实施例作为示例介绍了数据处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤、模块,只要符合本公开的技术方案即可。
图5示出根据本公开一实施例的数据处理装置的框图。如图5所示,该装置应用于多核处理器,所述装置包括:信息获取模块51、索引确定模块52、标签增加模块53。
信息获取模块51,获取第一数据以及所述第一数据的标签信息,所述第一数据用于参与神经网络运算,所述标签信息包括静态标签信息和动态标签信息;
索引确定模块52,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引;
标签增加模块53,将所述拆分索引增加到所述动态标签信息中,以使所述多核处理器能够基于所述标签信息对所述第一数据进行所述神经网络运算,
其中,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关联的信息,所述动态标签信息用于表征所述第一数据与所述多核处理器相关联的信息。
在一种可能的实现方式中,索引确定模块52,包括:
策略确定子模块,根据确定的所述第一数据参与的操作所对应的算子的参数和所述标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略;
索引确定子模块,根据所述拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,
其中,所述拆分策略包括所述第一数据的至少一个可拆分维度以及每个可拆分维度对应的优先级别,
所述拆分索引包括:目标拆分维度、每个第二数据在所述第一数据的目标拆分维度上的起始拆分位置和结束拆分位置,所述目标拆分维度为所述至少一个可拆分维度中被选中的维度。
在一种可能的实现方式中,策略确定子模块,包括:
标签信息获取子模块,获取对应所述神经网络的计算图,所述计算图中包括操作节点、数据节点、数据节点与操作节点之间的连接关系;其中,所述数据节点中记录有参与所述神经网络运算的数据的标签信息,所述标签信息包括静态标签信息和动态标签信息;
参数确定子模块,获得所述计算图中所述第一数据所在数据节点所连接的目标操作节点的信息,所述目标操作节点的信息包括实现所述目标操作节点的操作所对应的算子的参数;
拆分策略确定子模块,根据所述算子的参数和所述第一数据的静态标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略;
其中,所述拆分策略数据库中记录有预先确定的拆分策略。
在一种可能的实现方式中,索引确定子模块,包括:
维度及长度确定子模块,根据所述内存通道数、根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度;
拆分索引确定子模块,根据所述内存通道数、所述第一数据在所述目标拆分维度上的运算维度值和所述拆分长度,确定出将所述第一数据拆分成多个第二数据的拆分索引。
在一种可能的实现方式中,所述静态标签信息包括:静态数据维度,其中,索引确定子模块,还包括:
维度值确定子模块,根据所述第一数据的每个静态数据维度的维度值和填充参数,确定所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值。
在一种可能的实现方式中,所述动态标签信息包括所述运算维度值。
在一种可能的实现方式中,根据所述内存通道数、根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度,包括:
在所述可拆分维度为多个时,按照优先级别由高到低的顺序依次判断可拆分维度是否满足拆分条件,在确定当前可拆分维度满足拆分条件时,将当前可拆分维度确定为所述目标拆分维度,
其中,所述拆分条件包括:所述第一数据在当前可拆分维度上的运算维度值大于或等于所述内存通道数。
在一种可能的实现方式中,根据所述内存通道数、根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度,包括:
确定出所述第一数据在目标拆分维度上的运算维度值与所述内存通道数的比值;
利用取整函数对所述比值进行取整处理,得到对应于所述目标拆分维度的拆分长度,
其中,所述取整函数包括以下任意一种:向下取整函数、向上取整函数、四舍五入取整函数。
在一种可能的实现方式中,索引确定模块52,还包括:
级别确定子模块,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器的运算器特性和所述标签信息,确定出所述第一数据所对应的至少一个可拆分维度以及每个可拆分维度对应的优先级别。
在一种可能的实现方式中,所述多核处理器设置有多个计算核簇,每个计算核簇包括多个计算核,所述装置还包括:
待选存储空间确定模块,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中设置的存储空间,确定出每个可拆分维度所对应的待选存储空间;
第一动态标签信息增加模块,根据所述目标拆分维度,从所述待选存储空间中确定出所述第一数据对应的目标存储空间,并将所述目标存储空间的标识信息增加到所述动态标签信息中,
其中,所述存储空间别包括多个存储器;或者所述存储空间包括多个存储器、多个核外缓存,每个计算核能够访问所述多个存储器中任意一个,每个计算核簇中的多个计算核共享对应的一个核外缓存。
在一种可能的实现方式中,所述拆分策略包括每个可拆分维度所对应的待选存储空间,所述装置还包括:
第二动态标签信息增加模块,根据所述目标拆分维度,从所述待选存储空间中确定出目标存储空间,并将所述目标存储空间的标识信息增加到所述动态标签信息中,
其中,所述存储空间包括多个存储器;或者所述存储空间包括多个存储器、多个核外缓存,每个计算核能够访问所述多个存储器中任意一个,每个计算核簇中的多个计算核共享对应的一个核外缓存。
在一种可能的实现方式中,所述装置还包括:
层级选择模块,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器的运算器特性、所述标签信息,确定出每个可拆分维度所对应的待选数据交换层级;
第一层级增加模块,根据所述目标拆分维度,从所述待选数据交换层级中确定出所述第一数据对应的目标数据交换层级,并将所述目标数据交换层级增加到所述动态标签信息中。
在一种可能的实现方式中,所述拆分策略还包括每个可拆分维度所对应的待选数据交换层级,所述装置还包括:
第二层级增加模块,将至少一个待选数据交换层级中与所述目标拆分维度相对应的待选数据交换层级,确定为所述第一数据对应的目标数据交换层级,并将所述目标数据交换层级增加到所述动态标签信息中。
本公开实施例所提供的数据处理装置,使得在执行神经网络运算任务时可以基于动态标签信息中的拆分索引对数据进行拆分、布局,提高了神经网络运算任务的处理效率和速度。
本公开实施例所提供的装置,使得多核处理器在执行运算任务时可以基于新带有拆分索引、存储空间和数据交换层级的动态标签信息对数据进行拆分、布局、确定存储位置,提高了运算任务的处理效率和速度。
本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述数据处理装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得神经网络计算宏指令或待执行神经网络计算指令,并将执行结果通过I/O接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上数据处理装置时,数据处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图6是示出根据本公开实施例的一种组合处理装置1200的结构图。如图6中所示,该组合处理装置1200包括计算处理装置1202、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210。计算处理装置1202可以为上述机器学习运算装置,或者上述数据处理装置。
在不同的实施例中,本公开的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核(也即上文所述计算核)或者人工智能处理器核的部分硬件结构。
在示例性的操作中,本公开的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本公开的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本公开的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本公开的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本公开还公开了一种芯片(例如图7中示出的芯片1302)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图6中所示的组合处理装置。该芯片可以通过对外接口装置(如图7中示出的对外接口装置1306)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本公开还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本公开还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图7对该板卡进行详细地描述。
图7是示出根据本公开实施例的一种板卡1300的结构示意图。如图7中所示,该板卡包括用于存储数据的存储器件1304,其包括一个或多个存储单元1310。该存储器件可以通过例如总线等方式与控制器件1308和上文所述的芯片1302进行连接和数据传输。进一步,该板卡还包括对外接口装置1306,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1312(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本公开板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图6和图7的描述,本领域技术人员可以理解本公开也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本公开的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本公开的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本公开的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本公开方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本公开将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本公开的方案并不受所描述的动作的顺序限制。因此,依据本公开的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本公开所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本公开某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本公开对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本公开某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本公开的公开和教导,本领域技术人员可以理解本公开所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本公开中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本公开实施例所述方案的目的。另外,在一些场景中,本公开实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本公开的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本公开实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (15)
1.一种数据处理方法,其特征在于,应用于多核处理器,所述方法包括:
获取第一数据以及所述第一数据的标签信息,所述第一数据用于参与神经网络运算,所述标签信息包括静态标签信息和动态标签信息;
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引;
将所述拆分索引增加到所述动态标签信息中,以使所述多核处理器能够基于所述标签信息对所述第一数据进行所述神经网络运算,
其中,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关联的信息,所述动态标签信息用于表征所述第一数据与所述多核处理器相关联的信息。
2.根据权利要求1所述的方法,其特征在于,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,包括:
根据确定的所述第一数据参与的操作所对应的算子的参数和所述标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略;
根据所述拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,
其中,所述拆分策略包括所述第一数据的至少一个可拆分维度以及每个可拆分维度对应的优先级别,
所述拆分索引包括:目标拆分维度、每个第二数据在所述第一数据的目标拆分维度上的起始拆分位置和结束拆分位置,所述目标拆分维度为所述至少一个可拆分维度中被选中的维度。
3.根据权利要求2所述的方法,其特征在于,根据确定的所述第一数据参与的操作所对应的算子的参数和所述标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略,包括:
获取对应所述神经网络的计算图,所述计算图中包括操作节点、数据节点、数据节点与操作节点之间的连接关系;其中,所述数据节点中记录有参与所述神经网络运算的数据的标签信息,所述标签信息包括静态标签信息和动态标签信息;
获得所述计算图中所述第一数据所在数据节点所连接的目标操作节点的信息,所述目标操作节点的信息包括实现所述目标操作节点的操作所对应的算子的参数;
根据所述算子的参数和所述第一数据的静态标签信息,从拆分策略数据库中确定出所述第一数据所对应的拆分策略;
其中,所述拆分策略数据库中记录有预先确定的拆分策略。
4.根据权利要求2所述的方法,其特征在于,根据所述拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,包括:
根据所述内存通道数、根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度;
根据所述内存通道数、所述第一数据在所述目标拆分维度上的运算维度值和所述拆分长度,确定出将所述第一数据拆分成多个第二数据的拆分索引。
5.根据权利要求4所述的方法,其特征在于,所述静态标签信息包括:静态数据维度,
其中,根据所述拆分策略、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,还包括:
根据所述第一数据的每个静态数据维度的维度值和填充参数,确定所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值。
6.根据权利要求4所述的方法,其特征在于,所述动态标签信息包括所述运算维度值。
7.根据权利要求4所述的方法,其特征在于,根据所述内存通道数、根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度,包括:
在所述可拆分维度为多个时,按照优先级别由高到低的顺序依次判断可拆分维度是否满足拆分条件,在确定当前可拆分维度满足拆分条件时,将当前可拆分维度确定为所述目标拆分维度,
其中,所述拆分条件包括:所述第一数据在当前可拆分维度上的运算维度值大于或等于所述内存通道数。
8.根据权利要求4所述的方法,其特征在于,根据所述内存通道数、根据所述标签信息确定的所述第一数据在参与所述神经网络运算过程中的每个维度的运算维度值,从所述至少一个可拆分维度中确定出目标拆分维度,以及确定出对应于所述目标拆分维度的拆分长度,所述拆分长度为所述第二数据在所述目标拆分维度方向上的长度,包括:
确定出所述第一数据在目标拆分维度上的运算维度值与所述内存通道数的比值;
利用取整函数对所述比值进行取整处理,得到对应于所述目标拆分维度的拆分长度,
其中,所述取整函数包括以下任意一种:向下取整函数、向上取整函数、四舍五入取整函数。
9.根据权利要求1所述的方法,其特征在于,根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中的内存通道数和所述标签信息,确定出将所述第一数据拆分成多个第二数据所需的拆分索引,还包括:
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器的运算器特性和所述标签信息,确定出所述第一数据所对应的至少一个可拆分维度以及每个可拆分维度对应的优先级别。
10.根据权利要求2所述的方法,其特征在于,所述多核处理器设置有多个计算核簇,每个计算核簇包括多个计算核,所述方法还包括:
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器中设置的存储空间,确定出每个可拆分维度所对应的待选存储空间;
根据所述目标拆分维度,从所述待选存储空间中确定出所述第一数据对应的目标存储空间,并将所述目标存储空间的标识信息增加到所述动态标签信息中,
其中,所述存储空间别包括多个存储器;或者所述存储空间包括多个存储器、多个核外缓存,每个计算核能够访问所述多个存储器中任意一个,每个计算核簇中的多个计算核共享对应的一个核外缓存。
11.根据权利要求2所述的方法,其特征在于,所述拆分策略包括每个可拆分维度所对应的待选存储空间,所述方法还包括:
根据所述目标拆分维度,从所述待选存储空间中确定出目标存储空间,并将所述目标存储空间的标识信息增加到所述动态标签信息中,
其中,所述存储空间包括多个存储器;或者所述存储空间包括多个存储器、多个核外缓存,每个计算核能够访问所述多个存储器中任意一个,每个计算核簇中的多个计算核共享对应的一个核外缓存。
12.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据确定的所述第一数据参与的操作所对应的算子的参数、所述多核处理器的运算器特性、所述标签信息,确定出每个可拆分维度所对应的待选数据交换层级;
根据所述目标拆分维度,从所述待选数据交换层级中确定出所述第一数据对应的目标数据交换层级,并将所述目标数据交换层级增加到所述动态标签信息中。
13.根据权利要求2所述的方法,其特征在于,所述拆分策略还包括每个可拆分维度所对应的待选数据交换层级,所述方法还包括:
将至少一个待选数据交换层级中与所述目标拆分维度相对应的待选数据交换层级,确定为所述第一数据对应的目标数据交换层级,并将所述目标数据交换层级增加到所述动态标签信息中。
14.一种非易失性计算机可读存储介质,其特征在于,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至13任一项所述的数据处理方法。
15.一种数据处理装置,其特征在于,所述装置包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011403593.8A CN114580607A (zh) | 2020-12-02 | 2020-12-02 | 数据处理方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011403593.8A CN114580607A (zh) | 2020-12-02 | 2020-12-02 | 数据处理方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114580607A true CN114580607A (zh) | 2022-06-03 |
Family
ID=81770553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011403593.8A Pending CN114580607A (zh) | 2020-12-02 | 2020-12-02 | 数据处理方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114580607A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271098A (zh) * | 2023-11-21 | 2023-12-22 | 北京燧原智能科技有限公司 | 一种ai模型计算核调度方法、装置、设备及存储介质 |
-
2020
- 2020-12-02 CN CN202011403593.8A patent/CN114580607A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271098A (zh) * | 2023-11-21 | 2023-12-22 | 北京燧原智能科技有限公司 | 一种ai模型计算核调度方法、装置、设备及存储介质 |
CN117271098B (zh) * | 2023-11-21 | 2024-02-13 | 北京燧原智能科技有限公司 | 一种ai模型计算核调度方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284823B (zh) | 一种运算装置及相关产品 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20200089535A1 (en) | Data sharing system and data sharing method therefor | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
CN110750351B (zh) | 多核任务调度器、多核任务调度方法、装置及相关产品 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
CN112799598B (zh) | 一种数据处理方法、处理器及电子设备 | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN110458285B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110555522B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110647981B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN112817898A (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN114201727A (zh) | 数据的处理方法、处理器、人工智能芯片及电子设备 | |
CN109558565B (zh) | 运算方法、装置及相关产品 | |
CN112801276A (zh) | 数据处理方法、处理器及电子设备 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN115221103A (zh) | 计算装置、数据处理方法及相关产品 | |
CN112766475A (zh) | 处理部件及人工智能处理器 | |
CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN117632442B (zh) | 任务处理方法以及相关设备 | |
CN110458286B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2022111013A1 (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 |