CN112463158B - 编译方法、装置、电子设备和存储介质 - Google Patents
编译方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112463158B CN112463158B CN202011337479.XA CN202011337479A CN112463158B CN 112463158 B CN112463158 B CN 112463158B CN 202011337479 A CN202011337479 A CN 202011337479A CN 112463158 B CN112463158 B CN 112463158B
- Authority
- CN
- China
- Prior art keywords
- control flow
- operator
- operand
- operands
- operators
- 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
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Executing Machine-Instructions (AREA)
Abstract
本公开涉及一种编译方法、装置、电子设备和存储介质。所述电子设备包括计算处理装置、接口装置、其他处理装置和存储装置。计算处理装置可以配置成执行用户指定的操作,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据本申请的实施方式,能够减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种编译方法、装置、电子设备和存储介质。
背景技术
在人工智能技术领域,神经网络算法是非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间的编译方法、装置、电子设备和存储介质。
根据本公开的一方面,提供了一种编译方法,所述方法包括:
遍历神经网络中的算子,提取神经网络中的控制流算子;
根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合;
为同一操作数集合中的操作数设置相同的内存地址。
在一种可能的实现方式中,所述方法还包括:
省略为所述控制流算子生成数据搬移的指令。
在一种可能的实现方式中,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,包括:
将属于同一控制流算子的操作数构建在同一个操作数集合中;
若两个控制流算子之间直接连接,则该两个控制流算子的操作数位于同一操作数集合中。
在一种可能的实现方式中,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,包括:
根据所述控制流算子的连接关系确定可优化控制流,所述可优化控制流包括单个控制流算子,或者,所述可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接;
位于同一可优化控制流中的控制流算子的操作数组成一个操作数集合。
在一种可能的实现方式中,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,包括:
根据所述控制流算子的连接关系、控制流算子的操作数,采用并查集算法构建操作数集合。
根据本公开的另一方面,提供了一种编译装置,所述装置包括:
提取模块,用于遍历神经网络中的算子,提取神经网络中的控制流算子;
构建模块,用于根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合;
设置模块,用于为同一操作数集合中的操作数设置相同的内存地址。
在一种可能的实现方式中,所述装置还包括:
指令搬移模块,用于省略为所述控制流算子生成数据搬移的指令。
在一种可能的实现方式中,所述构建模块,包括:
第一构建单元,用于将属于同一控制流算子的操作数构建在同一个操作数集合中;
若两个控制流算子之间直接连接,则该两个控制流算子的操作数位于同一操作数集合中。
在一种可能的实现方式中,所述构建模块,包括:
第二构建单元,用于根据所述控制流算子的连接关系确定可优化控制流,所述可优化控制流包括单个控制流算子,或者,所述可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接;
位于同一可优化控制流中的控制流算子的操作数组成一个操作数集合。
在一种可能的实现方式中,所述构建模块,包括:
第三构建单元,用于根据所述控制流算子的连接关系、控制流算子的操作数,采用并查集算法构建操作数集合。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述的方法。
根据本公开的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的方法。
通过编译器对神经网络对应的程序编译的过程中实现对神经网络中IO指令的优化,减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间。并且,由于省略生成了控制流算子对应的数据搬移指令,可以少存储一部分指令,节省了存储空间。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出本申请一实施例的控制流算子的操作示意图。
图2示出根据本申请一实施例的循环(while)的示意图。
图3示出根据本公开一实施例的编译方法的流程图。
图4示出根据本申请一实施例的计算图的示意图。
图5示出根据本公开一实施例的编译装置的框图。
图6是示出根据本披露实施例的一种组合处理装置1200的结构图。
图7是示出根据本披露实施例的一种板卡1300的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
在程序语言中,控制流决定了语句的执行顺序,常见的控制流包括顺序执行、分支(if/else/switch等)和循环(while)等。在运行程序的过程中,由于控制流算子存在大量的读写和跳转操作,因此,影响程序运行的性能。
若神经网络算法的程序中包括控制流,则在对神经网络算法进行编译时,神经网络是静态的,而在运行时神经网络是动态的,所以程序如何运行只有在运行过程中才能得到具体的顺序指令。
为了对包含控制流的神经网络的运行过程进行优化,本公开提供了一种编译方法。该编译方法可以应用于编译器,编译器在对神经网络对应的程序编译的过程中实现对神经网络中IO指令的优化,减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间。并且,由于省略生成了控制流算子对应的数据搬移指令,可以少存储一部分指令,节省了存储空间。
在介绍本公开提供的编译方法之前,先介绍相关的概念。
在本申请的实施例中,控制流算子可以包括enter算子、merge算子、switch算子、exit算子以及nextiter算子。
图1示出本申请一实施例的控制流算子的操作示意图。如图1所示,enter算子将输入操作数转发到由给定名称(name)唯一标识的执行帧(execution frame),用于将一个执行帧中的张量传递给子执行帧,当输入操作数可用时,将启用enter执行传递的过程。
merge算子将一个可用输入操作数转发到输出,当merge的任何输入操作数可用时,将启用该merge以执行转发的过程。
switch算子根据布尔张量(tensor of bool)将输入操作数D(input tensor)转发到算子的输出操作数之一,当switch的两个输入操作数P和D都可用时,switch被启用以执行转发的过程。
exit算子将输入操作数从执行帧转发到其父执行帧,用于将子执行帧中计算的输出操作数返回到其父帧,退出操作在输入操作数可用时启用。
nextiter算子将输入操作数转发到当前执行帧中的下一个迭代。TensorFlow运行时在执行帧中跟踪迭代,在执行帧中执行的任何操作都有一个唯一的迭代id,迭代id在迭代计算中唯一地标识同一操作的不同调用。在一个执行帧中可以有多个nextiter操作。当输入操作数可用时,将启用nextiter操作。
通过以上这五个控制流算子中的一些进行组合可以实现高级编程结构,例如条件(cond)和循环(while)等。图2示出根据本申请一实施例的循环(while)的示意图。如图2所示,五个控制流算子以及算子OP组成了循环(while)。
图3示出根据本公开一实施例的编译方法的流程图。如图3所示,所述编译方法可以包括:
步骤S30,遍历神经网络中的算子,提取神经网络中的控制流算子;
步骤S31,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合;
步骤S32,为同一操作数集合中的操作数设置相同的内存地址;
具体可以为,根据操作数集合中任意一个操作数的内存地址对操作数集合中其他操作数进行地址回填。
对于步骤S30,在一种可能的实现方式中,编译器可以按照神经网络的计算图(Computational Graph)中网络结构的拓扑排序的顺序逐个遍历神经网络中的算子。
在神经网络的模型中可以包含多个算子,以及与算子关联的多个张量数据,根据算子与算子之间、以及算子与张量数据的关系可以搭建神经网络的计算图。计算图是通过图论语言表示数据函数的一种方式,在图论中节点通过边连接,节点代表事物,连接两节点的边表示两个事物间具有的关系,而计算图中用节点代表神经网络中的输入数据或者算子,连接两节点的边表示两点之间的输入输出关系,边还可以附有权值等。因此,可以按照计算图中节点间的拓扑排序的顺序逐个遍历节点实现对神经网络中的算子的遍历。
在一种可能的实现方式中,计算图中的节点的参数信息可以以数据结构的形式记录。节点的参数信息可以包括节点的标识、节点的操作、节点的上下文信息等。其中,节点的标识可以是能够唯一识别节点的信息,比如说可以是节点的编号,等。节点的操作可以为算子对应的操作的名称,通过操作的名称可以识别节点对应的算子的操作,比如说,节点的操作为Add,表示节点对应的算子的操作为加法操作,节点的操作为split,表示节点对应的算子的操作为拆分操作,等等。节点的上下文信息可以包括节点的前驱节点和后继节点的信息、节点的输入操作数、输出操作数等。
例如,一个节点可以表示为:
{
"name":,
"op":"Add",
"inputs":
[
"Input1","Input2",
],
},
其中,name表示节点的标识,节点的操作为add(加),节点的输入节点为Input1和Input2,节点的输入数据为节点Input1和Input2的输出数据。其中,Input1和Input2可以表示输入节点的标识。
因此,在遍历计算图中的节点的过程中,可以根据节点的操作识别并提取控制流算子。
对于步骤S31,控制流算子之间的连接关系可以通过上述节点的上下文信息获得。比如说,可以通过上下文信息中的前驱节点、后继节点判断当前节点与哪些节点连接。
在一种可能的实现方式中,可以将属于同一控制流算子的操作数构建在同一个操作数集合中;若两个控制流算子之间直接连接,则该两个控制流算子的操作数位于同一操作数集合中。其中,所述操作数包括输入操作数和输出操作数。
在一个示例中,对于不与其他控制流算子直接连接的第一控制流算子,可以将第一控制流算子的输入操作数和输出操作数构建为一个操作数集合。
根据神经网络提取的控制流算子可以构建一个或者多个操作数集合。举例来说,如上文所述控制流算子组合可以实现高级编程结构,因此,在神经网络中可以存在多个控制流算子连接的情况,这种情况下,多个控制流算子的操作数的搬移过程是可以优化的。如图2所示,可以对操作数A、B、C、D、E和F的搬移过程进行优化,可以将操作数A、B、C、D、E和F构建为一个操作数集合。神经网络中还可以存在不与其他控制流算子连接的控制流算子,对于这类控制流算子,可以直接将控制流算子的输入操作数和输出操作数构建一个操作数集合。
在构建了操作数集合后,编译器可以为操作数集合中的任意一个操作数分配内存空间得到内存地址,并对操作数集合中的其他操作数进行地址回填,也就是说,操作数集合中的操作数的内存地址都是相同的。
在一种可能的实现方式中,对操作数集合中的操作数进行内存地址回填可以通过修改操作数的描述信息实现。本申请实施例中的操作数可以是张量数据,操作数的描述信息可以包括描述张量数据的形状的参数、操作数的大小、操作数存储的地址信息的用于描述操作数的信息。操作数存储的地址信息可以是指操作数在内存中存储的起始地址,在一种可能的实现方式中,该起始地址可以用相对于为神经网络的操作数分配的内存空间的基地址的偏移量表示,本申请不限于此。
处理器在运行指令以执行算子对应的运算时,需要读取操作数,处理器可以根据操作数的描述信息获取操作数的地址信息,从而根据获取的操作数的地址信息读取或者写入操作数。由于根据本申请上述实施方式的编译方法将同一个操作数集合中的操作数的内存地址设置为相同的内存地址,这样,对于控制流算子,就不再需要数据搬移的过程了。
由于对控制流算子的操作数的内存地址进行了优化之后不需要数据搬移的过程,因此,可以省略为控制流算子生成数据搬移的指令,就是不再为控制流算子生成数据搬移的指令。但除了数据搬移指令,在对有些控制流算子进行搬移时,还会生成其他的指令,比如在对switch算子进行编译时会生成跳转指令。编译器可以根据神经网络的拓扑关系生成其他指令。
根据本申请上述实施方式的编译方法,对于可以进行优化的控制流算子,对控制流算子的操作数进行了内存地址优化,并省略生成控制流算子对应的指令,可以减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间。并且,由于省略生成了控制流算子对应的指令,可以少存储一部分指令,节省了存储空间。
本申请还提供了构建操作数集合的过程的一些示例,在一种可能的实现方式中,步骤S11,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,可以包括:根据所述控制流算子的连接关系、控制流算子的操作数,采用并查集算法构建操作数集合。
具体地,编译器可以将控制流算子的每个操作数初始化为一个操作数集合。然后遍历所有控制流算子,可以将同一个控制流算子的输入操作数和输出操作数合并为一个操作数集合,另外,还可以根据计算图中算子之间的连接关系对操作数集合进行合并,直到遍历完所有控制流算子。其中,根据计算图中算子之间的连接关系对操作数集合进行合并可以是指,可以将两个具有直接连接关系的控制流算子对应的操作数集合进行合并。
举例来说,如图2所示的计算图中的控制流算子,可以先将控制流算子的操作数初始化为操作数集合{A}、{B}、{C}、{D}、{E}、{F}。操作数A、B和C都属于控制流算子merge的操作数,因此,可以将操作数集合{A}、{B}、{C}进行合并得到操作数集合操作数集合{A,B,C}。
读取节点merge的输入节点信息,可知节点merge的前驱节点为节点nextiter,节点merge和节点nextiter之间存在直接连接关系,因此,可以将两个控制流算子merge和nextiter的操作数合并到一个操作数集合中,也就是合并操作数集合{A,B,C}和{F}得到操作数集合{A,B,C,F}。
读取节点switch的输入节点信息,可知节点switch的前驱节点为节点merge,节点merge和节点switch之间存在直接连接关系,因此,可以将两个控制流算子merge和switch的操作数合并到一个操作数集合中,也就是合并操作数集合{A,B,C,F}和{D}、{E}得到操作数集合{A,B,C,F,D,E}。
遍历完所有的控制流算子后,可以实现操作数集合的构建过程。
下面结合图2阐述根据本申请的实施例是如何实现控制流算子的操作数的内存地址优化,并且不影响运算的过程的。如图2所示,在根据本申请的实施方式将操作数A、B、C、F、D、E的内存地址都修改为相同的内存地址后,假设操作数A就绪,在现有技术中控制流算子merge需要分配新的内存空间,将操作数A搬移到新的内存空间得到操作数C,操作数C和操作数A完全一样,只是存储的内存地址不同,但在本申请的实施方式中,由于操作数C和操作数A的内存地址是一样的,因此可以省略数据搬移的过程。对于控制流算子switch,不管是操作数A或者B中任意一个就绪,控制流算子switch都可以到同一个内存地址中读取操作数C,因为操作数C的描述信息中的内存地址和操作数A、操作数B都是相同的,根据以上假设,控制流算子switch读取到操作数A,然后输出操作数E(如同前述理由,同样不需要数据搬移的过程)。对于算子OP,如果经过控制流算子switch运算后跳转到右侧的分支,那么算子OP就要读取操作数E进行运算并输出操作数F,由于操作数E和操作数A、操作数B的内存地址都相同,因此,算子OP读取操作数A并进行运算后,将得到的操作数F输出到原来的内存地址中。对于控制流算子nextiter,操作数B和操作数F、操作数A的内存地址相同,因此,不需要进行数据搬移的过程,此时,操作数B就绪了,只是和操作数A存储在相同的内存地址。继续运算,如果经过控制流算子switch运算后跳转到左侧的分支,对于控制流算子exit,要跳出循环,控制流算子exit可以从操作数D的描述信息中的内存地址读取操作数,由于操作数D和操作数A、操作数B的内存地址都相同,因此,不需要进行数据搬移的过程可以结束运算。对于控制流算子exit之后连接的算子,也可以通过操作数D的描述信息中的内存地址读取到操作数D。
根据以上示例可知,通过本申请实施例的编译方法,对控制流算子的操作数进行了内存地址优化,并省略生成控制流算子对应的指令,可以减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间,并且不影响运算的结果。
在另一种可能的实现方式中,步骤S11,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,可以包括:
根据所述控制流算子的连接关系确定可优化控制流,所述可优化控制流包括单个控制流算子,或者,所述可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接;位于同一可优化控制流中的控制流算子的操作数组成一个操作数集合。
需要说明的是,所述可优化控制流包括单个控制流算子,该单个控制流算子是不与计算图中其他控制流算子直接连接的控制流算子。可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接,可以是指,不需要可优化控制流中的每两个控制流算子之间都直接连接,对于可优化控制流中的任意一个控制流算子,只需要与同一可优化控制流中的其他控制流算子中的至少一个连接即可。
下面结合具体的示例对上述过程进行说明,图4示出根据本申请一实施例的计算图的示意图。如图4所示,在遍历计算图中的节点提取出神经网络的控制流算子后,根据控制流算子之间的连接关系可以确定两个可优化控制流,其中一个为如图2所示的while循环,另一个仅包括一个控制流算子merge。图4中分别用两个虚线框标识了出来。
可以将位于同一可优化控制流中的控制流算子的操作数构建成一个操作数集合,如图4所示,可以构建两个操作数集合{A,B,C,F,D,E}、{G,H,I}。操作数集合{A,B,C,F,D,E}中的操作数可以优化为同一个内存地址Addr1,操作数集合{G,H,I}中的操作数可以优化为同一个内存地址Addr2。
在图4所示的示例中,算子OP2从Addr1读取操作数D进行运算后,将运算得到的操作数D输出到内存地址Addr2。经过switch运算,可以跳转到左侧或者右侧的分支,不管跳转到哪一侧,都不需要进行数据搬移的过程,OP3或者OP4都可以从内存地址Addr2读取到操作数I或者操作数H。
需要说明的是,图4所示的示例也可以采用并查集算法构建操作数集合。比如说,可以先将控制流算子的操作数初始化为操作数集合{A}、{B}、{C}、{D}、{E}、{F}、{G}、{H}、{I}。对操作数集合{A}、{B}、{C}、{D}、{E}、{F}的合并过程可以参见上文的描述,不再赘述,在遍历到图4中下侧的控制流算子switch时,可以将操作数集合{G}、{H}、{I}进行合并得到操作数集合操作数集合{G,H,I},由于控制流算子switch不与其他任何控制流算子连接,因此完成图4示例中操作数集合构建的过程。采用并查集算法同样可以构建得到两个操作数集合{A,B,C,F,D,E}、{G,H,I}。
根据以上示例可知,通过本申请实施例的编译方法,对控制流算子的操作数进行了内存地址优化,并省略生成控制流算子对应的指令,可以减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间,并且不影响运算的结果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图5示出根据本公开一实施例的编译装置的框图。如图5所示,所述装置可以包括:
提取模块51,用于遍历神经网络中的算子,提取神经网络中的控制流算子;
构建模块52,用于根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合;
设置模块53,用于为同一操作数集合中的操作数设置相同的内存地址。
根据本申请上述实施方式的编译装置,对于可以进行优化的控制流算子,对控制流算子的操作数进行了内存地址优化,并省略生成控制流算子对应的指令,可以减少控制流算子产生的数据搬移开销,提高运算性能,还可以节省存储数据需要的内存空间。并且,由于省略生成了控制流算子对应的指令,可以少存储一部分指令,节省了存储空间。
在一种可能的实现方式中,所述装置还包括:
指令搬移模块,用于省略为所述控制流算子生成数据搬移的指令。
在一种可能的实现方式中,所述构建模块52,包括:
第一构建单元,用于将属于同一控制流算子的操作数构建在同一个操作数集合中;
若两个控制流算子之间直接连接,则该两个控制流算子的操作数位于同一操作数集合中。
在一种可能的实现方式中,所述构建模块52,包括:
第二构建单元,用于根据所述控制流算子的连接关系确定可优化控制流,所述可优化控制流包括单个控制流算子,或者,所述可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接;
位于同一可优化控制流中的控制流算子的操作数组成一个操作数集合。
在一种可能的实现方式中,所述构建模块52,包括:
第三构建单元,用于根据所述控制流算子的连接关系、控制流算子的操作数,采用并查集算法构建操作数集合。
根据本公开的一方面,还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述的方法。
根据本公开的一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的方法。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
图6是示出根据本披露实施例的一种组合处理装置1200的结构图。如图6中所示,该组合处理装置1200包括计算处理装置1202、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210,该计算装置可以配置用于执行本文结合附图3所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(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 (12)
1.一种编译方法,其特征在于,所述方法包括:
遍历神经网络中的算子,提取神经网络中的控制流算子;
根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合;其中,所述控制流算子包括:enter算子、merge算子、switch算子、exit算子和nextiter算子;所述enter算子将输入操作数转发到由给定名称唯一标识的执行帧,用于将一个执行帧中的张量传递给子执行帧,当输入操作数可用时,将启用enter算子执行传递的过程;所述merge算子将一个可用输入操作数转发到输出,当merge算子的任何输入操作数可用时,将启用该merge算子以执行转发的过程;所述switch算子根据布尔张量将输入操作数转发到算子的输出操作数之一,当switch算子的两个输入操作数都可用时,switch算子被启用以执行转发的过程;所述exit算子将输入操作数从子执行帧转发到父执行帧,用于将子执行帧中计算的输出操作数返回到所述父执行帧,exit算子在输入操作数可用时启用;所述nextiter算子将输入操作数转发到当前执行帧中的下一个迭代,当输入操作数可用时,将启用nextiter算子;
为同一操作数集合中的操作数设置相同的内存地址,具体为根据操作数集合中任意一个操作数的内存地址对操作数集合中其他操作数进行地址回填。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
省略为所述控制流算子生成数据搬移的指令。
3.根据权利要求1或2所述的方法,其特征在于,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,包括:
将属于同一控制流算子的操作数构建在同一个操作数集合中;
若两个控制流算子之间直接连接,则该两个控制流算子的操作数位于同一操作数集合中。
4.根据权利要求1或2所述的方法,其特征在于,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,包括:
根据所述控制流算子的连接关系确定可优化控制流,所述可优化控制流包括单个控制流算子,或者,所述可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接;
位于同一可优化控制流中的控制流算子的操作数组成一个操作数集合。
5.根据权利要求1或2所述的方法,其特征在于,根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合,包括:
根据所述控制流算子的连接关系、控制流算子的操作数,采用并查集算法构建操作数集合。
6.一种编译装置,其特征在于,所述装置包括:
提取模块,用于遍历神经网络中的算子,提取神经网络中的控制流算子;
构建模块,用于根据控制流算子之间的连接关系、控制流算子的操作数构建操作数集合;其中,所述控制流算子包括:enter算子、merge算子、switch算子、exit算子和nextiter算子;所述enter算子将输入操作数转发到由给定名称唯一标识的执行帧,用于将一个执行帧中的张量传递给子执行帧,当输入操作数可用时,将启用enter算子执行传递的过程;所述merge算子将一个可用输入操作数转发到输出,当merge算子的任何输入操作数可用时,将启用该merge算子以执行转发的过程;所述switch算子根据布尔张量将输入操作数转发到算子的输出操作数之一,当switch算子的两个输入操作数都可用时,switch算子被启用以执行转发的过程;所述exit算子将输入操作数从子执行帧转发到父执行帧,用于将子执行帧中计算的输出操作数返回到所述父执行帧,exit算子在输入操作数可用时启用;所述nextiter算子将输入操作数转发到当前执行帧中的下一个迭代,当输入操作数可用时,将启用nextiter算子;
设置模块,用于为同一操作数集合中的操作数设置相同的内存地址,具体为根据操作数集合中任意一个操作数的内存地址对操作数集合中其他操作数进行地址回填。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
指令搬移模块,用于省略为所述控制流算子生成数据搬移的指令。
8.根据权利要求6或7所述的装置,其特征在于,所述构建模块,包括:
第一构建单元,用于将属于同一控制流算子的操作数构建在同一个操作数集合中;
若两个控制流算子之间直接连接,则该两个控制流算子的操作数位于同一操作数集合中。
9.根据权利要求6或7所述的装置,其特征在于,所述构建模块,包括:
第二构建单元,用于根据所述控制流算子的连接关系确定可优化控制流,所述可优化控制流包括单个控制流算子,或者,所述可优化控制流中的每个控制流算子至少与可优化控制流中的另一个控制流算子直接连接;
位于同一可优化控制流中的控制流算子的操作数组成一个操作数集合。
10.根据权利要求6或7所述的装置,其特征在于,所述构建模块,包括:
第三构建单元,用于根据所述控制流算子的连接关系、控制流算子的操作数,采用并查集算法构建操作数集合。
11.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至5中任意一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011337479.XA CN112463158B (zh) | 2020-11-25 | 2020-11-25 | 编译方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011337479.XA CN112463158B (zh) | 2020-11-25 | 2020-11-25 | 编译方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463158A CN112463158A (zh) | 2021-03-09 |
CN112463158B true CN112463158B (zh) | 2023-05-23 |
Family
ID=74799803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011337479.XA Active CN112463158B (zh) | 2020-11-25 | 2020-11-25 | 编译方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463158B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016041126A1 (zh) * | 2014-09-15 | 2016-03-24 | 华为技术有限公司 | 基于gpu的数据流处理方法和装置 |
WO2020098414A1 (zh) * | 2018-11-13 | 2020-05-22 | Oppo广东移动通信有限公司 | 终端数据处理方法、装置及终端 |
EP3674990A1 (en) * | 2018-12-29 | 2020-07-01 | Baidu Online Network Technology (Beijing) Co., Ltd. | Output method and apparatus for multiple neural network, server and computer readable storage medium |
-
2020
- 2020-11-25 CN CN202011337479.XA patent/CN112463158B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016041126A1 (zh) * | 2014-09-15 | 2016-03-24 | 华为技术有限公司 | 基于gpu的数据流处理方法和装置 |
WO2020098414A1 (zh) * | 2018-11-13 | 2020-05-22 | Oppo广东移动通信有限公司 | 终端数据处理方法、装置及终端 |
EP3674990A1 (en) * | 2018-12-29 | 2020-07-01 | Baidu Online Network Technology (Beijing) Co., Ltd. | Output method and apparatus for multiple neural network, server and computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
CN112463158A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107329734B (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN107832843B (zh) | 一种信息处理方法及相关产品 | |
CN112465133B (zh) | 控制流多核并行方法、计算机设备和存储介质 | |
CN112463159B (zh) | 编译方法、装置、电子设备和存储介质 | |
WO2024093292A1 (zh) | 计算图的算子自动融合方法及相关产品 | |
WO2021036893A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
CN110009100B (zh) | 自定义算子的计算方法及相关产品 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN113469326B (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN115480743A (zh) | 用于神经网络的编译方法、编译器及相关产品 | |
CN115840894A (zh) | 一种用于处理多维张量数据的方法及其相关产品 | |
CN116185378A (zh) | 计算图的优化方法、数据处理方法及相关产品 | |
CN112817898A (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN112667227A (zh) | 可视化设计流水线的方法及可读存储介质 | |
CN110704040A (zh) | 信息处理方法、装置、计算机设备及可读存储介质 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN113469365B (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 |