CN115269016A - 一种用于图计算的指令执行方法及装置 - Google Patents

一种用于图计算的指令执行方法及装置 Download PDF

Info

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
Application number
CN202211177797.3A
Other languages
English (en)
Inventor
王宏升
陈�光
曾令仿
潘爱民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202211177797.3A priority Critical patent/CN115269016A/zh
Priority to PCT/CN2022/124006 priority patent/WO2024065869A1/zh
Publication of CN115269016A publication Critical patent/CN115269016A/zh
Priority to US18/071,978 priority patent/US20240118897A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

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:将用于神经网络计算的计算图中每个节点的算子下发到算子解释器;
Figure DEST_PATH_IMAGE001
:表示张量x与张量y进行矩阵乘法操作;
Figure 226666DEST_PATH_IMAGE002
:表示张量x与张量y进行矩阵相减操作;
Figure DEST_PATH_IMAGE003
:表示张量x与张量y进行矩阵相加操作;
参见图4,步骤S2:算子解释器构建运行时的指令;
Figure 81489DEST_PATH_IMAGE004
:所述指令表示写寄存器指令,表示将内存中张量变量x的值写入寄存器中ri中;
Figure 392385DEST_PATH_IMAGE006
:表示执行矩阵相乘操作,分别读取寄存器rj和寄存器rk中的张量变量,利用所得张量变量进行矩阵乘运算,将计算所得结果写入寄存器ri中;
Figure 194119DEST_PATH_IMAGE008
:表示执行矩阵相加操作,分别读取寄存器rj和寄存器rk中的张量变量,利用所得张量变量进行矩阵相加运算,将计算所得结果写入寄存器ri中;
Figure DEST_PATH_IMAGE009
:表示执行矩阵相减操作,分别读取寄存器rj和寄存器rk中的张量变量,利用所得张量变量进行矩阵相减运算,将计算所得结果写入寄存器ri中。
参见图5,步骤S3:定义指令依赖关系;
Figure 444709DEST_PATH_IMAGE004
:所述指令表示写寄存器指令,表示将内存中张量变量x的值写入寄存器中ri中;
Figure 798330DEST_PATH_IMAGE010
:所述指令表示读寄存器指令,表示读取寄存器中ri中的值并写入内存中张量变量y中;
Figure DEST_PATH_IMAGE011
:表示所述前者写寄存器ri操作;
Figure 3047DEST_PATH_IMAGE012
:表示所述前者读寄存器ri操作;
Figure DEST_PATH_IMAGE013
:表示所述后者写寄存器ri操作;
Figure 139630DEST_PATH_IMAGE014
:表示所述后者读寄存器ri操作。
所述指令依赖关系包括写读强依赖关系、读写弱依赖关系和写写弱依赖关系;
进一步地,所述写读强依赖关系为:根据指令操作先写寄存器,后读同一寄存器,且后读同一寄存器的指令操作依赖先写寄存器的指令操作;
进一步地,所述读写弱依赖关系为:根据指令操作先读寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先读寄存器的指令操作;
进一步地,所述写写弱依赖关系为:根据指令操作先写寄存器,后写同一寄存器,且后写同一寄存器的指令操作依赖先写寄存器的指令操作。
步骤S4:构建指令依赖关系图;
根据计算图的拓扑结构依次遍历每个节点,并通过分析每个节点指令与其后继节点指令的依赖关系,构建每个节点的依赖关系边构成指令依赖关系图;
所述分析每个节点指令与其后继节点指令的依赖关系是指分析每个节点指令与其后继节点指令的依赖关系,所述依赖关系包含一种写读强依赖关系、一种读写弱依赖关系和一种写写弱依赖关系。
参见图6,展示了为每个节点构建依赖关系边的分析过程;
Figure DEST_PATH_IMAGE015
:表示Vj节点强依赖于Vi节点,也就是说Vi节点与Vj节点具有写读依赖关系。
Figure 11771DEST_PATH_IMAGE016
:表示Vj节点弱依赖于Vi节点,也就是说Vi节点与Vj节点具有读写依赖关系。
Figure DEST_PATH_IMAGE017
表示第1步可同时执行的并行指令包含Vi节点处的指令。
节点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个时钟周期。
执行整张所述指令依赖关系的拓扑结构图所需的时间是将上述每一步最短调度并行指令所需的时间进行累加。因此执行上述整张所述指令依赖关系的拓扑结构图所需的时间是
Figure DEST_PATH_IMAGE019
,也就是说执行所述拓扑图一共需要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中任一项所述的一种用于图计算的指令执行方法。
CN202211177797.3A 2022-09-27 2022-09-27 一种用于图计算的指令执行方法及装置 Pending CN115269016A (zh)

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)

* Cited by examiner, † Cited by third party
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 之江实验室 一种用于神经网络计算的动态图执行方法及装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
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
WO2024065869A1 (zh) 2024-04-04
US20240118897A1 (en) 2024-04-11

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
US7788635B2 (en) Technique for processing a computer program
US11868809B2 (en) Hardware assisted fine-grained data movement
CN114237918B (zh) 一种面向神经网络模型计算的图执行方法和装置
CN115269204B (zh) 一种用于神经网络编译的内存优化方法及装置
KR20220145848A (ko) 집적 회로 아키텍처 내에서 최적화된 데이터흐름을 위한 지능형 버퍼 추적 시스템 및 방법
CN114217966A (zh) 基于资源调整的深度学习模型动态批处理调度方法和***
CN111831582A (zh) 用于智能处理器的内存管理装置、方法及电子设备
CN115268936B (zh) 一种用于计算图编译的优化方法及装置
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
CN117010465A (zh) 神经网络加速器的调度方法、装置、电子设备及存储介质
CN115269205A (zh) 一种面向神经网络计算的内存优化方法和装置
Bai et al. Computing execution times with execution decision diagrams in the presence of out-of-order resources
KR20230101851A (ko) 컴파일러를 이용한 고도의 병렬 처리 아키텍처
CN111831333A (zh) 用于智能处理器的指令分解方法、装置及电子设备
US20240104016A1 (en) Intermediate Representation Method and Apparatus for Compiling Computation Graphs
Schuele Efficient parallel execution of streaming applications on multi-core processors
US20230273818A1 (en) Highly parallel processing architecture with out-of-order resolution

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: 20221101