CN112465133B - 控制流多核并行方法、计算机设备和存储介质 - Google Patents
控制流多核并行方法、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112465133B CN112465133B CN202011337511.4A CN202011337511A CN112465133B CN 112465133 B CN112465133 B CN 112465133B CN 202011337511 A CN202011337511 A CN 202011337511A CN 112465133 B CN112465133 B CN 112465133B
- Authority
- CN
- China
- Prior art keywords
- operator
- control flow
- processed
- neural network
- splitting
- 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.)
- Active
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/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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
Abstract
本公开涉及一种运算方法、装置、计算机设备和存储介质。所述计算机设备包括计算处理装置、接口装置、其他处理装置和存储装置。计算处理装置可以配置成执行用户指定的操作,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据本申请的实施方式,编译器在对神经网络对应的程序编译的过程中实现对神经网络的控制流算子的多核拆分,实现控制流多核并行。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种运算方法、装置、计算机设备和存储介质。
背景技术
在人工智能技术领域,神经网络算法是非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现包含控制流的神经网络的并行运行的运算方法、装置、计算机设备和存储介质。
根据本公开的一方面,提供了一种控制流多核并行方法,所述方法包括:
遍历神经网络中的算子,确定神经网络中的待处理的控制流算子;
将所述待处理的控制流算子复制到处理器的多个核中;
在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,
其中,所述数据处理算子为拆分算子或者合并算子,用于对所述待处理的控制流算子的操作数进行拆分或者合并。
在一种可能的实现方式中,所述待处理的控制流算子为merge算子或者nextIter算子,
在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,包括:
在所述待处理的控制流算子之前插入拆分算子,所述拆分算子用于对所述待处理的控制流算子的输入操作数进行拆分得到子输入操作数。
在一种可能的实现方式中,所述拆分算子用于按照核的顺序对所述待处理的控制流算子的输入操作数进行拆分,得到复制到核上的待处理的控制流算子对应的子输入操作数。
在一种可能的实现方式中,所述待处理的控制流算子为switch算子,
在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,包括:
在所述待处理的控制流算子之后插入合并算子,所述合并算子用于对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
在一种可能的实现方式中,所述合并算子用于按照核的顺序对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
根据本公开的另一方面,提供了一种控制流多核并行装置,所述装置包括:
遍历模块,用于遍历神经网络中的算子,确定神经网络中的待处理的控制流算子;
复制模块,用于将所述待处理的控制流算子复制到处理器的多个核中;
插入模块,用于在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,
其中,所述数据处理算子为拆分算子或者合并算子,用于对所述待处理的控制流算子的操作数进行拆分或者合并。
在一种可能的实现方式中,所述待处理的控制流算子为merge算子或者nextIter算子,
所述插入模块,包括:
第一插入单元,用于在所述待处理的控制流算子之前插入拆分算子,所述拆分算子用于对所述待处理的控制流算子的输入操作数进行拆分得到子输入操作数。
在一种可能的实现方式中,所述拆分算子用于按照核的顺序对所述待处理的控制流算子的输入操作数进行拆分,得到复制到核上的待处理的控制流算子对应的子输入操作数。
在一种可能的实现方式中,所述待处理的控制流算子为switch算子,
所述插入模块,包括:
第二插入单元,用于在所述待处理的控制流算子之后插入合并算子,所述合并算子用于对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
在一种可能的实现方式中,所述合并算子用于按照核的顺序对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
根据本公开的另一方面,提供了一种计算机设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述的方法。
根据本公开的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的方法。
通过根据处理器的核的数量对神经网络中的控制流算子及其操作数进行拆分实现,可以运用在对神经网络进行编译的过程中由编译器执行。也就是说,编译器在对神经网络对应的程序编译的过程中实现对神经网络的控制流算子的多核拆分,从而实现控制流多核并行。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的控制流多核并行方法的流程图。
图2示出本申请一实施例的控制流算子的操作示意图。
图3示出根据本申请一实施例的循环(while)的示意图。
图4示出根据本公开一实施例的处理器的示意图。
图5示出根据本申请一实施例的控制流多核并行的示意图。
图6示出根据本申请一实施例的控制流多核并行装置的框图。
图7是示出根据本披露实施例的一种组合处理装置1200的结构图。
图8是示出根据本披露实施例的一种板卡1300的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了提高运算的效率,尽可能的利用人工智能处理器的硬件资源,相关技术中采用多核拆分的方式,根据人工智能处理器中处理核的数量将神经网络的算子以及数据拆分成多份由多个核并行执行。
在程序语言中,控制流决定了语句的执行顺序,常见的控制流包括顺序执行、分支(if/else/switch等)和循环(while)等。若神经网络算法的程序中包括控制流,则在对神经网络算法进行编译时,神经网络是静态的,而在运行时神经网络是动态的,所以程序如何运行只有在运行过程中才能得到具体的顺序指令。由于包含控制流的神经网络的上述特性,传统的多核拆分方式无法适用于包含控制流的神经网络。
为了解决上述技术问题,本公开提供了一种控制流多核并行方法。该控制流多核并行方法通过根据处理器的核的数量对神经网络中的控制流算子及其操作数进行拆分实现,可以运用在对神经网络进行编译的过程中由编译器执行。也就是说,编译器在对神经网络对应的程序编译的过程中实现对神经网络的控制流算子的多核拆分,从而实现控制流多核并行。
图1示出根据本公开一实施例的控制流多核并行方法的流程图。如图1所示,所述方法可以包括:
步骤S10,遍历神经网络中的算子,确定神经网络中的待处理的控制流算子;
步骤S11,将所述待处理的控制流算子复制到处理器的多个核中;
步骤S12,在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子对所述待处理的控制流算子的操作数进行处理,
其中,所述数据处理算子为拆分算子或者合并算子,用于对所述待处理的控制流算子的操作数进行拆分或者合并。
通过识别出神经网络中的待处理的控制流算子,将待处理的控制流算子复制到处理器的多个核中,并根据待处理的控制流算子的类型对相应的操作数进行拆分或者合并处理,可以实现包含控制流的神经网络的多核并行,充分利用处理资源,提高运行效率。
对于步骤S10,在一种可能的实现方式中,编译器可以按照神经网络的计算图(Computational Graph)中网络结构的拓扑排序的顺序逐个遍历神经网络的算子。
在神经网络的模型中可以包含多个算子,以及与算子关联的多个张量数据,根据算子与算子之间、以及算子与张量数据的关系可以搭建神经网络的计算图。计算图是通过图论语言表示数据函数的一种方式,在图论中节点通过边连接,节点代表事物,连接两节点的边表示两个事物间具有的关系,而计算图中用节点代表神经网络中的输入数据或者算子,连接两节点的边表示两点之间的输入输出关系,边还可以附有权值等。因此,可以按照计算图中节点间的拓扑排序的顺序逐个遍历节点实现对神经网络的算子的遍历。
在一种可能的实现方式中,计算图中的节点的参数信息可以以数据结构的形式记录。节点的参数信息可以包括节点的操作、节点在计算图中的上下文信息等。其中,节点的操作可以为算子对应的操作的名称,通过操作的名称可以识别节点对应的算子的运算逻辑。比如说,节点的操作为Add,表示节点对应的算子的操作为加法运算逻辑,节点的操作为split,表示节点对应的算子的操作为拆分运算逻辑,等等。节点在计算图中的上下文信息可以包括节点的前驱节点和后继节点的信息、节点的输入操作数、输出操作数等。因此,在遍历计算图中的节点的过程中,可以根据节点的操作识别待处理的控制流算子。
在本申请的实施例中,控制流算子可以包括enter算子、merge算子、switch算子、exit 算子以及nextiter算子。图2示出本申请一实施例的控制流算子的操作示意图。
如图2所示,enter算子将输入操作数转发到由给定名称(name)唯一标识的执行帧(execution frame),用于将一个执行帧中的张量传递给子执行帧,当输入操作数可用时,将启用enter执行传递的过程。
merge算子将一个可用输入操作数转发到输出,当merge的任何输入操作数可用时,将启用该merge以执行转发的过程。
switch算子根据控制输入操作数P的布尔张量(tensor of bool)将输入操作数D(input tensor)转发到算子的输出操作数之一,当switch的输入操作数P和输入操作数D都可用时, switch被启用以执行转发的过程。
exit算子将输入操作数从子执行帧转发到其父执行帧,用于将子执行帧中计算的输出操作数返回到其父帧,退出操作在输入操作数可用时启用。
nextiter算子将输入操作数转发到当前执行帧中的下一个迭代。TensorFlow运行时在执行帧中跟踪迭代,在执行帧中执行的任何操作都有一个唯一的迭代id,迭代id在迭代计算中唯一地标识同一操作的不同调用。在一个执行帧中可以有多个nextiter操作。当输入操作数可用时,将启用nextiter操作。
通过以上这五个控制流算子中的一些进行组合可以实现高级编程结构,例如条件(cond)和循环(while)等。图3示出根据本申请一实施例的循环(while)的示意图。如图3所示,五个控制流算子以及算子OP组成了循环(while)。在运行之前,编译器对神经网络进行编译时,无法确定是否会进入循环或者进入循环之后迭代几次,这些具体的内容在运行的过程中才能确定,因此,编译器无法使用传统的拆分方式在编译阶段对控制流算子进行拆分。
由于enter算子和exit算子为循环的入口和出口,这两种算子不进行实际的运算,因此,这两种算子不需要进行拆分,操作数F为循环内用户的输入操作数,需要进行拆分。也就是说,五种控制流算子中merge算子、switch算子以及nextiter算子是可以进行拆分的算子。
也就是说,在遍历计算图的节点的过程中,识别节点的操作是否为merge算子、switch 算子以及nextiter算子中的任一种,如果是,则该节点对应的算子为待处理的控制流算子,如果不是,可以继续遍历下一个节点。
编译器还可以根据设备信息确定处理器中核的数量,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元(核),每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。图4示出根据本公开一实施例的处理器的示意图。如图4所示,处理器100包括多个处理单元101(核)以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。图4中处理单元101的数量仅仅是一个示例,本公开不限于此。
在识别出神经网络中的待处理的控制流算子之后,可以将待处理的控制流算子复制到处理器的多个核中。复制的待处理的控制流算子的数量与处理器中核的数量可以相同。比如说,假设图4所示的处理器包括4个核,那么编译器可以复制4份待处理的控制流算子到4个核中。
对于步骤S12,对于不同类型的待处理的控制流算子,可以插入相应的数据处理算子。数据处理算子用于对待处理的控制流算子的输入操作数或者输出操作数进行处理,处理可以包括拆分、合并(拼接)等。因此,插入的算子可以为拆分(split)算子或者为合并(glue)算子。
在一种可能的实现方式中,所述待处理的控制流算子为merge算子或者nextIter算子。步骤S12,在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子对所述待处理的控制流算子的操作数进行处理,可以包括:在所述待处理的控制流算子之前插入拆分算子,所述拆分算子用于对所述待处理的控制流算子的输入操作数进行拆分得到子输入操作数。
在一种可能的实现方式中,所述待处理的控制流算子为switch算子,步骤S12,在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子对所述待处理的控制流算子的操作数进行处理,可以包括:在所述待处理的控制流算子之后插入合并算子,所述合并算子用于对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
在一种可能的实现方式中,对输入操作数的拆分和对输出操作数的合并是按照核的顺序执行的。比如说,拆分算子用于按照核的顺序对所述待处理的控制流算子的输入操作数进行拆分,得到核上的待处理的控制流算子对应的子输入操作数。合并算子用于按照核的顺序对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
数据拆分或者合并时,会把merge、switch、nextiter算子的输入操作数、输出操作数按照核的个数进行拆分或者合并,但是由于拆分会拆掉数据的顺序,合并时不按照正确的顺序合并也无法得到正确的运算结果,而且不能保证每份数据和对应的核一一对应,尤其在每次循环时一次的输入操作数是依赖于上一次循环的输出操作数的,因此,正常的拆分或者合并方法会影响计算的结果。
在本申请的实施例中,编译器会将操作数放在全局内存区域中,既可保证多核同时可以访问到,同时按照与核一一对应的方式对控制流算子的操作数进行拆分、合并,可以保证每个核所对应的数据。举例来说,可以预先规定好拆分或者合并的规则进行拆分或者合并,比如说按照核的顺序拆分(合并),简单的设计规则如下:即按照core 0、core 1……core 15的顺序依次拆分、合并数据。当然,core的数量不限于16个。
其中,核的顺序可以根据核的标识信息预先设定的,核的标识信息可以是用于区别各个核的信息,一个核的标识信息对应唯一的核,因此根据核的标识信息可以预先设置核的顺序,按照核的顺序对输入操作数进行拆分、对输出操作数进行合并,等等。
图5示出根据本申请一实施例的控制流多核并行的示意图。如图5所示,在merge算子和nextiter算子之前插入split算子,两个split算子都是用于对输入操作数进行拆分得到子输入操作数。在switch算子之后插入合并算子(glue算子),glue算子用于对多个核上的switch 算子的输出操作数进行合并。
如图5所示,nextiter算子之前的split算子用于对输入操作数F进行拆分得到子输入操作数F0、F1、F3和F3,经四个nextiter算子转发到输出,也即是到merge算子的输入,同时实现了对merge算子的输入操作数的拆分。merge算子之前的split算子用于对输入操作数A 进行拆分得到子输入操作数A0、A1、A2和A3分别作为四个merge算子的输入操作数。
拆分算子对输入操作数拆分后得到的子输入操作数(张量)的个数与复制的待处理的控制流算子的数量相同。如果复制的待处理的控制流算子的数量与处理器中核的数量相同,那么对输入操作数拆分后得到的子输入操作数(张量)的个数与处理器中核的数量也相同。也就是说,在本申请的实施方式中,可以根据处理器中核的数量复制待处理的控制流算子、拆分待处理的控制流算子的输入操作数。
为了保证运算结果,如上所述,在拆分输入操作数时可以按照核的顺序进行拆分,比如说,结合图4和图5,假设图4中的处理器包括四个处理单元101,四个处理单元101对应core1、core2、core3和core4。拆分算子在拆分待处理的控制流算子的输入操作数时,按照核的顺序拆分,比如说,拆分得到的子输入操作数A0、A1、A2和A3分别作为core1、 core2、core3和core4上的merge算子的输入操作数。以上按照core1、core2、core3和core4 的顺序仅仅是一个示例,比如说,还可以按照core1、core3、core2和core4的顺序,本公开对此不做限定。
如图5所示,switch算子之后包含两个输出操作数,因此编译器可以在switch算子之后插入两个glue算子,分别实现两部分输出操作数的合并。图5中,左侧的glue算子用于对多个核中的switch算子的输出操作数D0、D1、D2和D3进行合并得到输出操作数D,然后指定操作exit。右侧的glue算子用于对多个核中的switch算子的输出操作数E0、E1、E2和 E3进行合并得到输出操作数E,输出操作数E作为OP算子的输入操作数。
同样的,合并算子可以用于按照核的顺序对多个核上的待处理的控制流算子的输出操作数进行合并。仍然结合图4和图5进行说明,按照核的顺序,左侧的glue算子将输出操作数D0、D1、D2和D3依次合并得到输出操作数D。
在一种可能的实现方式中,还可以在switch算子的条件输入之前插入拆分算子,用于对switch算子的条件输入操作数进行拆分得到子条件输入操作数分别输出到对应的核中。如图5所示,操作数P0、P1、P2和P3即拆分得到的子条件输入操作数。
对于循环while,在本申请的实施例中,可以对循环外的算子和对应的操作数进行拆分,循环内的算子和对应的操作数根据并行情况进行拆分。如图3所示,操组数E、操作数F和OP算子为要参与下一次运算的操作数以及运算过程,位于循环内,因此,在本申请的实施方式中,可以根据操组数E、操作数F和算子OP的并行情况进行拆分,具体要看算子OP拆分后对整体性能的影响。如图5所示,在本申请的实施例中,未对OP算子进行拆分。
根据本申请上述实施方式的拆分方法,将控制流的拆分和循环内的算子(OP)的拆分区别开来,即控制流循环外和循环内分别保持两种拆分策略,循环内可根据并行情况进行拆分。由此,可以实现包含控制流的神经网络的多核并行,充分利用处理资源,提高运行效率。
需要说明的是,在本申请的实施例中,可以每确定一个待处理的控制流算子,将待处理的控制流算子复制到处理器的多个核并根据待处理的控制流算子的类型在神经网络中插入数据处理算子。也可以先遍历神经网络的算子,确定所有的待处理的控制流算子,在逐个将待处理的控制流算子复制到处理器的多个核并根据待处理的控制流算子的类型在神经网络中插入数据处理算子。还可以是在确定由几个待处理的控制流算子组成了一个高级编程结构之后执行复制和插入的过程,本公开对具体的执行顺序不作限定。
本申请还提供了一种控制流多核并行装置,图6示出根据本申请一实施例的控制流多核并行装置的框图。如图6所示,所述装置可以包括:
遍历模块61,用于遍历神经网络中的算子,确定神经网络中的待处理的控制流算子;
复制模块62,用于将所述待处理的控制流算子复制到处理器的多个核中;
插入模块63,用于在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,
其中,所述数据处理算子为拆分算子或者合并算子,用于对所述待处理的控制流算子的操作数进行拆分或者合并。
通过根据处理器的核的数量对神经网络中的控制流算子及其操作数进行拆分实现,可以运用在对神经网络进行编译的过程中由编译器执行。也就是说,编译器在对神经网络对应的程序编译的过程中实现对神经网络的控制流算子的多核拆分,从而实现控制流多核并行。
在一种可能的实现方式中,所述待处理的控制流算子为merge算子或者nextIter算子,所述插入模块63,包括:
第一插入单元,用于在所述待处理的控制流算子之前插入拆分算子,所述拆分算子用于对所述待处理的控制流算子的输入操作数进行拆分得到子输入操作数。
在一种可能的实现方式中,所述拆分算子用于按照核的顺序对所述待处理的控制流算子的输入操作数进行拆分,得到复制到核上的待处理的控制流算子对应的子输入操作数。
在一种可能的实现方式中,所述待处理的控制流算子为switch算子,所述插入模块,包括:
第二插入单元,用于在所述待处理的控制流算子之后插入合并算子,所述合并算子用于对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
在一种可能的实现方式中,所述合并算子用于按照核的顺序对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
图7是示出根据本披露实施例的一种组合处理装置1200的结构图。如图7中所示,该组合处理装置1200包括计算处理装置1202、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210,该计算处理装置可以配置用于执行本文结合附图1、5所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit, GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图8中示出的芯片1302)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图 7中所示的组合处理装置。该芯片可以通过对外接口装置(如图8中示出的对外接口装置1306)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图8对该板卡进行详细地描述。
图8是示出根据本披露实施例的一种板卡1300的结构示意图。如图8中所示,该板卡包括用于存储数据的存储器件1304,其包括一个或多个存储单元1310。该存储器件可以通过例如总线等方式与控制器件1308和上文所述的芯片1302进行连接和数据传输。进一步,该板卡还包括对外接口装置1306,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1312(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit, MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图7和图8的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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 (5)
1.一种控制流多核并行方法,其特征在于,所述方法包括:
遍历神经网络中的算子,确定神经网络中的待处理的控制流算子;
将所述待处理的控制流算子复制到处理器的多个核中;
在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,
其中,所述数据处理算子为拆分算子或者合并算子,用于对所述待处理的控制流算子的操作数进行拆分或者合并;
所述待处理的控制流算子为merge算子或者nextIter算子,
在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,包括:
在所述待处理的控制流算子之前插入拆分算子,所述拆分算子用于对所述待处理的控制流算子的输入操作数进行拆分得到子输入操作数;
所述待处理的控制流算子为switch算子,
在神经网络中插入与所述待处理的控制流算子的类型对应的数据处理算子,以对所述待处理的控制流算子的操作数进行处理,包括:
在所述待处理的控制流算子之后插入合并算子,所述合并算子用于对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
2.根据权利要求1所述的方法,其特征在于,所述拆分算子用于按照核的顺序对所述待处理的控制流算子的输入操作数进行拆分,得到复制到核上的待处理的控制流算子对应的子输入操作数。
3.根据权利要求1所述的方法,其特征在于,所述合并算子用于按照核的顺序对复制到多个核上的待处理的控制流算子的输出操作数进行合并。
4.一种计算机设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至3中任意一项所述的方法。
5.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至3中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011337511.4A CN112465133B (zh) | 2020-11-25 | 2020-11-25 | 控制流多核并行方法、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011337511.4A CN112465133B (zh) | 2020-11-25 | 2020-11-25 | 控制流多核并行方法、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112465133A CN112465133A (zh) | 2021-03-09 |
CN112465133B true CN112465133B (zh) | 2022-12-09 |
Family
ID=74799403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011337511.4A Active CN112465133B (zh) | 2020-11-25 | 2020-11-25 | 控制流多核并行方法、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112465133B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230041444A (ko) | 2021-09-17 | 2023-03-24 | 삼성전자주식회사 | 뉴럴 네트워크를 위한 컴파일 방법 및 장치 |
CN114136992A (zh) * | 2021-11-25 | 2022-03-04 | 陕西金之力电子科技有限公司 | 新型的带钢表面缺陷实时在线检测系统及方法 |
CN116069510B (zh) * | 2023-03-08 | 2023-07-04 | 天津南大通用数据技术股份有限公司 | 数据处理方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597646A (zh) * | 2017-09-30 | 2019-04-09 | 英特尔公司 | 具有可配置空间加速器的处理器、方法和系统 |
EP3480740A1 (en) * | 2017-11-07 | 2019-05-08 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing deconvolution |
CN110503188A (zh) * | 2019-08-01 | 2019-11-26 | 三星(中国)半导体有限公司 | 实现基于异构模型图的深度神经网络模型的方法和装置 |
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301142B2 (en) * | 2016-06-06 | 2022-04-12 | Vmware, Inc. | Non-blocking flow control in multi-processing-entity systems |
US11205110B2 (en) * | 2016-10-24 | 2021-12-21 | Microsoft Technology Licensing, Llc | Device/server deployment of neural network data entry system |
US11568220B2 (en) * | 2018-07-25 | 2023-01-31 | International Business Machines Corporation | Deep neural network implementation |
-
2020
- 2020-11-25 CN CN202011337511.4A patent/CN112465133B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597646A (zh) * | 2017-09-30 | 2019-04-09 | 英特尔公司 | 具有可配置空间加速器的处理器、方法和系统 |
EP3480740A1 (en) * | 2017-11-07 | 2019-05-08 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing deconvolution |
CN110503188A (zh) * | 2019-08-01 | 2019-11-26 | 三星(中国)半导体有限公司 | 实现基于异构模型图的深度神经网络模型的方法和装置 |
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
一种基于人工神经网络的基本块重排方法;张吉豫等;《北京大学学报(自然科学版)》;20101229(第01期);全文 * |
汇编级软硬结合的控制流检测方法;吴艳霞等;《计算机研究与发展》;20100815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112465133A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112465133B (zh) | 控制流多核并行方法、计算机设备和存储介质 | |
CN107329734B (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
KR102486030B1 (ko) | 완전연결층 신경망 정방향 연산 실행용 장치와 방법 | |
KR102470264B1 (ko) | 완전연결층 신경망 역방향 트레이닝 실행용 장치와 방법 | |
AU2014203218B2 (en) | Memory configuration for inter-processor communication in an MPSoC | |
CN112070202B (zh) | 一种融合图的生成方法、生成装置和计算机可读存储介质 | |
WO2024093292A1 (zh) | 计算图的算子自动融合方法及相关产品 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
CN111831582A (zh) | 用于智能处理器的内存管理装置、方法及电子设备 | |
WO2018076979A1 (zh) | 一种指令间数据依赖的检测方法和装置 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN116090519A (zh) | 卷积算子的编译方法及相关产品 | |
CN112465116A (zh) | 运算方法、装置、电子设备和存储介质 | |
CN115840894A (zh) | 一种用于处理多维张量数据的方法及其相关产品 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN115329923A (zh) | 用于神经网络模型的编译方法和相关产品 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN115480743A (zh) | 用于神经网络的编译方法、编译器及相关产品 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN111831333A (zh) | 用于智能处理器的指令分解方法、装置及电子设备 | |
CN110704040A (zh) | 信息处理方法、装置、计算机设备及可读存储介质 | |
CN117075902A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |