CN115269016A - 一种用于图计算的指令执行方法及装置 - Google Patents
一种用于图计算的指令执行方法及装置 Download PDFInfo
- Publication number
- CN115269016A CN115269016A CN202211177797.3A CN202211177797A CN115269016A CN 115269016 A CN115269016 A CN 115269016A CN 202211177797 A CN202211177797 A CN 202211177797A CN 115269016 A CN115269016 A CN 115269016A
- Authority
- CN
- China
- Prior art keywords
- instruction
- node
- instructions
- parallel
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004364 calculation method Methods 0.000 title claims abstract description 20
- 238000013528 artificial neural network Methods 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000001419 dependent effect Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 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
- 238000002360 preparation method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 108090000765 processed proteins & peptides Proteins 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种用于图计算的指令执行方法及装置,包括以下步骤:步骤S1:将用于神经网络计算的计算图中每个节点的算子下发到算子解释器;步骤S2:算子解释器构建运行时的指令;步骤S3:定义指令依赖关系;步骤S4:构建指令依赖关系图;步骤S5:构建并行指令的拓扑顺序;步骤S6:将并行指令调度到硬件资源上;步骤S7:构建并行指令的最短调度:在硬件资源限制的条件下并行指令执行所需的最短时间;步骤S8:释放已经执行完的指令。本发明从全局角度分析计算图执行过程中节点所包含指令之间的依赖关系以及基于依赖关系推导全局计算图中可并行执行指令的拓扑顺序,提供了将并行指令最快地调度到硬件资源上的方法和装置,优化了计算图的编译效率。
Description
技术领域
本发明涉及一种基于特定计算模型的计算机系统技术领域,尤其涉及一种用于图计算的指令执行方法及装置。
背景技术
随着近几年神经网络模型的落地,面向神经网络编译的技术变得越来越重要。已有的计算图编译技术仍未从全局角度分析计算图执行过程中节点所包含指令之间的依赖关系以及基于依赖关系推导全局计算图中可并行执行指令的拓扑顺序。本发明通过分析计算图执行过程中指令之间的依赖关系,构建并行指令拓扑顺序,提供了将并行指令最快地调度到硬件资源上的方法和装置,提供了一种用于图计算的指令执行方法及装置的编译技术。
发明内容
本发明的目的在于提供一种用于图计算的指令执行方法及装置,解决了如何从全局角度分析计算图执行过程中节点所包含指令之间的依赖关系以及基于依赖关系推导全局计算图中可并行执行指令的拓扑顺序,将并行指令最快地调度到硬件资源上的问题。
本发明采用的技术方案如下:
一种用于图计算的指令执行方法,包括以下步骤:
步骤S1:将用于神经网络计算的计算图中每个节点的算子下发到算子解释器;
步骤S2:算子解释器构建运行时的指令;
步骤S3:定义指令依赖关系;
步骤S4:构建指令依赖关系图;
步骤S5:构建并行指令的拓扑顺序;
步骤S6:将并行指令调度到硬件资源上;
步骤S7:构建并行指令的最短调度:在硬件资源限制的条件下并行指令执行所需的最短时间;
步骤S8:释放已经执行完的指令。
进一步地,所述步骤S3所述指令依赖关系包括写读强依赖关系、读写弱依赖关系和写写弱依赖关系。
进一步地,所述写读强依赖关系为:根据指令操作先写寄存器,后读同一寄存器,且后读同一寄存器的指令操作依赖先写寄存器的指令操作。
进一步地,所述读写弱依赖关系为:根据指令操作先读寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先读寄存器的指令操作。
进一步地,所述写写弱依赖关系为:根据指令操作先写寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先写寄存器的指令操作。
进一步地,所述步骤S4的具体步骤为:根据计算图的拓扑结构依次遍历每个节点,并通过分析每个节点指令与其后继节点指令的依赖关系,构建每个节点的依赖关系边构成指令依赖关系图。
进一步地,所述步骤S5的具体步骤为:根据计算图的拓扑结构依次遍历每个计算节点,同时根据所述指令依赖关系图获得执行流中每一步并行执行指令,得到并行指令的拓扑顺序。
进一步地,所述步骤S6的具体步骤为:根据所述指令依赖关系图的拓扑顺序,将每一步并行执行指令调度到对应的硬件资源上。
本发明还提供一种用于图计算的指令执行装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中任一项所述的一种用于图计算的指令执行方法。
本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中任一项所述的一种用于图计算的指令执行方法。
本发明的有益效果是:本发明从全局角度分析计算图执行过程中节点所包含指令之间的依赖关系以及基于依赖关系推导全局计算图中可并行执行指令的拓扑顺序,提供了将并行指令最快地调度到硬件资源上的方法和装置。通过分析和设计并行计算操作来提高图计算的指令执行效率,并且提供了一种用于图计算的指令执行方法及装置的编译技术。研究人员和工程应用者开发算法模型的过程中,利用所述的一种用于图计算的指令执行方法及装置优化模型,优化了计算图的编译效率,推动了深所述关系图中度神经网络模型落地应用的发展。
附图说明
图1为本发明一种用于图计算的指令执行方法的流程示意图;
图2为实施例用于图计算的指令执行方法的架构图;
图3为实施例用于神经网络计算的计算图;
图4为实施例算子解释器构建运行时的指令;
图5为实施例指令之间的依赖关系;
图6为实施例分析指令依赖关系;
图7为实施例第一步并行执行指令;
图8为实施例第二步并行执行指令;
图9为实施例第三步并行执行指令;
图10为实施例第四步并行执行指令;
图11为实施例第五步并行执行指令;
图12为实施例第六步并行执行指令;
图13为实施例第七步并行执行指令;
图14为实施例第八步并行执行指令;
图15为实施例分析指令并行执行顺序;
图16为实施例最短调度并行指令;
图17为本发明一种用于图计算的指令执行装置的结构示意图。
具体实施方式
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,一种用于图计算的指令执行方法,包括以下步骤:
步骤S1:将用于神经网络计算的计算图中每个节点的算子下发到算子解释器;
步骤S2:算子解释器构建运行时的指令;
步骤S3:定义指令依赖关系;
所述指令依赖关系包括写读强依赖关系、读写弱依赖关系和写写弱依赖关系;
进一步地,所述写读强依赖关系为:根据指令操作先写寄存器,后读同一寄存器,且后读同一寄存器的指令操作依赖先写寄存器的指令操作;
进一步地,所述读写弱依赖关系为:根据指令操作先读寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先读寄存器的指令操作;
进一步地,所述写写弱依赖关系为:根据指令操作先写寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先写寄存器的指令操作。
步骤S4:构建指令依赖关系图;
根据计算图的拓扑结构依次遍历每个节点,并通过分析每个节点指令与其后继节点指令的依赖关系,构建每个节点的依赖关系边构成指令依赖关系图。
步骤S5:构建并行指令的拓扑顺序;
根据计算图的拓扑结构依次遍历每个计算节点,同时根据所述指令依赖关系图获得执行流中每一步并行执行指令,得到并行指令的拓扑顺序。
步骤S6:将并行指令调度到硬件资源上;
根据所述指令依赖关系图的拓扑顺序,将每一步并行执行指令调度到对应的硬件资源上。
步骤S7:构建并行指令的最短调度:在硬件资源限制的条件下并行指令执行所需的最短时间。
步骤S8:释放已经执行完的指令。
实施例:参见图2,展示了用于图计算的指令执行方法的架构图;
一种用于图计算的指令执行方法,包括以下步骤:
参见图3,步骤S1:将用于神经网络计算的计算图中每个节点的算子下发到算子解释器;
参见图4,步骤S2:算子解释器构建运行时的指令;
参见图5,步骤S3:定义指令依赖关系;
所述指令依赖关系包括写读强依赖关系、读写弱依赖关系和写写弱依赖关系;
进一步地,所述写读强依赖关系为:根据指令操作先写寄存器,后读同一寄存器,且后读同一寄存器的指令操作依赖先写寄存器的指令操作;
进一步地,所述读写弱依赖关系为:根据指令操作先读寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先读寄存器的指令操作;
进一步地,所述写写弱依赖关系为:根据指令操作先写寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先写寄存器的指令操作。
步骤S4:构建指令依赖关系图;
根据计算图的拓扑结构依次遍历每个节点,并通过分析每个节点指令与其后继节点指令的依赖关系,构建每个节点的依赖关系边构成指令依赖关系图;
所述分析每个节点指令与其后继节点指令的依赖关系是指分析每个节点指令与其后继节点指令的依赖关系,所述依赖关系包含一种写读强依赖关系、一种读写弱依赖关系和一种写写弱依赖关系。
参见图6,展示了为每个节点构建依赖关系边的分析过程;
节点V1:节点V1包含写寄存器r1,节点V3包含读寄存器r1,因此节点V1与节点V3存在指令之间写读强依赖关系。
节点V2:节点V2包含写寄存器r2,节点V3包含读寄存器r2,因此节点V2与节点V3存在指令之间写读强依赖关系。
节点V3:1)节点V3包含读寄存器r2,节点V4包含写寄存器r2,因此节点V3与节点V4存在指令之间读写弱依赖关系。2)节点V3包含写寄存器r1,节点V7包含读寄存器r1,因此节点V3与节点V7存在指令之间写读强依赖关系。
节点V4:节点V4包含写寄存器r2,节点V6包含读寄存器r2,因此节点V4与节点V6存在指令之间写读强依赖关系。
节点V5:节点V5包含写寄存器r3,节点V6包含读寄存器r3,因此节点V5与节点V6存在指令之间写读强依赖关系。
节点V6:1)节点V6包含写寄存器r2,节点V7包含读寄存器r2,因此节点V6与节点V7存在指令之间写读强依赖关系。2)节点V6包含读寄存器r3,节点V9包含写寄存器r3,因此节点V6与节点V9存在指令之间读写弱依赖关系。
节点V7:节点V7包含读寄存器r2,节点V8包含写寄存器r2,因此节点V7与节点V8存在指令之间读写弱依赖关系。
节点V8:节点V8包含写寄存器r2,节点V10包含读寄存器r2,因此节点V8与节点V10存在指令之间写读强依赖关系。
节点V9:节点V9包含写寄存器r3,节点V10包含读寄存器r3,因此节点V9与节点V10存在指令之间写读强依赖关系。
节点V10:节点V10包含写寄存器r2,节点V11包含读寄存器r2,因此节点V10与节点V11存在指令之间写读强依赖关系。
步骤S5:构建并行指令的拓扑顺序;
根据计算图的拓扑结构依次遍历每个计算节点,同时根据所述指令依赖关系图获得执行流中每一步并行执行指令,得到并行指令的拓扑顺序;
所述每一步并行执行指令是指运行时执行到当前待分析指令的状态时,如果所述当前待分析指令在所述指令依赖关系图中没有可依赖的前驱节点,那么当前可并行执行的指令包含所述当前待分析指令。
参见图7,展示了第一步并行执行指令,如图中符号①所标识的灰色矩形阴影覆盖的指令;
第一步可并行执行指令:由于节点V1、节点V2和节点V5所包含的指令没有依赖关系,所以第一步可并行执行节点V1、节点V2和节点V5所包含指令。
参见图8,展示了第二步并行执行指令,如图中符号②所标识的灰色矩形阴影覆盖的指令。
第二步可并行执行指令:由于节点V3依赖节点V1和节点V2所包含指令,所以第二步可执行节点V3所包含指令。由于节点V6除了依赖节点V5外,还依赖节点V4,节点V4又依赖节点V3,所以节点V6与节点V3存在间接依赖关系,因此第二步不能执行节点V6所包含指令。最终分析得出,第二步可并行执行节点V3所包含指令。
参见图9,展示了第三步并行执行指令,如图中符号③所标识的灰色矩形阴影覆盖的指令。
第三步可并行执行指令:由于直接依赖节点V3的节点包含V4节点和V7节点。而且节点V4只依赖于节点V3,所以第三步可执行节点V4所包含指令。由于节点V7除了依赖节点V3外,还依赖节点V6,节点V6又依赖节点V4,所以节点V7与节点V4存在间接依赖关系,因此第三步不能执行节点V7所包含指令。最终分析得出,第三步可并行执行节点V4所包含指令。
参见图10,展示了第四步并行执行指令,如图中符号④所标识的灰色矩形阴影覆盖的指令。
第四步可并行执行指令:由于直接依赖节点V4的节点只包含V6节点。虽然节点V6除了依赖节点V4外,还依赖节点V5,但是第一步已经执行完节点V5所包含指令,所以当第四步时可以看作,节点V6只依赖节点V4。所以第四步可执行节点V6所包含指令。最终分析得出,第四步可并行执行节点V6所包含指令。
参见图11,展示了第五步并行执行指令,如图中符号⑤所标识的灰色矩形阴影覆盖的指令。
第五步可并行执行指令:由于直接依赖节点V6的节点包含V7节点和V9节点,而且节点V9只依赖于节点V6。最终分析得出,第五步可并行执行节点V7和节点V9所包含指令。
参见图12,展示了第六步并行执行指令,如图中符号⑥所标识的灰色矩形阴影覆盖的指令。
第六步可并行执行指令:由于直接依赖节点V7的节点包含V8节点,直接依赖节点V9的节点包含V10节点,但是节点V10依赖于节点V8。最终分析得出,第六步可并行执行节点V8所包含指令。
参见图13,展示了第七步并行执行指令,如图中符号⑦所标识的灰色矩形阴影覆盖的指令。
第七步可并行执行指令:由于直接依赖节点V8的节点包含V10节点,虽然V10节点还依赖于V9节点,但是第五步时已经执行完V9节点所包含指令。最终分析得出,第七步可并行执行节点V10所包含指令。
参见图14,展示了第八步并行执行指令,如图中符号⑧所标识的灰色矩形阴影覆盖的指令。
第八步可并行执行指令:由于直接依赖节点V10的节点只包含V11节点,最终分析得出,第八可并行执行节点V11所包含指令。
步骤S6:将并行指令调度到硬件资源上;
根据所述指令依赖关系图的拓扑顺序,将每一步并行执行指令调度到对应的硬件资源上;
所述每一步并行执行指令调度到对应的硬件资源上,其中将关于数据搬运的数据加载指令LD和数据存储指令ST调度到内存单元,将关于算术运算的指令调度到算术逻辑单元。所述将指令调度到硬件资源上是指将每一步并行指令调度到对应硬件资源的最早能开始执行的位置。考虑到关于硬件内存端口的资源正在一直被所述当前指令所依赖的前驱节点所包含指令使用,因此所述硬件资源最早能开始执行的位置是指所述关于指令依赖关系的拓扑结构图中当前指令所依赖的前驱节点所包含指令执行结束的位置。
调度第一步并行指令:所述调度第一步并行指令包含如下过程,1)由于第一步并行指令包含节点V1、节点V2和节点V5所包含指令,并且所述指令均属于数据搬运指令,所以将节点V1、节点V2和节点V5所包含指令调度到内存单元。2)将节点V1、节点V2和节点V5所包含指令调度到内存单元最早能开始执行的位置,也就是内存单元的起始位置,如图15中算术逻辑单元中符号①所标识的位置。
调度第二步并行指令:所述调度第二步并行指令包含如下过程,1)由于第二步并行指令包含节点V3所包含指令,并且所述指令均属于算术运算指令,所以将节点V3所包含指令调度到算术逻辑单元。2)将节点V3所包含指令调度到算术逻辑单元最早能开始执行的位置,如图15中算术逻辑单元中符号②所标识的位置。
调度第三步并行指令:所述调度第三步并行指令包含如下过程,1)由于第三步并行指令包含节点V4所包含指令,并且所述指令属于数据搬运指令,所以将节点V4所包含指令调度到内存单元。2)将节点V4所包含指令调度到内存单元最早能开始执行的位置,如图15中算术逻辑单元中符号③所标识的位置。
调度第四步并行指令:所述调度第四步并行指令包含如下过程,1)由于第四步并行指令包含节点V6所包含指令,并且所述指令均属于算术运算指令,所以将节点V6所包含指令调度到算术逻辑单元。2)将节点V6所包含指令调度到算术逻辑单元最早能开始执行的位置,如图15中算术逻辑单元中符号④所标识的位置。
调度第五步并行指令:所述调度第五步并行指令包含如下过程,1)由于第五步并行指令包含节点V7和节点V9所包含指令,并且节点V9所含指令属于数据搬运指令,节点V7所含指令属于算术运算指令,所以将节点V9所包含指令调度到内存单元,将节点V7所含指令调度到算术逻辑单元。2)将节点V9所包含指令调度到内存单元最早能开始执行的位置,如图15中算术逻辑单元中符号⑤所标识的位置。将节点V7所包含指令调度到算术逻辑单元最早能开始执行的位置,如图15中算术逻辑单元中符号⑤所标识的位置。
调度第六步并行指令:所述调度第六步并行指令包含如下过程,1)由于第六步并行指令包含节点V8所包含指令,并且所述指令属于数据搬运指令,所以将节点V8所包含指令调度到内存单元。2)将节点V8所包含指令调度到内存单元最早能开始执行的位置,如图15中算术逻辑单元中符号⑥所标识的位置。
调度第七步并行指令:所述调度第七步并行指令包含如下过程,1)由于第七步并行指令包含节点V10所包含指令,并且所述指令均属于算术运算指令,所以将节点V10所包含指令调度到算术逻辑单元。2)将节点V10所包含指令调度到算术逻辑单元最早能开始执行的位置,如图15中算术逻辑单元中符号⑦所标识的位置。
调度第八步并行指令:所述调度第八步并行指令包含如下过程,1)由于第八步并行指令包含节点V11所包含指令,并且所述指令均属于算术运算指令,所以将节点V11所包含指令调度到算术逻辑单元。2)将节点V11所包含指令调度到算术逻辑单元最早能开始执行的位置,如图15中算术逻辑单元中符号⑧所标识的位置。
步骤S7:构建并行指令的最短调度:在硬件资源限制的条件下并行指令执行所需的最短时间;
所述构建并行指令的最短调度是指在硬件资源限制的条件下并行指令执行所需的最短时间。假设所有指令操作都需要一个时钟周期,所述数据加载指令LD除外,所述数据加载指令LD需要两个时钟周期。考虑到硬件资源对于先加载然后立即进行存储的情形采用先将待加载的数据缓存到一张临时表中,然后当需要执行数据存储指令时再从临时表中将数据存储到内存资源中的机制,因此同一个存储位置上的数据存储指令ST可以在所述位置上的数据加载指令LD开始后的一个时钟开始执行。所述构建并行指令的最短调度的过程中,由于每条数据搬运指令执行时会占用硬件内存端口,所以对于存在多条数据搬运指令需要并行执行时,一次只能执行一条数据搬运指令,所述执行的顺序可以根据优先执行关于指令依赖关系的拓扑结构图中最早能开始执行的指令的顺序原则。
所述构建并行指令的最短调度包含如下过程:
最短调度第一步并行指令:由于第一步并行指令包含节点V1、节点V2和节点V5均包含数据搬运指令中的数据加载指令LD,每条数据加载指令的执行时间需要两个时钟周期,所以按照指令依赖关系的拓扑结构图中最早能开始执行的指令的顺序原则,依次执行节点V1、节点V2和节点V5所包含的数据加载指令LD,所述操作一共需要6个时钟周期。
最短调度第二步并行指令:由于第二步并行指令包含节点V3所包含算术运算指令SUB指令,执行所述操作一共需要1个时钟周期。
最短调度第三步并行指令:由于第三步并行指令包含节点V4所包含数据搬运指令中的数据加载指令LD,执行所述操作一共需要2个时钟周期。
最短调度第四步并行指令:由于第四步并行指令包含节点V6所包含算术运算指令MUL指令,执行所述操作一共需要1个时钟周期。
最短调度第五步并行指令:由于第五步并行指令包含节点V7所含的属于算术运算指令ADD指令和节点V9所包含的数据搬运指令中的数据加载指令LD,所以可同时执行节点V7所包含的ADD指令和节点V9所包含的数据加载指令LD,执行节点V7所包含的ADD指令需要1个时钟周期,执行节点V9所包含的数据加载指令LD需要2个时钟周期,因此所述操作一共需要2个时钟周期。
最短调度第六步并行指令:由于第六步并行指令包含节点V8所包含数据搬运指令中的数据加载指令LD,执行所述操作一共需要2个时钟周期。
最短调度第七步并行指令:由于第七步并行指令包含节点V10所包含算术运算指令ADD指令,执行所述操作一共需要1个时钟周期。
最短调度第八步并行指令:由于第八步并行指令包含节点V11所包含算术运算指令SUB指令,执行所述操作一共需要1个时钟周期。
执行整张所述指令依赖关系的拓扑结构图所需的时间是将上述每一步最短调度并行指令所需的时间进行累加。因此执行上述整张所述指令依赖关系的拓扑结构图所需的时间是,也就是说执行所述拓扑图一共需要16个时钟周期,如图16所示。
图16里对应符号意义:
©:a表示第c步并行指令执行需要a个时钟周期,如①:6表示第一步并行指令执行需要6个时钟周期。
步骤S8:释放已经执行完的指令。
与前述一种用于图计算的指令执行方法的实施例相对应,本发明还提供了一种用于图计算的指令执行装置的实施例。
参见图17,本发明实施例提供的一种用于图计算的指令执行装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种用于图计算的指令执行方法。
本发明一种用于图计算的指令执行装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图17所示,为本发明一种用于图计算的指令执行装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图17所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种用于图计算的指令执行方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种用于图计算的指令执行方法,其特征在于,包括以下步骤:
步骤S1:将用于神经网络计算的计算图中每个节点的算子下发到算子解释器;
步骤S2:算子解释器构建运行时的指令;
步骤S3:定义指令依赖关系;
步骤S4:构建指令依赖关系图;
步骤S5:构建并行指令的拓扑顺序;
步骤S6:将并行指令调度到硬件资源上;
步骤S7:构建并行指令的最短调度:在硬件资源限制的条件下并行指令执行所需的最短时间;
步骤S8:释放已经执行完的指令。
2.如权利要求1所述的一种用于图计算的指令执行方法,其特征在于,所述步骤S3所述指令依赖关系包括写读强依赖关系、读写弱依赖关系和写写弱依赖关系。
3.如权利要求2所述的一种用于图计算的指令执行方法,其特征在于,所述写读强依赖关系为:根据指令操作先写寄存器,后读同一寄存器,且后读同一寄存器的指令操作依赖先写寄存器的指令操作。
4.如权利要求2所述的一种用于图计算的指令执行方法,其特征在于,所述读写弱依赖关系为:根据指令操作先读寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先读寄存器的指令操作。
5.如权利要求2所述的一种用于图计算的指令执行方法,其特征在于,所述写写弱依赖关系为:根据指令操作先写寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先写寄存器的指令操作。
6.如权利要求1所述的一种用于图计算的指令执行方法,其特征在于,所述步骤S4的具体步骤为:根据计算图的拓扑结构依次遍历每个节点,并通过分析每个节点指令与其后继节点指令的依赖关系,构建每个节点的依赖关系边构成指令依赖关系图。
7.如权利要求1所述的一种用于图计算的指令执行方法,其特征在于,所述步骤S5的具体步骤为:根据计算图的拓扑结构依次遍历每个计算节点,同时根据所述指令依赖关系图获得执行流中每一步并行执行指令,得到并行指令的拓扑顺序。
8.如权利要求1所述的一种用于图计算的指令执行方法,其特征在于,所述步骤S6的具体步骤为:根据所述指令依赖关系图的拓扑顺序,将每一步并行执行指令调度到对应的硬件资源上。
9.一种用于图计算的指令执行装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-8中任一项所述的一种用于图计算的指令执行方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-8中任一项所述的一种用于图计算的指令执行方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177797.3A CN115269016A (zh) | 2022-09-27 | 2022-09-27 | 一种用于图计算的指令执行方法及装置 |
PCT/CN2022/124006 WO2024065869A1 (zh) | 2022-09-27 | 2022-10-09 | 一种用于图计算的指令执行方法及装置 |
US18/071,978 US20240118897A1 (en) | 2022-09-27 | 2022-11-30 | Instruction Execution Method and Apparatus for Graph Computation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177797.3A CN115269016A (zh) | 2022-09-27 | 2022-09-27 | 一种用于图计算的指令执行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115269016A true CN115269016A (zh) | 2022-11-01 |
Family
ID=83756230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211177797.3A Pending CN115269016A (zh) | 2022-09-27 | 2022-09-27 | 一种用于图计算的指令执行方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240118897A1 (zh) |
CN (1) | CN115269016A (zh) |
WO (1) | WO2024065869A1 (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070958A1 (en) * | 2007-01-25 | 2010-03-18 | Nec Corporation | Program parallelizing method and program parallelizing apparatus |
US20150074675A1 (en) * | 2013-09-12 | 2015-03-12 | Marvell World Trade Ltd | Method and system for instruction scheduling |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN110377340A (zh) * | 2019-07-24 | 2019-10-25 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110825440A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 指令执行方法和装置 |
CN111309479A (zh) * | 2020-02-14 | 2020-06-19 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
CN112037061A (zh) * | 2020-08-31 | 2020-12-04 | 深圳前海微众银行股份有限公司 | 区块链中交易的处理方法、装置、电子设备及存储介质 |
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
CN113554161A (zh) * | 2021-07-20 | 2021-10-26 | 清华大学 | 一种神经网络加速器编译方法及装置 |
CN113849182A (zh) * | 2020-06-26 | 2021-12-28 | 英特尔公司 | 用以基于图注意力网络分析和增强软件的系统 |
CN114237775A (zh) * | 2022-02-21 | 2022-03-25 | 众连智能科技有限公司 | 一种并行执行方法、装置、电子设备及存储介质 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp., Tokio/Tokyo | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US9652301B2 (en) * | 2010-09-15 | 2017-05-16 | Wisconsin Alumni Research Foundation | System and method providing run-time parallelization of computer software using data associated tokens |
US9417878B2 (en) * | 2012-03-30 | 2016-08-16 | Advanced Micro Devices, Inc. | Instruction scheduling for reducing register usage based on dependence depth and presence of sequencing edge in data dependence graph |
US11714992B1 (en) * | 2018-12-13 | 2023-08-01 | Amazon Technologies, Inc. | Neural network processing based on subgraph recognition |
WO2022094964A1 (zh) * | 2020-11-06 | 2022-05-12 | 华为技术有限公司 | 处理指令的方法以及图计算装置 |
-
2022
- 2022-09-27 CN CN202211177797.3A patent/CN115269016A/zh active Pending
- 2022-10-09 WO PCT/CN2022/124006 patent/WO2024065869A1/zh unknown
- 2022-11-30 US US18/071,978 patent/US20240118897A1/en active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070958A1 (en) * | 2007-01-25 | 2010-03-18 | Nec Corporation | Program parallelizing method and program parallelizing apparatus |
US20150074675A1 (en) * | 2013-09-12 | 2015-03-12 | Marvell World Trade Ltd | Method and system for instruction scheduling |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110825440A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 指令执行方法和装置 |
CN110377340A (zh) * | 2019-07-24 | 2019-10-25 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
CN111309479A (zh) * | 2020-02-14 | 2020-06-19 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
CN113849182A (zh) * | 2020-06-26 | 2021-12-28 | 英特尔公司 | 用以基于图注意力网络分析和增强软件的系统 |
CN112037061A (zh) * | 2020-08-31 | 2020-12-04 | 深圳前海微众银行股份有限公司 | 区块链中交易的处理方法、装置、电子设备及存储介质 |
CN113554161A (zh) * | 2021-07-20 | 2021-10-26 | 清华大学 | 一种神经网络加速器编译方法及装置 |
CN114237775A (zh) * | 2022-02-21 | 2022-03-25 | 众连智能科技有限公司 | 一种并行执行方法、装置、电子设备及存储介质 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20240118897A1 (en) | 2024-04-11 |
WO2024065869A1 (zh) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3832499B1 (en) | Matrix computing device | |
US5832272A (en) | Apparatus and method for parallel computation | |
KR101413049B1 (ko) | 그래프 기반 계산에서의 계산 자원의 관리 | |
US9043770B2 (en) | Program module applicability analyzer for software development and testing for multi-processor environments | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
US20080209436A1 (en) | Automated testing of programs using race-detection and flipping | |
US11868809B2 (en) | Hardware assisted fine-grained data movement | |
US20070022424A1 (en) | Technique for processing a computer program | |
CN114237918B (zh) | 一种面向神经网络模型计算的图执行方法和装置 | |
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
US20220107812A1 (en) | Highly parallel processing architecture using dual branch execution | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和系统 | |
CN111831582A (zh) | 用于智能处理器的内存管理装置、方法及电子设备 | |
CN115268936B (zh) | 一种用于计算图编译的优化方法及装置 | |
US20240104016A1 (en) | Intermediate Representation Method and Apparatus for Compiling Computation Graphs | |
Bai et al. | Computing execution times with execution decision diagrams in the presence of out-of-order resources | |
US20060200648A1 (en) | High-level language processor apparatus and method | |
CN115269016A (zh) | 一种用于图计算的指令执行方法及装置 | |
Lázaro-Muñoz et al. | A tasks reordering model to reduce transfers overhead on GPUs | |
CN115756474A (zh) | 一种用于计算图编译的中间表示方法及装置 | |
CN117010465A (zh) | 神经网络加速器的调度方法、装置、电子设备及存储介质 | |
CN115269205A (zh) | 一种面向神经网络计算的内存优化方法和装置 | |
KR20230101851A (ko) | 컴파일러를 이용한 고도의 병렬 처리 아키텍처 | |
CN113704687A (zh) | 一种张量计算运行方法、装置及运算系统 | |
CN111831333A (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 |
Application publication date: 20221101 |
|
RJ01 | Rejection of invention patent application after publication |