CN110717584A - 神经网络编译方法、编译器、计算机设备及可读存储介质 - Google Patents
神经网络编译方法、编译器、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN110717584A CN110717584A CN201910945723.1A CN201910945723A CN110717584A CN 110717584 A CN110717584 A CN 110717584A CN 201910945723 A CN201910945723 A CN 201910945723A CN 110717584 A CN110717584 A CN 110717584A
- Authority
- CN
- China
- Prior art keywords
- graph
- neural network
- computer
- calculation
- execution
- 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
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种神经网络编译方法、编译器、计算机设备及可读存储介质,该方法包括获取工程文件对应的编码信息,根据所述编码信息,得到初始计算图,对所述初始计算图进行扩展处理,得到中间计算图,对所述中间计算图进行优化处理,得到执行计算图,根据所述执行计算图,得到计算机可执行文件;该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,得到优质高效的代码,提高在计算平台上的执行效率;同时,该方法还可以通过神经网络编译器对计算机编程语言进行编译,从而提高计算机编程语言的可用性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种神经网络编译方法、编译器、计算机设备及可读存储介质。
背景技术
随着科学技术的发展,人工神经网络技术在各个领域得到了广泛的应用,并且神经网络算法是当今人工智能领域中的主流算法,可以实现图像识别、声音识别和自然语言处理等复杂任务。为了满足不同领域的应用,采用神经网络专用编程语言(Neural NetworkLanguage,NNL)以执行神经网络算法,实现目标任务,并且神经网络专用编程语言具有可移植的编程接口,能够将神经网络专用编程语言移植到不同的计算平台执行任务。
现有技术中,仅能够利用神经网络通用编译器对神经网络通用编程语言进行编译,得到计算机可识别的代码。但是,神经网络通用编译器并不能对神经网络专用编程语言进行编译,从而导致神经网络专用编程语言的可用性降低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高神经网络专用编程语言可用性的神经网络编译方法、编译器、计算机设备及可读存储介质。
本申请实施例提供一种神经网络编译方法,所述方法包括:
获取工程文件对应的编码信息;
根据所述编码信息,得到初始计算图;
对所述初始计算图进行扩展处理,得到中间计算图;
对所述中间计算图进行优化处理,得到执行计算图;
根据所述执行计算图,得到计算机可执行文件。
在其中一个实施例中,所述获取工程文件对应的编码信息,包括:根据计算机编程语言的语言特性,从所述工程文件中提取所述编码信息,所述计算机编程语言包括神经网络专用编程语言,所述语言特征包括所述计算机编程语言的语法和语义。
在其中一个实施例中,所述计算机编程语言包括time声明、template的定义以及graph,其中,所述graph包括多个template的实例连接构成。
在其中一个实施例中,所述根据所述编码信息,得到初始计算图,包括:
对所述编码信息进行解析处理,得到初始计算图对应的计算图结构;
根据所述计算图结构,得到初始计算图。
在其中一个实施例中,所述对所述编码信息进行解析处理,得到初始计算图对应的计算图结构,包括:获取所述编码信息中的语法以及语义,并根据编码信息的所述语法以及所述语义,得到初始计算图对应的所述计算图结构。
在其中一个实施例中,所述对所述初始计算图进行扩展处理,得到中间计算图,包括:
对所述初始计算图中的嵌套结构进行逐层分析处理,获取所述初始计算图中的隐含语义;
根据所述隐含语义对所述初始计算图进行扩展处理,得到中间计算图。
在其中一个实施例中,所述对所述中间计算图进行优化处理,得到执行计算图,包括:根据任务调度需求和资源分配需求,对所述中间计算图进行合并处理或者拆分处理,得到所述执行计算图。
在其中一个实施例中,所述根据所述执行计算图,得到计算机可执行文件,包括:
根据所述执行计算图得到核函数;
根据所述执行计算图的拓扑结构,确定对所述核函数的调度过程,得到所述计算机可执行文件。
本申请实施例提供一种神经网络编译器,所述神经网络编译器包括:
获取编码信息模块,用于获取工程文件对应的编码信息;
获取初始计算图模块,用于根据所述编码信息,得到初始计算图;
扩展模块,用于对所述初始计算图进行扩展处理,得到中间计算图;
优化模块,用于对所述中间计算图进行优化处理,得到执行计算图;
获取可执行文件模块,用于根据所述执行计算图,得到计算机可执行文件。
本申请实施例提供一种计算机设备,包括存储器、处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取工程文件对应的编码信息;
根据所述编码信息,得到初始计算图;
对所述初始计算图进行扩展处理,得到中间计算图;
对所述中间计算图进行优化处理,得到执行计算图;
根据所述执行计算图,得到计算机可执行文件。
本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取工程文件对应的编码信息;
根据所述编码信息,得到初始计算图;
对所述初始计算图进行扩展处理,得到中间计算图;
对所述中间计算图进行优化处理,得到执行计算图;
根据所述执行计算图,得到计算机可执行文件。
本实施例提供的一种神经网络编译方法、神经网络编译器、计算机设备以及可读存储介质,神经网络编译器可以获取工程文件对应的编码信息,根据所述编码信息,得到初始计算图,对所述初始计算图进行扩展处理,得到中间计算图,对所述中间计算图进行优化处理,得到执行计算图,根据所述执行计算图,得到计算机可执行文件;该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,得到优质高效的代码,提高在计算平台上的执行效率;同时,该方法还可以通过神经网络编译器对计算机编程语言进行编译,从而提高计算机编程语言的可用性。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的神经网络编译器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述神经网络编译器时,所述多个所述神经网络编译器间可以通过特定的结构进行链接并传输数据;
其中,多个所述神经网络编译器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述神经网络编译器共享同一控制系统或拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述神经网络编译器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和其它处理装置;该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的神经网络编译器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的神经网络编译器。
本申请实施例提供的一种电子设备,包括如所述的芯片。
附图说明
图1为一实施例提供的一种神经网络编译方法的流程示意图;
图2为一实施例提供的一种神经网络编译方法的具体流程示意图;
图3为一实施例提供的一种神经网络编译器的结构示意图;
图4为一实施例提供的计算机设备的内部结构图;
图5为一实施例提供的一种组合处理装置的结构图;
图6为一实施例提供的另一种组合处理装置的结构图;
图7为一实施例提供的一种板卡的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供的神经网络编译方法可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中对计算机编程语言进行编译处理。进一步地,神经网络编译方法可以应用于中央处理器和神经网络加速器这样的计算平台上,神经网络编译方法可以通过神经网络编译器执行,神经网络编译器可以为中央处理器中的部分电路或者全部电路。在本实施例中,神经网络编译器可以对神经网络专用编程语言在中央处理器上进行编译,然后中央处理器将编译后得到的计算机可执行文件发送至神经网络加速器,神经网络加速器运行计算机可执行文件后将运行结果再返回至中央处理器。可选的,上述神经网络加速器可以为图形处理器、嵌入式神经网络处理器或者机器学习处理单元,本实施例对神经网络加速器的具体类型不做限定。在下述实施例中将介绍神经网络编译方法的具体过程。
需要说明的是,本公开实施例提供的神经网络编译方法,其执行主体可以是神经网络编译器,该神经网络编译器可以通过软件、硬件或者软硬件结合的方式实现成为计算机设备的部分或者全部。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一实施例提供的一种神经网络编译方法的流程示意图。如图1所示,该神经网络编译方法包括:
S101、根据工程文件,获取计算机编程语言对应的编码信息,所述计算机编程语言包括神经网络专用编程语言。
具体的,上述工程文件可以包括大量的计算机编程语言,且工程文件可以应用于目标识别、图像识别、图像分类、语音识别等多种技术领域。其中,计算机编码语言可以为专用编程语言以及通用编程语言。但是,在本实施例中,计算机编程语言可以为神经网络专用编程语言,即NNL。可选的,NNL可以表征为一种基于对计算图的描述来表征神经网络的程序代码,且程序代码可以包括描述计算图的程序语句。可选的,上述NNL可以包括正向神经网络结构、反向神经网络结构以及神经网络训练迭代过程的程序代码。可选的,上述编码信息可以包括工程文件中描述计算图的程序语句。
S102、根据所述编码信息,得到初始计算图。
可选的,上述S102中根据所述编码信息,得到初始计算图的步骤,具体可以包括:对所述编码信息进行解析处理,得到初始计算图对应的计算图结构;根据所述计算图结构,得到初始计算图。
具体的,神经网络编译器获取到工程文件中描述计算图的程序语句后,可以将这些描述计算机图的程序语句直接构建出程序所描述的计算图结构,得到初始计算图。在神经网络领域。可选的,初始计算图可以为一个包含复杂template的嵌套结构的图,可以与程序代码中的语义相符。
S103、对所述初始计算图进行扩展处理,得到中间计算图。
需要说明的是,上述扩展处理可以表征为对初始计算图中缺省的节点信息的推断处理。在本实施例中,神经网络编译器可以对初始计算图进行扩展处理后,得到由程序中由基本单元互相连接而成的中间计算图。可选的,上述中间计算图可以包括程序完整的运行过程,并且可以被直接翻译成目标代码执行。
S104、对所述中间计算图进行优化处理,得到执行计算图。
具体的,神经网络编译器可以利用中间计算图的结构特点对中间计算图进行优化处理,得到目标运算平台上性能最大化的计算图结构,即执行计算图。可选的,优化处理可以包括对程序中的运算单元进行合并或者拆分处理。
S105、根据所述执行计算图,得到计算机可执行文件。
具体的,神经网络编译器通过神经网络编译器可以根据执行计算图进行目标代码获取,得到不同目标运算平台上计算机可执行文件。可选的,该计算机可执行文件可以包括计算机可执行的程序代码。可选的,计算机可执行文件可以应用于目标识别、图像识别、图像分类、语音识别等多种技术领域;在对计算机可执行文件进行执行时,可以用于对输入的图像数据、文本数据、语音数据等进行分类识别处理,以实现模式识别、自动控制、预测估计等多种功能。
本实施例提供的神经网络编译方法,神经网络编译器可以获取工程文件对应的编码信息,根据所述编码信息,得到初始计算图,对所述初始计算图进行扩展处理,得到中间计算图,对所述中间计算图进行优化处理,得到执行计算图,根据所述执行计算图,得到计算机可执行文件;该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,得到优质高效的代码,提高在计算平台上的执行效率,使得计算机能效降低,以及计算机的能效比提升;同时,该方法还可以通过神经网络编译器对计算机编程语言进行编译,从而提高计算机编程语言的可用性。
作为其中一个实施例,上述S101中根据工程文件,获取计算机编程语言对应的编码信息的步骤,可以包括:根据所述计算机编程语言的语言特性,从所述工程文件中提取所述编码信息,所述语言特征包括所述计算机编程语言的语法和语义。可选的,计算机编程语言包括time声明、template的定义以及graph,其中,所述graph包括多个template的实例连接构成。
具体的,NNL可以通过显式的并行编程方式来表示,这样的程序代码中可以被神经网络编译器翻译为在中央处理器(central processing unit,CPU)上固定指令的循环,或者单指令多线程(Single Instruction Multiple Threads,SIMT)或者单指令流多数据流(Single Instruction Multiple Data,SIMD)的指令或代码应用与不同的计算平台上。在本实施例中,通过一种自上而下的方式可以对NNL的语法进行说明,并且可以采用扩展巴科斯-瑙尔范式(Extended Backus-Naur Form,EBNF)定义NNL的语法,即:
可以理解的是,一个完整的NNL程序代码(program)可以包含最多一个time声明,一系列template的定义,和对template的实例连接构成的;而time声明是对特殊变量Cycle的赋值,可以表示时间相关的神经网络如循环神经网络、长期短记忆网络等。可选的,上述template可以定义神经网络算法,对它实例化得到的inst是构成神经网络的结构的基本单元,可以表征为神经网络算法中“层”的概念,但是它的表示范围不局限于神经网络的层。可选的,topo部分可以采用一种简单的方式定义inst之间的单向连接关系,表征描述神经网络中层与层之间的拓扑结构。
其中,对NNL程序代码中的语句进行如下解释:
(1)上述template可以包含四个部分:关键字template,template名,参数列表和template定义。可选的,template的定义方式可以包括两种,一种可以通过NNL提供的特殊语句定义基本的运算块block;另一种可以由已经定义好的template的实例化组合得到的graph来表示新的template。其中,第一种方式可以定义基本的神经网络层,如卷积层、池化层、全连接层等常用层或其它新引入的层;第二种方式可以为一种递归式定义神经网络层的方式,在神经网络的拓扑表示中引入了层级结构。
(2)在NNL中,block可以定义一类特殊的向量运算。其中,在一个block的语法中首先可以输入输出端口的声明,一个block可以有多个输入输出端口和输出端口port,这些端口可以表示标量、向量、矩阵或者更高维的张量,通过给出每一维的大小来表示整个张量的形状。例如,一个三维的64*13*13的输入端口,可以定义为In[64][13][13]。可选的,port可以表示block运算的输入输出数据块的大小,通常也可以表示运算时所需的存储资源。可选的,block的定义中还需要包含神经元连接关系的定义connect和神经元之间的运算compute。可选的,connect可以表示port张量之间元素的连接方式,每条连接可以包含这些张量中的一部分元素作为输入,另一部分元素作为输出,作为compute中定义的运算的操作数和结果。可选的,connect中的每一条边,都可以执行compute中的运算,这些运算组合起来构成了block的执行过程。可选的,connect可以表示block在运行时的访存行为,对于一个block来讲,connect定义后不可以改变。可选的,compute可以为connect上所应用的一个或多个函数,可以是标量函数,也可以是规约、内积等向量操作。可选的,基本的compute可以为权值与神经元的乘加操作,而最大值、平均值、sigmoid函数等也可以广泛的出现在神经网络中。
进一步地,NNL可以允许在block的定义中缺省部分信息,并且根据允许缺省的情形,block可以被分为3种类型,分别为connect block、compute block以及完整给出所有部分积的full block。
其中,connect block是指对于神经网络中常见的神经元与权值进行乘加运算的层(如全连接层、卷积层),其接口和运算方式总是类似的,可以省略部分代码。接口上,这类层总是有两个输入端口(神经元输入和权值输入)和一个输出端口;在给定输入和输出神经元的规模,以及它们之间的连接关系后,权值规模可以被推断出来,因此,程序中可以仅声明其中的神经元端口而省略权值端口。在运算方面,执行乘加操作的数据可以完全由神经元连接关系决定的,在这类block的定义中compute部分可以被完全省略。可选的,computeblock中省略了端口声明,默认只有规模相同的一个输入和输出层,而且具体的规模需要在实际的网络中根据所连接的前驱层的大小推断得到。
(3)上述connect的定义可以采用关键字connect作为标志,可以用多个loop所包围的edge来表示。实际上,connect可以为edge的一个集合,每条edge可以代表连接两个或多个神经元的一条边,在运算时可以执行一次compute。可选的,edge给出的输入和输出张量中的下标位置所对应的两个张量元素可以为compute中的输入和输出。可选的,NNL中的loop语句可以简化连续多个edge的定义,loop的定义方式中var可以为循环变量,start和end分别可以为循环的起始和终止值,step可以为循环的步长,edge中的下标可以由中的循环变量算出。
(4)上述compute部分定义的运算过程可以分为三部分,分别表示所定义的神经网络层在不同执行阶段的运算。可选的,init部分可以表示初始化时的运算,在神经网络的训练或推理过程之前执行,可以用于定义参数的初始化或预训练等。可选的,init部分在compute中不是必须的,如果没有这类运算可以缺省。其中,forward和backward部分分别可以表示正向和反向运算,在一个人工神经网络中都是不可或缺的部分。可选的,compute中的运算表达式,可以包含各类算术和逻辑运算,以及常用的数学函数。另外,在NNL中,compute可以支持尽可能多的运算以便表示各种神经网络中所需的操作。
(5)上述graph的定义可以由两种语句组成inst和topo,inst可以为对已定义的template的实例化语句,它的语法只是将template名和参数赋值给实例化对象的名字,topo可以为表示实例化对象连接的语句,用“->”作为连接的标识,标识左边的值可以表示这条边的起点,右边的值可以表示这条边的终点。当所有的inst的所有端口都相互连接,并且除了连接到template的输入输出端口外内部没有空闲的连接式,这个topo表示的就是一个完整的template。其中,graph实际上表示的是一个图结构,图的节点都是对template的实例化对象inst,对应于神经网络中的层,而图的边用inst之间的连接关系topo表示。可选的,graph所表示的程序代码的执行过程实际上可以是一个图的遍历过程。可选的,对于NNL中的定义,一个重要的要求是这个图必须是有向无环图。
(6)以常见的参数层为例,一个参数层可以包含输入神经元、输出神经元和输入权值三个端口,相应的需要三条topo语句可以表示它和其它inst之间的拓扑关系。其中,一个参数层的完整topo连接可以通过三行程序代码表示,第一行可以表示前一层的输出连接到参数层的输入神经元端口,第二行可以表示某个权值的输出连接到参数层的权值输入端口,第三行可以表示该参数层的输出神经元连接到下一层的输入。
进一步地,所述对所述编码信息进行解析处理,得到初始计算图对应的计算图结构的步骤,具体可以包括:获取所述编码信息中的语法以及语义,并根据编码信息的所述语法以及所述语义,得到初始计算图对应的所述计算图结构。
可以理解的是,神经网络编译器可以获取编码信息中每一条描述计算机图的程序语句的语法和语义,并根据这些程序语句的语法和语义构建初始计算图对应的标准计算图结构。
本实施例提供的神经网络编译方法,神经网络编译器可以根据计算机编程语言的语言特性,从工程文件中提取编码信息,进而获取编码信息中的语法以及语义,并根据编码信息的语法以及语义,得到初始计算图对应的计算图结构,已根据计算图结构得到初始计算图,并对初始计算图进行一系列处理得到不同运算平台能够运行的计算机可执行文件;该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,获得优质高效的代码,提高在计算平台上的执行效率,使得计算机能效降低,以及计算机的能效比提升。
作为其中一个实施例,上述S103中对所述初始计算图进行扩展处理,得到中间计算图的步骤,具体可以包括以下方式:对所述初始计算图中的嵌套结构进行逐层分析处理,获取所述初始计算图中的隐含语义;根据所述隐含语义对所述初始计算图进行扩展处理,得到中间计算图。
具体的,初始计算图可以为基本的block嵌套连接而成的计算图。在本实施例中,由于NNL中一些语法的特性存在部分block中端口规模的省略,在对NNL进行编译时需要根据上下文对block中连接的数量进行推断。可选的,对于block中缺省连接规模的推断,其上下文包括两部分内容,分别为block内部的信息以及block之间连接的关系。其中,在connect block的定义中,权值的输入端口被省略;在compute block中,输入输出端口都被省略;在编译的过程中,这些部分积都可以通过内部的连接关系推断出来。另外,在topo的定义中,相连的两个节点端口,由于语义上连接关系是通过端口传输数据,其规模必须完全相同。
需要说明的是,神经网络编译器可以先对初始计算图中的嵌套结构进行逐层分析处理,获取初始计算图中的隐含语义,并根据隐含语义对初始计算图进行节点推断处理,得到中间计算图。可选的,中间计算图可以理解为神经网络领域一种展开计算图。可选的,中间计算图中已将所有的NNL的高级语法分解到基本的执行单元block中,并且根据中间计算图可以直接进行代码获取并且将其作为子函数调用和资源分配的依据。可选的,上述过程获取的中间计算图,主要可以表示神经网络正向的运算流程。
另外,对于神经网络训练任务中,还需要对block执行反向运算,NNL程序中并不会给出其网络结构,而是在程序的语义中隐含。可选的,对于任意一个block的定义,都可以包含相应的反向运算,并且拓扑结构中任意一条连接,均可以同时代表一条反向的连接,这个反向连接的方向与正向连接相反,端口则为正向连接的镜像端口(在正向端口前加Delta关键字表示)。可选的,神经网络编译器可以在定义的所有正向连接的基础上,自动对反向连接进行补全。此外,神经网络编译器可以对时序相关的连接在时间维度上进行展开。
本实施例提供的神经网络编译方法,神经网络编译器可以对初始计算图中的嵌套结构进行逐层分析处理,获取初始计算图中的隐含语义,根据隐含语义对初始计算图进行扩展处理,得到中间计算图,进而对中间计算图进行优化处理得到执行计算图,根据执行计算图得到计算机可执行文件;该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,得到优质高效的代码,提高在计算平台上的执行效率,使得计算机能效降低,以及计算机的能效比提升;同时,该方法还可以通过神经网络编译器对计算机编程语言进行编译,从而提高计算机编程语言的可用性。
作为其中一个实施例,上述S104中对所述中间计算图进行优化处理,得到执行计算图的步骤,具体可以包括:根据任务调度需求和资源分配需求,对所述中间计算图进行合并处理或者拆分处理,得到所述执行计算图。
具体的,神经网络编译器可以根据中间计算图的结构特点对中间计算图进行优化处理。需要说明的是,针对不同的运算平台,神经网络编译器可以根据资源分配以及任务调度的需求对中间计算图进行优化处理,实际上是通过对中间计算图中多个block进行合并处理或者对较大的block进行拆分处理,得到不同目标运算平台上性能最大化的执行计算图结构,也就是执行计算图。
在本实施例中,神经网络编译器可以根据计算平台的不同对中间计算图进行一定的等价变换,优化中间计算图的block结构,以提高计算平台上的执行效率。可选的,对于中间计算图的优化方式可以有多种,分别包括block融合、常量预处理和block拆分。其中,block融合可以表征为对多个较小的block进行合并处理;常量预处理可以表征为对结果可知的block,并且在编译时静态计算其结果;block拆分可以表征为对需要大量计算和存储资源的block,将其拆分为若干个较小的block。
本实施例提供的神经网络编译方法,神经网络编译器可以对中间计算图进行优化处理得到执行计算图,进而根据执行计算图得到计算机可执行文件;该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,得到优质高效的代码,提高在计算平台上的执行效率,使得计算机能效降低,以及计算机的能效比提升;同时,该方法还可以通过神经网络编译器对计算机编程语言进行编译,从而提高计算机编程语言的可用性。
图2为另一实施例提供的一种神经网络编译方法的具体流程示意图,在图1实施的神经网络编译方法的基础上,如图2所示,上述S105中根据所述执行计算图,得到计算机可执行文件的步骤,具体可以包括:
S1051、根据所述执行计算图得到核函数。
具体的,执行计算图中的每一个block均可以有对应的核函数,该核函数的形态可以根据代码获得的目标运算平台确定。在中央处理器上,得到代表block运算的C++代码,可以包含forward()和backword()两个函数,forward()表示神经网络算法中正向运算过程,backword()表示神经网络算法中反向运算过程;在图形处理器上获取与类似的通用并行计算平台C的函数代码,函数中调用通用并行计算平台的内部函数进行数据拷贝,并可以由中央处理器执行一些标量或预处理的运算,对于可以实现并行的运算,调用图形处理库或者得到的global函数在图形处理器上进行运算。
需要说明的是,执行计算图中产生的节点均可以为block,这些节点可以作为获取的目标代码中调用执行的基本单元。可选的,核函数获取的过程可以理解为对block本身进行编译的过程,在block内部,分为connect部分和compute部分。
可以理解的是,对于执行计算图中的每一个block,神经网络编译器可以对部分根据其中的循环特性进行模式匹配,若匹配成功,则提取其中的参数并调用内部的模板来实现以下两方面:
(1)若匹配到已知的神经网络层的拓扑结构,并且block本身是connect block类型,则将整个block编译为相应平台上的神经网络的库函数实现;
(2)若匹配到标准的向量或矩阵运算函数,例如矩阵乘或者向量的对位运算,则将block编译成BLAS库函数的调用的组合。
若匹配不成功,则根据block的定义生成目标代码。
S1052、根据所述执行计算图的拓扑结构,确定对所述核函数的调度过程,得到所述计算机可执行文件。
具体的,在获取到执行计算图中所有节点对应的核函数后,神经网络编译器可以根据执行计算图的拓扑结构得到计算机可执行文件,从而实现最终的执行过程,该过程可以包括根据执行计算图中的连接关系建立执行的偏序,以及根据偏序和每个节点执行的代价模型得到最终的计算过程。另外,若神经网络中包含了时序,那么需要将整个执行过程编译为一个在时间维度上的循环,执行计算图中的三个部分分别被作为循环的预处理、循环体和循环推出后的操作。
本实施例提供的神经网络编译方法,该方法可以充分结合计算机编程语言的特性,并根据目标计算平台的不同对初始计算图进行等价替换,优化中间计算图的结构,得到优质高效的代码,提高在计算平台上的执行效率,使得计算机能效降低,以及计算机的能效比提升;同时,该方法还可以通过神经网络编译器对计算机编程语言进行编译,从而提高计算机编程语言的可用性。
应该理解的是,虽然图1-2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
关于神经网络编译器的具体限定可以参见上文中对于费用获取方法的限定,在此不再赘述。上述终端的神经网络编译器中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图3为一实施例提供的神经网络编译器的结构示意图。如图3所示,该神经网络编译器可以包括:获取编码信息模块11、获取初始计算图模块12、扩展模块13、优化模块14以及获取可执行文件模块15。
其中,所述获取编码信息模块11,用于获取工程文件对应的编码信息;
所述获取初始计算图模块12,用于根据所述编码信息,得到初始计算图;
所述扩展模块13,用于对所述初始计算图进行扩展处理,得到中间计算图;
所述优化模块14,用于对所述中间计算图进行优化处理,得到执行计算图;
所述获取可执行文件模块15,用于根据所述执行计算图,得到计算机可执行文件。
本实施例提供的神经网络编译器,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,获取编码信息模块11具体用于根据计算机编程语言的语言特性,从所述工程文件中提取所述编码信息,所述计算机编程语言包括神经网络专用编程语言,所述语言特征包括所述计算机编程语言的语法和语义。
可选的,所述计算机编程语言包括time声明、template的定义以及graph,其中,所述graph包括多个template的实例连接构成。
本实施例提供的神经网络编译器,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,所述获取初始计算图模块12具体用于对所述编码信息进行解析处理,得到初始计算图对应的计算图结构,并根据所述计算图结构,得到初始计算图。
可选的,所述对所述编码信息进行解析处理,得到初始计算图对应的计算图结构,包括:获取所述编码信息中的语法以及语义,并根据编码信息的所述语法以及所述语义,得到初始计算图对应的所述计算图结构。
本实施例提供的神经网络编译器,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,所述扩展模块13对所述初始计算图中的嵌套结构进行逐层分析处理,获取所述初始计算图中的隐含语义,并根据所述隐含语义对所述初始计算图进行扩展处理,得到中间计算图。
本实施例提供的神经网络编译器,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,所述优化模块14具体用于根据任务调度需求和资源分配需求,对所述中间计算图进行合并处理或者拆分处理,得到所述执行计算图。
本实施例提供的神经网络编译器,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,所述获取可执行文件模块15具体用于根据所述执行计算图得到核函数,并根据所述执行计算图的拓扑结构,确定对所述核函数的调度过程,得到所述计算机可执行文件。
本实施例提供的神经网络编译器,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种驾驶辅助系统的控制方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取工程文件对应的编码信息;
根据所述编码信息,得到初始计算图;
对所述初始计算图进行扩展处理,得到中间计算图;
对所述中间计算图进行优化处理,得到执行计算图;
根据所述执行计算图,得到计算机可执行文件。
在一个实施例中,提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取工程文件对应的编码信息;
根据所述编码信息,得到初始计算图;
对所述初始计算图进行扩展处理,得到中间计算图;
对所述中间计算图进行优化处理,得到执行计算图;
根据所述执行计算图,得到计算机可执行文件。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的神经网络编译器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神经网络编译器时,神经网络编译器间可以通过特定的结构进行链接并传输数据,譬如,通过快速外部设备互连总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过快速外部设备互连接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图5为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图6所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图7所示,图7提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接收装置与所述芯片封装结构内的芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准快速外部设备互连接口。比如,待处理的数据由服务器通过标准快速外部设备互连接口传递至所述芯片,实现数据转移。优选的,当采用快速外部设备互连3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种神经网络编译方法,其特征在于,所述方法包括:
获取工程文件对应的编码信息;
根据所述编码信息,得到初始计算图;
对所述初始计算图进行扩展处理,得到中间计算图;
对所述中间计算图进行优化处理,得到执行计算图;
根据所述执行计算图,得到计算机可执行文件。
2.根据权利要求1所述的方法,其特征在于,所述获取工程文件对应的编码信息,包括:根据计算机编程语言的语言特性,从所述工程文件中提取所述编码信息,所述计算机编程语言包括神经网络专用编程语言,所述语言特征包括所述计算机编程语言的语法和语义。
3.根据权利要求1所述的方法,其特征在于,所述计算机编程语言包括time声明、template的定义以及graph,其中,所述graph包括多个template的实例连接构成。
4.根据权利要求1所述的方法,其特征在于,所述根据所述编码信息,得到初始计算图,包括:
对所述编码信息进行解析处理,得到初始计算图对应的计算图结构;
根据所述计算图结构,得到初始计算图。
5.根据权利要求4所述的方法,其特征在于,所述对所述编码信息进行解析处理,得到初始计算图对应的计算图结构,包括:获取所述编码信息中的语法以及语义,并根据编码信息的所述语法以及所述语义,得到初始计算图对应的所述计算图结构。
6.根据权利要求1所述的方法,其特征在于,所述对所述初始计算图进行扩展处理,得到中间计算图,包括:
对所述初始计算图中的嵌套结构进行逐层分析处理,获取所述初始计算图中的隐含语义;
根据所述隐含语义对所述初始计算图进行扩展处理,得到中间计算图。
7.根据权利要求1所述的方法,其特征在于,所述对所述中间计算图进行优化处理,得到执行计算图,包括:根据任务调度需求和资源分配需求,对所述中间计算图进行合并处理或者拆分处理,得到所述执行计算图。
8.根据权利要求1所述的方法,其特征在于,所述根据所述执行计算图,得到计算机可执行文件,包括:
根据所述执行计算图得到核函数;
根据所述执行计算图的拓扑结构,确定对所述核函数的调度过程,得到所述计算机可执行文件。
9.一种神经网络编译器,其特征在于,所述神经网络编译器包括:
获取编码信息模块,用于获取工程文件对应的编码信息;
获取初始计算图模块,用于根据所述编码信息,得到初始计算图;
扩展模块,用于对所述初始计算图进行扩展处理,得到中间计算图;
优化模块,用于对所述中间计算图进行优化处理,得到执行计算图;
获取可执行文件模块,用于根据所述执行计算图,得到计算机可执行文件。
10.一种计算机设备,包括存储器、处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
11.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。
12.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求9所述的神经网络编译器,用于从其它处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述神经网络编译器时,所述多个所述神经网络编译器间可以通过特定的结构进行连接并传输数据;
其中,多个所述神经网络编译器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述神经网络编译器共享同一控制系统或拥有各自的控制系统;多个所述神经网络编译器共享内存或者拥有各自的内存;多个所述神经网络编译器的互联方式是任意互联拓扑。
13.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求12所述的机器学习运算装置,通用互联接口和其它处理装置;
所述机器学习运算装置与所述其它处理装置进行交互,共同完成用户指定的计算操作;
优先地,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。
14.一种神经网络芯片,其特征在于,所述机器学习芯片包括如权利要求12所述的机器学习运算装置或如权利要求13所述的组合处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945723.1A CN110717584A (zh) | 2019-09-30 | 2019-09-30 | 神经网络编译方法、编译器、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945723.1A CN110717584A (zh) | 2019-09-30 | 2019-09-30 | 神经网络编译方法、编译器、计算机设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110717584A true CN110717584A (zh) | 2020-01-21 |
Family
ID=69212157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910945723.1A Pending CN110717584A (zh) | 2019-09-30 | 2019-09-30 | 神经网络编译方法、编译器、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110717584A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580826A (zh) * | 2020-04-30 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN111860816A (zh) * | 2020-07-08 | 2020-10-30 | Oppo广东移动通信有限公司 | 神经网络模型的编译方法、装置、设备及存储介质 |
CN111953614A (zh) * | 2020-08-07 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、处理设备及介质 |
CN112099848A (zh) * | 2020-09-11 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
WO2022041015A1 (zh) * | 2020-08-26 | 2022-03-03 | 华为技术有限公司 | 神经网络模型优化方法及装置 |
WO2022095413A1 (zh) * | 2020-11-05 | 2022-05-12 | 上海交通大学 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
CN116710930A (zh) * | 2020-12-31 | 2023-09-05 | 北京希姆计算科技有限公司 | 执行程序的编译方法、芯片、电子设备及计算机可读存储介质 |
US11803360B2 (en) | 2020-11-03 | 2023-10-31 | Tsinghua University | Compilation method, apparatus, computing device and medium |
-
2019
- 2019-09-30 CN CN201910945723.1A patent/CN110717584A/zh active Pending
Non-Patent Citations (1)
Title |
---|
王秉睿: "神经网络专用编程语言", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580826A (zh) * | 2020-04-30 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN111580826B (zh) * | 2020-04-30 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN111860816A (zh) * | 2020-07-08 | 2020-10-30 | Oppo广东移动通信有限公司 | 神经网络模型的编译方法、装置、设备及存储介质 |
CN111953614A (zh) * | 2020-08-07 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、处理设备及介质 |
CN111953614B (zh) * | 2020-08-07 | 2023-10-24 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、处理设备及介质 |
WO2022041015A1 (zh) * | 2020-08-26 | 2022-03-03 | 华为技术有限公司 | 神经网络模型优化方法及装置 |
CN112099848A (zh) * | 2020-09-11 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
CN112099848B (zh) * | 2020-09-11 | 2024-03-05 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
US11803360B2 (en) | 2020-11-03 | 2023-10-31 | Tsinghua University | Compilation method, apparatus, computing device and medium |
WO2022095413A1 (zh) * | 2020-11-05 | 2022-05-12 | 上海交通大学 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
CN116710930A (zh) * | 2020-12-31 | 2023-09-05 | 北京希姆计算科技有限公司 | 执行程序的编译方法、芯片、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110717584A (zh) | 神经网络编译方法、编译器、计算机设备及可读存储介质 | |
US11442785B2 (en) | Computation method and product thereof | |
US20220012575A1 (en) | Methods and apparatus for localized processing within multicore neural networks | |
US20200042856A1 (en) | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit | |
EP3614259A1 (en) | Processing apparatus and processing method | |
CN112292667B (zh) | 选择处理器的方法和装置 | |
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
US20220004858A1 (en) | Method for processing artificial neural network, and electronic device therefor | |
CN114556260B (zh) | 用于执行神经网络的装置和系统 | |
CN109753319B (zh) | 一种释放动态链接库的装置及相关产品 | |
CN112099848B (zh) | 一种业务处理方法、装置及设备 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN111831582B (zh) | 用于智能处理器的内存管理装置、方法及电子设备 | |
CN116011562A (zh) | 算子处理方法及算子处理装置、电子设备和可读存储介质 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN110825380A (zh) | 核函数的生成方法、目标代码的生成方法和组合处理装置 | |
CN113031954A (zh) | 代码编译方法、装置、电子设备、存储介质及异构系统 | |
CN112051981B (zh) | 一种数据流水线计算路径结构及单线程数据流水线系统 | |
CN111667060B (zh) | 深度学习算法的编译方法、装置及相关产品 | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
CN110704040A (zh) | 信息处理方法、装置、计算机设备及可读存储介质 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN116402091A (zh) | 面向人工智能芯片的混合引擎智能计算方法和装置 | |
CN116090519A (zh) | 卷积算子的编译方法及相关产品 | |
CN111831333B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200121 |