CN115268936A - 一种用于计算图编译的优化方法及装置 - Google Patents
一种用于计算图编译的优化方法及装置 Download PDFInfo
- Publication number
- CN115268936A CN115268936A CN202211177796.9A CN202211177796A CN115268936A CN 115268936 A CN115268936 A CN 115268936A CN 202211177796 A CN202211177796 A CN 202211177796A CN 115268936 A CN115268936 A CN 115268936A
- Authority
- CN
- China
- Prior art keywords
- nodes
- node
- stack
- tensor
- graph
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000005457 optimization Methods 0.000 title claims abstract description 36
- 238000004364 calculation method Methods 0.000 title claims description 15
- 238000003860 storage Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 8
- 230000014509 gene expression Effects 0.000 claims description 7
- 238000004519 manufacturing process Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 18
- 101100425816 Dictyostelium discoideum top2mt gene Proteins 0.000 description 12
- 101150082896 topA gene Proteins 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
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
- 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
-
- 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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/08—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
-
- 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
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种用于计算图编译的优化方法及装置,包括以下步骤:步骤S1:将计算图转换为中间表示;步骤S2:分析依赖关系;步骤S3:构建工作栈;步骤S4:初始化为未激活状态;步骤S5:弹出栈顶节点元素,并更新当前轮迭代输入节点集合;步骤S6:将依赖所述步骤S5的栈顶节点的元素依次添加到栈顶位置,直到工作栈清空为止;步骤S7:采用位向量实现达到不动点状态的中间表示;步骤S8:为达到不动点状态的中间表示的节点包含的有效张量变量分配寄存器。本发明提供了一种解析所述中间表示节点动态地执行至不动点状态的方法,并且优化了为所述中间表示不动点状态下各节点所包含的张量变量分配空闲寄存器的实现方法,提升计算图在运行时的执行效率。
Description
技术领域
本发明涉及一种基于特定计算模型的计算机系统技术领域,尤其涉及一种用于计算图编译的优化方法及装置。
背景技术
随着近几年神经网络模型的落地,面向神经网络编译的技术变得越来越重要。已有的计算图编译技术仍未从全局角度分析计算图执行过程中节点之间的约束关系以及基于约束关系分析计算图节点在执行过程中不同状态下所包含的张量变量的生命周期的动态变化情况。
为此,本发明提出了将计算图执行过程中节点状态的动态变化过程抽象为基于约束的集合表示方法,提供了一种基于包含有效张量变量的节点集合的中间表示技术。
发明内容
本发明为了解决上述技术问题,在于提供一种用于计算图编译的优化方法及装置。
本发明采用的技术方案如下:
一种用于计算图编译的优化方法,包括以下步骤:
步骤S1:将计算图转换为基于包含有效张量变量的节点集合的中间表示;
步骤S2:分析所述计算图中节点之间的依赖关系;
步骤S3:构建保存待处理节点的工作栈;
步骤S4:初始化所述工作栈中包含的节点元素为未激活状态;
步骤S5:所述工作栈弹出栈顶节点元素,利用所述步骤S2的依赖关系推导栈顶节点元素的输入节点集合,并更新当前轮迭代所得的栈顶节点元素的输入节点集合;
步骤S6:将依赖所述步骤S5的栈顶节点的元素依次添加到栈顶位置,并更新当前工作栈,重复所述步骤S5,直到工作栈清空为止;
步骤S7:采用位向量实现达到不动点状态的中间表示;
步骤S8:为达到不动点状态的中间表示的节点包含的有效张量变量分配寄存器。
进一步地,所述步骤S1具体包括以下子步骤:
步骤S11:将包含有效张量变量的计算图的节点表示为:由张量变量的定义和使用张量变量的表达式组成的等式;
步骤S12:定义所述计算图的节点关于包含有效张量变量节点的输入节点集合,所述输入节点集合为所述计算图的节点的所有前驱节点的并集;
步骤S13:定义所述计算图的节点关于包含有效张量变量节点的输出节点集合,所述输出节点集合为所述输入节点集合移除重定义有效张量变量的节点集合,然后再与有效张量变量的节点位置包含有效张量变量的节点集合取并集;
步骤S14:获取中间表示的包含有效张量变量节点的集合需要迭代地推导每个节点包含有效张量变量的节点,直至所有节点的所述输入节点集合和所述输出节点集合不再变化,达到固定节点,将达到固定节点的集合定义为所述基于包含有效张量变量的节点集合的中间表示。
进一步地,所述步骤S2具体为:分析推导所述计算图的各节点之间的输入节点集合之间的关系。
进一步地,所述步骤S3具体为:按照拓扑顺序遍历所述计算图,依次将所述计算图中的节点压入工作栈中。
进一步地,所述步骤S4具体为:将还未开始执行的所述计算图的各个节点初始化为未激活状态。
进一步地,所述步骤S5具体包括以下子步骤:
步骤S51:工作栈弹出栈顶节点元素,即将工作栈的栈顶节点元素弹出栈;
步骤S52:利用所述步骤S2的依赖关系将被弹出所述栈顶节点元素的输入节点集合添加到所述工作栈并更新当前轮迭代所得的栈顶节点元素的输入节点集合。
进一步地,所述步骤S7具体为:将所述计算图的中间表示中各个节点的输入节点集合达到不动点状态时所包含的节点元素映射为1,其他节点元素映射为0。
进一步地,所述步骤S8具体为:将为步骤7中输入节点集合达到不动点状态时所包含的节点元素映射为1的节点所包含的张量变量分配空闲寄存器。
本发明还提供一种用于计算图编译的优化装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中任一项所述的一种用于计算图编译的优化方法。
本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中任一项所述的一种用于计算图编译的优化方法。
本发明的有益效果是:本发明公开了一种用于计算图编译的优化方法及装置,所述的一种用于计算图编译的优化方法。本发明提出了一种将计算图转换为基于包含有效变量节点集合的中间表示,提供了一种解析所述中间表示节点动态地执行至不动点状态的方法,并且优化了为所述中间表示不动点状态下各节点所包含的张量变量分配空闲寄存器的实现方法。本发明提出的用于计算图编译的优化方法既提升了计算图在运行时的执行效率。研究人员和工程应用者开发算法模型的过程中,利用所述的一种用于计算图编译的优化方法及装置优化模型,优化了计算图的编译效率,推动了深所述关系图中度神经网络模型落地应用的发展。
附图说明
图1为本发明一种用于计算图编译的优化方法的架构图;
图2为本发明实施例神经网络编译生成的计算图;
图3为本发明实施例基于集合的中间表示的定义;
图4为本发明实施例第一轮迭代推导所述中间表示的包含有效变量节点集合;
图5为本发明实施例第二轮迭代推导所述中间表示的包含有效变量节点集合;
图6为本发明实施例计算图的各个节点输入集合之间的约束关系图;
图7为本发明一种用于计算图编译的优化装置的结构示意图。
具体实施方式
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,一种用于计算图编译的优化方法,包括以下步骤:
步骤S1:将计算图转换为基于包含有效张量变量的节点集合的中间表示;
步骤S11:将包含有效张量变量的计算图的节点表示为:由张量变量的定义和使用张量变量的表达式组成的等式;
步骤S12:定义所述计算图的节点关于包含有效张量变量节点的输入节点集合,所述输入节点集合为所述计算图的节点的所有前驱节点的并集;
步骤S13:定义所述计算图的节点关于包含有效张量变量节点的输出节点集合,所述输出节点集合为所述输入节点集合移除重定义有效张量变量的节点集合,然后再与有效张量变量的节点位置包含有效张量变量的节点集合取并集;
步骤S14:获取中间表示的包含有效张量变量节点的集合需要迭代地推导每个节点包含有效张量变量的节点,直至所有节点的所述输入节点集合和所述输出节点集合不再变化,达到固定节点,将达到固定节点的集合定义为所述基于包含有效张量变量的节点集合的中间表示。
步骤S2:分析所述计算图中节点之间的依赖关系;
分析推导所述计算图的各节点之间的输入节点集合之间的关系。
步骤S3:构建保存待处理节点的工作栈;
按照拓扑顺序遍历所述计算图,依次将所述计算图中的节点压入工作栈中。
步骤S4:初始化所述工作栈中包含的节点元素为未激活状态;
将还未开始执行的所述计算图的各个节点初始化为未激活状态。
步骤S5:所述工作栈弹出栈顶节点元素,利用所述步骤S2的依赖关系推导栈顶节点元素的输入节点集合,并更新当前轮迭代所得的栈顶节点元素的输入节点集合;
步骤S51:工作栈弹出栈顶节点元素,即将工作栈的栈顶节点元素弹出栈;
步骤S52:利用所述步骤S2的依赖关系将被弹出所述栈顶节点元素的输入节点集合添加到所述工作栈并更新当前轮迭代所得的栈顶节点元素的输入节点集合。
步骤S6:将依赖所述步骤S5的栈顶节点的元素依次添加到栈顶位置,并更新当前工作栈,重复所述步骤S5,直到工作栈清空为止;
步骤S7:采用位向量实现达到不动点状态的中间表示;
将所述计算图的中间表示中各个节点的输入节点集合达到不动点状态时所包含的节点元素映射为1,其他节点元素映射为0。
步骤S8:为达到不动点状态的中间表示的节点包含的有效张量变量分配寄存器;
将为步骤7中输入节点集合达到不动点状态时所包含的节点元素映射为1的节点所包含的张量变量分配空闲寄存器。
实施例:
一种用于计算图编译的优化方法,包括以下步骤:
参见图2,展示了神经网络编译生成的计算图,步骤S1:将计算图转换为基于包含有效张量变量的节点集合的中间表示;
步骤S11:将包含有效张量变量的计算图的节点表示为:由张量变量的定义和使用张量变量的表达式组成的等式;
参见图3,展示了包含有效变量的节点集合的中间表示的定义过程。将包含有效张量变量v的计算图的节点V表示为:由张量变量v的定义和使用张量变量v的表达式E组成的等式。
步骤S12:定义所述计算图的节点关于包含有效张量变量节点的输入节点集合,所述输入节点集合为所述计算图的节点的所有前驱节点的并集;
所述关于包含有效张量变量v的节点的输入节点集合定义为节点V的所有前驱节点Vpred 的并集。
步骤S13:定义所述计算图的节点关于包含有效张量变量节点的输出节点集合,所述输出节点集合为所述输入节点集合移除重定义有效张量变量v的节点集合,然后再与有效张量变量的节点位置包含有效张量变量的节点集合取并集;
其中所述包含定义有效张量变量v的节点集合表示为:{(节点V,变量v)}。其中包含重定义有效张量变量v的节点集合表示为:{重定义(变量v)},其中所述中间表示的包含有效张量变量v的节点的集合元素是包含节点和有效张量变量的二维信息,如V(有效变量v),其中包含了节点信息V和节点所包含的有效张量变量v的信息。
步骤S14:获取中间表示的包含有效张量变量节点的集合需要迭代地推导每个节点包含有效张量变量的节点,直至所有节点的所述输入节点集合和所述输出节点集合不再变化,达到固定节点,将达到固定节点的集合定义为所述基于包含有效张量变量的节点集合的中间表示。
获取所述中间表示的包含有效变量的节点的集合需要迭代地推导每个节点包含有效张量变量的节点,直至所有节点的所述输入节点集合和所述输出节点集合不再变化为止,也就是说直至所有集合所包含节点元素达到不动点为止。所述迭代过程如下:
参见图4,展示了第一轮迭代推导所述中间表示的包含有效变量的节点集合的过程。
第一轮迭代,所述各节点的输入节点集合和输出节点集合的变化如下:
(1)关于V0节点的集合表示:
(2)关于V1节点的集合表示:
(3)关于V2节点的集合表示:
(4)关于V3节点的集合表示:
(5)关于V4节点的集合表示:
5.2关于V4节点包含张量变量的输出节点集合:由于V4节点重新定义了张量变量x,所以 V4节点的输出节点集合为V4节点的输入节点集合移除包含张量变量x的V0节点,然后再取与包含张量变量x定义的V4节点集合的并集,表示为:。
(6)关于V5节点的集合表示:
(7)关于V6节点的集合表示:
(8)关于V7节点的集合表示:
8.2关于V7节点包含张量变量的输出节点集合:由于V7节点重新定义了张量变量x,所以V7节点的输出节点集合为V7节点的输入节点集合移除包含张量变量x的V0节点和V4节点,然后再取与包含张量变量x定义的V7节点集合的并集,表示为:。
(9)关于V8节点的集合表示:
9.2关于V8节点包含张量变量的输出集合:由于V8节点重新定义了张量变量z,所以V8节点的输出节点集合为V8节点的输入节点集合移除包含张量变量z的V5节点,然后再取与包含张量变量z定义的V8节点集合的并集,表示为:。
(10)关于V9节点的集合表示:
参见图5,展示了第二轮迭代推导所述中间表示的包含有效张量变量的节点集合的过程。
第二轮迭代,所述各节点的输入节点集合和输出节点集合的变化如下:
(1)关于V0节点的集合表示:
(2)关于V1节点的集合表示:
关于V2节点的集合表示为:
关于V3节点的集合表示为:
关于V4节点的集合表示为:
关于V5节点的集合表示为:
关于V6节点的集合表示为:
关于V7节点的集合表示为:
关于V8节点的集合表示为:
经过上述两轮迭代,所述中间表示的包含有效变量节点集合所包含节点元素不再变化,达到固定节点。将所述达到不动点的集合定义为所述基于包含有效变量节点集合的中间表示。
参见图6,展示了计算图的各个节点的输入节点集合之间的依赖关系图,步骤S2:分析所述计算图中节点之间的依赖关系;
分析推导所述计算图的各节点之间的输入节点集合之间的关系;
因为各节点的输出节点集合可以由输入节点集合表示,所以只需要推导各节点的输入节点集合之间的关系。
所述推导图6所示的计算图的各节点的输入节点集合之间的关系包含如下过程:
步骤S3:构建保存待处理节点的工作栈;
按照拓扑顺序遍历所述计算图,依次将所述计算图中的节点压入工作栈中;
步骤S4:初始化所述工作栈中包含的节点元素为未激活状态;
将还未开始执行的所述计算图的各个节点初始化为未激活状态;
步骤S5:所述工作栈弹出栈顶节点元素,利用所述步骤S2的依赖关系推导栈顶节点元素的输入节点集合,并更新当前轮迭代所得的栈顶节点元素的输入节点集合;
步骤S51:工作栈弹出栈顶节点元素,即将工作栈的栈顶节点元素弹出栈;
步骤S52:利用所述步骤S2的依赖关系将被弹出所述栈顶节点元素的输入节点集合添加到所述工作栈并更新当前轮迭代所得的栈顶节点元素的输入节点集合。
步骤S6:将依赖所述步骤S5的栈顶节点的元素依次添加到栈顶位置,并更新当前工作栈,重复所述步骤S5,直到工作栈清空为止;
步骤步骤S3-步骤S6迭代地推导基于包含有效张量变量节点的不动点集合包含如下过程:
表1
第三步,处理位于工作栈栈顶的元素。所述处理位于工作栈栈顶的元素过程包含如下过程:
第二,将依赖被弹出节点的节点集合添加到工作栈。所述将依赖被弹出节点的节点集合添加到工作栈的过程如下:由于依赖节点的集合包含节点和节点,所以向栈顶添加依赖节点集合。经过上述步骤,工作栈中各个节点的输入节点集合的状态更新为表2所示。
表2
第四,将依赖被弹出节点的节点集合添加到工作栈。所述将依赖被弹出节点的节点集合添加到工作栈的过程如下:由于依赖节点的集合包含节点和节点,所以向栈顶添加依赖节点集合。经过上述步骤,工作栈中各个节点的输入节点集合的状态更新为表3所示。
表3
第六,将依赖被弹出节点的节点集合添加到工作栈。所述将依赖被弹出节点的节点集合添加到工作栈的过程如下:由于依赖节点的集合包含节点,所以向栈顶添加依赖节点集合。经过上述步骤,工作栈中各个节点的输入节点集合的状态更新为表4所示。
表4
表5
表6
表7
表8
表9
表10
表11
表12
第二十四,将依赖被弹出节点的节点集合添加到工作栈。所述将依赖被弹出节点的节点集合添加到工作栈的过程如下:由于节点的集合元素没变,所以没有依赖节点的节点集合被添加到工作栈中。经过上述步骤,工作栈中各个节点的输入节点集合的状态更新为表13所示。
表13
表14
表15
表16
步骤S7:采用位向量实现达到不动点状态的中间表示;
将所述计算图的中间表示中各个节点的输入节点集合达到不动点状态时所包含的节点元素映射为1,其他节点元素映射为0。
参见表17,展示了达到不动点状态的中间表示的位向量表示。
表17
步骤S8:为达到不动点状态的中间表示的节点包含的有效张量变量分配寄存器;
将为步骤7中输入节点集合达到不动点状态时所包含的节点元素映射为1的节点所包含的张量变量分配空闲寄存器。
与前述一种用于计算图编译的优化方法的实施例相对应,本发明还提供了一种用于计算图编译的优化装置的实施例。
参见图7,本发明实施例提供的一种用于计算图编译的优化装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种用于计算图编译的优化方法。
本发明一种用于计算图编译的优化装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本发明一种用于计算图编译的优化装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种用于计算图编译的优化方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(SmartMediaCard,SMC)、SD卡、闪存卡(FlashCard)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种用于计算图编译的优化方法,其特征在于,包括以下步骤:
步骤S1:将计算图转换为基于包含有效张量变量的节点集合的中间表示;
步骤S2:分析所述计算图中节点之间的依赖关系;
步骤S3:构建保存待处理节点的工作栈;
步骤S4:初始化所述工作栈中包含的节点元素为未激活状态;
步骤S5:所述工作栈弹出栈顶节点元素,利用所述步骤S2的依赖关系推导栈顶节点元素的输入节点集合,并更新当前轮迭代所得的栈顶节点元素的输入节点集合;
步骤S6:将依赖所述步骤S5的栈顶节点的元素依次添加到栈顶位置,并更新当前工作栈,重复所述步骤S5,直到工作栈清空为止;
步骤S7:采用位向量实现达到不动点状态的中间表示;
步骤S8:为达到不动点状态的中间表示的节点包含的有效张量变量分配寄存器。
2.如权利要求1所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S1具体包括以下子步骤:
步骤S11:将包含有效张量变量的计算图的节点表示为:由张量变量的定义和使用张量变量的表达式组成的等式;
步骤S12:定义所述计算图的节点关于包含有效张量变量节点的输入节点集合,所述输入节点集合为所述计算图的节点的所有前驱节点的并集;
步骤S13:定义所述计算图的节点关于包含有效张量变量节点的输出节点集合,所述输出节点集合为所述输入节点集合移除重定义有效张量变量的节点集合,然后再与有效张量变量的节点位置包含有效张量变量的节点集合取并集;
步骤S14:获取中间表示的包含有效张量变量节点的集合需要迭代地推导每个节点包含有效张量变量的节点,直至所有节点的所述输入节点集合和所述输出节点集合不再变化,达到固定节点,将达到固定节点的集合定义为所述基于包含有效张量变量的节点集合的中间表示。
3.如权利要求2所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S2具体为:分析推导所述计算图的各节点之间的输入节点集合之间的关系。
4.如权利要求1所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S3具体为:按照拓扑顺序遍历所述计算图,依次将所述计算图中的节点压入工作栈中。
5.如权利要求1所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S4具体为:将还未开始执行的所述计算图的各个节点初始化为未激活状态。
6.如权利要求2所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S5具体包括以下子步骤:
步骤S51:工作栈弹出栈顶节点元素,即将工作栈的栈顶节点元素弹出栈;
步骤S52:利用所述步骤S2的依赖关系将被弹出所述栈顶节点元素的输入节点集合添加到所述工作栈并更新当前轮迭代所得的栈顶节点元素的输入节点集合。
7.如权利要求1所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S7具体为:将所述计算图的中间表示中各个节点的输入节点集合达到不动点状态时所包含的节点元素映射为1,其他节点元素映射为0。
8.如权利要求7所述的一种用于计算图编译的优化方法,其特征在于,所述步骤S8具体为:将为步骤7中输入节点集合达到不动点状态时所包含的节点元素映射为1的节点所包含的张量变量分配空闲寄存器。
9.一种用于计算图编译的优化装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-8中任一项所述的一种用于计算图编译的优化方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-8中任一项所述的一种用于计算图编译的优化方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177796.9A CN115268936B (zh) | 2022-09-27 | 2022-09-27 | 一种用于计算图编译的优化方法及装置 |
PCT/CN2022/124001 WO2023082901A1 (zh) | 2022-09-27 | 2022-10-09 | 一种用于计算图编译的优化方法及装置 |
US17/992,814 US20240127027A1 (en) | 2022-09-27 | 2022-11-22 | Optimization method and apparatus for compiling computation graph |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177796.9A CN115268936B (zh) | 2022-09-27 | 2022-09-27 | 一种用于计算图编译的优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115268936A true CN115268936A (zh) | 2022-11-01 |
CN115268936B CN115268936B (zh) | 2022-12-27 |
Family
ID=83756194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211177796.9A Active CN115268936B (zh) | 2022-09-27 | 2022-09-27 | 一种用于计算图编译的优化方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240127027A1 (zh) |
CN (1) | CN115268936B (zh) |
WO (1) | WO2023082901A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116167461A (zh) * | 2023-04-21 | 2023-05-26 | 之江实验室 | 一种模型训练的方法、装置、存储介质及电子设备 |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659754A (en) * | 1995-03-31 | 1997-08-19 | Sun Microsystems, Inc. | Method and apparatus for an improved optimizing compiler |
WO2009107416A1 (ja) * | 2008-02-27 | 2009-09-03 | 日本電気株式会社 | グラフ構造変化検出装置、グラフ構造変化検出方法およびプログラム |
CN102012833A (zh) * | 2010-11-09 | 2011-04-13 | 北京神舟航天软件技术有限公司 | 基于编译过程中间结果的静态堆栈检测方法 |
US20140059524A1 (en) * | 2012-08-23 | 2014-02-27 | Hojin Kee | Compile Time Execution |
CN110245269A (zh) * | 2019-05-06 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 获取关系网络图中节点的动态嵌入向量的方法和装置 |
US20190303762A1 (en) * | 2018-03-30 | 2019-10-03 | Xilinx, Inc. | Methods of optimization of computational graphs of neural networks |
CN110941494A (zh) * | 2019-12-02 | 2020-03-31 | 哈尔滨工程大学 | 一种面向深度学习的gpu并行计算的数据处理方法 |
CN111338635A (zh) * | 2020-02-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 计算图的图编译方法、装置、设备及存储介质 |
US20200293838A1 (en) * | 2019-03-13 | 2020-09-17 | Deepmind Technologies Limited | Scheduling computation graphs using neural networks |
US20200319861A1 (en) * | 2019-04-02 | 2020-10-08 | Graphcore Limited | Compiling a Program from a Graph |
US20200356598A1 (en) * | 2019-05-06 | 2020-11-12 | Alibaba Group Holding Limited | Obtaining dynamic embedding vectors of nodes in relationship graphs |
CN112465108A (zh) * | 2020-11-11 | 2021-03-09 | 上海交通大学 | 一种面向存算一体平台的神经网络编译方法 |
CN112711422A (zh) * | 2020-12-31 | 2021-04-27 | 北京清微智能科技有限公司 | 一种神经网络编译的优化方法及系统 |
CN113050951A (zh) * | 2021-03-31 | 2021-06-29 | 上海天旦网络科技发展有限公司 | 基于计算图的协议描述和解码方法 |
WO2021184765A1 (zh) * | 2020-03-16 | 2021-09-23 | 平安科技(深圳)有限公司 | 规则处理方法、装置、介质及电子设备 |
WO2021248138A1 (en) * | 2020-06-05 | 2021-12-09 | Google Llc | Learned graph optimizations for compilers |
CN114035916A (zh) * | 2021-11-01 | 2022-02-11 | 寒武纪行歌(南京)科技有限公司 | 计算图的编译、调度方法及相关产品 |
US20220066755A1 (en) * | 2020-09-01 | 2022-03-03 | Ansys, Inc. | Systems using computation graphs for flow solvers |
CN114186687A (zh) * | 2022-02-17 | 2022-03-15 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
WO2022068663A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 内存分配方法、相关设备及计算机可读存储介质 |
WO2022087788A1 (zh) * | 2020-10-26 | 2022-05-05 | 华为技术有限公司 | 一种神经网络编译优化方法和相关装置 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN115034358A (zh) * | 2022-05-17 | 2022-09-09 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5107418A (en) * | 1990-06-11 | 1992-04-21 | Supercomputer Systems Limited Partnership | Method for representing scalar data dependences for an optimizing compiler |
US11151446B2 (en) * | 2015-10-28 | 2021-10-19 | Google Llc | Stream-based accelerator processing of computational graphs |
CN108292374B (zh) * | 2015-11-09 | 2022-04-15 | 谷歌有限责任公司 | 训练表示为计算图的神经网络 |
US10956500B2 (en) * | 2017-01-19 | 2021-03-23 | Google Llc | Dynamic-length stateful tensor array |
WO2019191578A1 (en) * | 2018-03-30 | 2019-10-03 | Wave Computing, Inc. | Data flow graph computation for machine learning |
CN110766147B (zh) * | 2018-07-25 | 2022-10-11 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
GB2580348A (en) * | 2019-01-03 | 2020-07-22 | Graphcore Ltd | Compilation method |
US10963301B2 (en) * | 2019-07-17 | 2021-03-30 | Google Llc | Scheduling operations on a computation graph |
CN112200297B (zh) * | 2020-09-04 | 2024-03-01 | 星宸科技股份有限公司 | 神经网络优化方法、装置及处理器 |
US11494321B1 (en) * | 2021-09-30 | 2022-11-08 | Amazon Technologies, Inc. | State buffer memloc reshaping |
US20230123811A1 (en) * | 2021-10-15 | 2023-04-20 | Nvidia Corporation | Techniques for inferring information |
-
2022
- 2022-09-27 CN CN202211177796.9A patent/CN115268936B/zh active Active
- 2022-10-09 WO PCT/CN2022/124001 patent/WO2023082901A1/zh unknown
- 2022-11-22 US US17/992,814 patent/US20240127027A1/en active Pending
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659754A (en) * | 1995-03-31 | 1997-08-19 | Sun Microsystems, Inc. | Method and apparatus for an improved optimizing compiler |
WO2009107416A1 (ja) * | 2008-02-27 | 2009-09-03 | 日本電気株式会社 | グラフ構造変化検出装置、グラフ構造変化検出方法およびプログラム |
CN102012833A (zh) * | 2010-11-09 | 2011-04-13 | 北京神舟航天软件技术有限公司 | 基于编译过程中间结果的静态堆栈检测方法 |
US20140059524A1 (en) * | 2012-08-23 | 2014-02-27 | Hojin Kee | Compile Time Execution |
US20190303762A1 (en) * | 2018-03-30 | 2019-10-03 | Xilinx, Inc. | Methods of optimization of computational graphs of neural networks |
US20200293838A1 (en) * | 2019-03-13 | 2020-09-17 | Deepmind Technologies Limited | Scheduling computation graphs using neural networks |
US20200319861A1 (en) * | 2019-04-02 | 2020-10-08 | Graphcore Limited | Compiling a Program from a Graph |
US20200356598A1 (en) * | 2019-05-06 | 2020-11-12 | Alibaba Group Holding Limited | Obtaining dynamic embedding vectors of nodes in relationship graphs |
CN110245269A (zh) * | 2019-05-06 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 获取关系网络图中节点的动态嵌入向量的方法和装置 |
CN110941494A (zh) * | 2019-12-02 | 2020-03-31 | 哈尔滨工程大学 | 一种面向深度学习的gpu并行计算的数据处理方法 |
CN111338635A (zh) * | 2020-02-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 计算图的图编译方法、装置、设备及存储介质 |
WO2021184765A1 (zh) * | 2020-03-16 | 2021-09-23 | 平安科技(深圳)有限公司 | 规则处理方法、装置、介质及电子设备 |
WO2021248138A1 (en) * | 2020-06-05 | 2021-12-09 | Google Llc | Learned graph optimizations for compilers |
US20220066755A1 (en) * | 2020-09-01 | 2022-03-03 | Ansys, Inc. | Systems using computation graphs for flow solvers |
WO2022068663A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 内存分配方法、相关设备及计算机可读存储介质 |
WO2022087788A1 (zh) * | 2020-10-26 | 2022-05-05 | 华为技术有限公司 | 一种神经网络编译优化方法和相关装置 |
CN112465108A (zh) * | 2020-11-11 | 2021-03-09 | 上海交通大学 | 一种面向存算一体平台的神经网络编译方法 |
CN112711422A (zh) * | 2020-12-31 | 2021-04-27 | 北京清微智能科技有限公司 | 一种神经网络编译的优化方法及系统 |
CN113050951A (zh) * | 2021-03-31 | 2021-06-29 | 上海天旦网络科技发展有限公司 | 基于计算图的协议描述和解码方法 |
CN114035916A (zh) * | 2021-11-01 | 2022-02-11 | 寒武纪行歌(南京)科技有限公司 | 计算图的编译、调度方法及相关产品 |
CN114186687A (zh) * | 2022-02-17 | 2022-03-15 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN115034358A (zh) * | 2022-05-17 | 2022-09-09 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
Non-Patent Citations (5)
Title |
---|
SHIZHU LIU 等: "Parallelism optimization with variables affinity graph for reconfigurable computing architecture", 《2012 8TH INTERNATIONAL CONFERENCE ON COMPUTING TECHNOLOGY AND INFORMATION MANAGEMENT (NCM AND ICNIT)》 * |
吴林阳 等: "一种运算和数据协同优化的深度学习编译框架", 《高技术通讯》 * |
朱虹等: "基于模式匹配的路径表达式查询优化", 《华中科技大学学报(自然科学版)》 * |
陈亚莎等: "基于参数依赖关系检查的测试用例空间约简方法", 《北京工业大学学报》 * |
陶秋铭等: "一种基于过程图模型的编译优化测试程序自动生成方法", 《计算机研究与发展》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116167461A (zh) * | 2023-04-21 | 2023-05-26 | 之江实验室 | 一种模型训练的方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20240127027A1 (en) | 2024-04-18 |
WO2023082901A1 (zh) | 2023-05-19 |
CN115268936B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645358B2 (en) | Generation of executable files corresponding to neural network models | |
Seinstra et al. | A software architecture for user transparent parallel image processing | |
US20230236888A1 (en) | Memory allocation method, related device, and computer-readable storage medium | |
WO2024021192A1 (zh) | 一种用于神经网络计算的图优化方法和装置 | |
CN115033391B (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
CN115268936B (zh) | 一种用于计算图编译的优化方法及装置 | |
CN114461351A (zh) | 一种用于神经网络计算的动态图执行方法及装置 | |
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
Valencia-Cabrera et al. | Simulation challenges in membrane computing | |
Bosilca et al. | The Template Task Graph (TTG)-an emerging practical dataflow programming paradigm for scientific simulation at extreme scale | |
Clauss et al. | Symbolic polynomial maximization over convex sets and its application to memory requirement estimation | |
Membarth et al. | Towards a performance-portable description of geometric multigrid algorithms using a domain-specific language | |
Manor et al. | Using HW/SW codesign for deep neural network hardware accelerator targeting low-resources embedded processors | |
JP2022127619A (ja) | ハードウェアアクセラレートされた命令の使用 | |
Doroshenko et al. | Automated design of parallel programs for heterogeneous platforms using algebra-algorithmic tools | |
CN115269205B (zh) | 一种面向神经网络计算的内存优化方法和装置 | |
Emeliyanenko | Computing resultants on Graphics Processing Units: Towards GPU-accelerated computer algebra | |
WO2024065866A1 (zh) | 一种用于计算图编译的中间表示方法及装置 | |
Marchal et al. | Minimizing i/os in out-of-core task tree scheduling | |
WO2024065869A1 (zh) | 一种用于图计算的指令执行方法及装置 | |
US12026606B2 (en) | Fractal calculating device and method, integrated circuit and board card | |
US20220261637A1 (en) | Fractal calculating device and method, integrated circuit and board card | |
Moura et al. | Normal basis exhaustive search: 10 years later | |
CN116702855A (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 |