CN115495095A - 张量程序的整程序编译方法、装置、设备、介质及集群 - Google Patents

张量程序的整程序编译方法、装置、设备、介质及集群 Download PDF

Info

Publication number
CN115495095A
CN115495095A CN202211442570.7A CN202211442570A CN115495095A CN 115495095 A CN115495095 A CN 115495095A CN 202211442570 A CN202211442570 A CN 202211442570A CN 115495095 A CN115495095 A CN 115495095A
Authority
CN
China
Prior art keywords
program
whole
intermediate representation
tensor
level
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
Application number
CN202211442570.7A
Other languages
English (en)
Other versions
CN115495095B (zh
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.)
Shanghai Suiyuan Technology Co ltd
Original Assignee
Shanghai Enflame Technology Co ltd
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 Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202211442570.7A priority Critical patent/CN115495095B/zh
Publication of CN115495095A publication Critical patent/CN115495095A/zh
Application granted granted Critical
Publication of CN115495095B publication Critical patent/CN115495095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种张量程序的整程序编译方法、装置、设备、介质及集群。该方法包括:获取与张量程序源代码匹配的整程序高层程序中间表示;查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。通过执行本技术方案,可以将大规模张量程序作为整体进行编译优化,支持多程序多数据执行模式,具有更大的优化潜力。

Description

张量程序的整程序编译方法、装置、设备、介质及集群
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种张量程序的整程序编译方法、装置、设备、介质及集群。
背景技术
目前,深度学习模型主要通过编译并执行张量计算程序的方式,实现各类数据处理。为了应对越来越复杂的应用场景,深度学习模型的规模也在逐渐膨胀,例如会出现深度学习模型的层数特别多、单层张量计算核的尺寸特别大的情况。在这类深度学习模型中编译并运行的张量计算程序,属于大规模张量计算程序,大规模张量计算程序在运算时会对设备内存的占用特别大,从而必须采用多个计算设备组成的集群进行协同计算。
现有技术在进行大规模张量程序的编译执行时,由一个并行训练库将相同的大规模张量程序分发给每个计算节点,每个计算节点根据自身维护的一套单独的编译和运行程序,独立的对大规模张量程序进行编译和执行。
发明人在实现本发明的过程中,发现现有技术存在如下缺陷:现有技术中的分布式集群中的每个计算节点均接收同一份大规模张量程序,因而仅能支持单程度多数据的执行模式,无法实现多计算节点间的协同优化;每个计算节点中的各硬件设备需要根据自身维护的一套单独的编译和运行程序,对编译模块和运行模块的兼容性带来了额外的技术挑战和维护成本;同时,现有技术方案无法在大规模集群上实现有效的自动化优化。
发明内容
本发明实施例提供了一种张量程序的整程序编译方法、装置、设备、介质及集群,以提出一种将大规模张量程序作为整体进行编译优化的新方式,可以支持多程序多数据的执行模式。
第一方面,本发明实施例提供了一种张量程序的整程序编译方法,由计算集群中的监控节点执行,该方法包括:
获取与张量程序源代码匹配的整程序高层程序中间表示;
查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;
将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
第二方面,本发明实施例提供了一种张量程序的整程序编译装置,由计算集群中的监控节点执行,该装置包括:
高层中间表示获取模块,用于获取与张量程序源代码匹配的整程序高层程序中间表示;
高层结构化中间表示转换模块,用于查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;
结构化字节码转换模块,用于将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的张量程序的整程序编译方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的张量程序的整程序编译方法。
第五方面,本发明实施例提供了一种计算集群,该集群包括:
多个计算机节点,各计算机节点之间通过线缆链接或者无线链接的方式实现点对点的通信连接;
计算机节点中包括至少一个计算设备,同一计算机节点内的多个计算设备通过线缆直连的方式互联,其中:
被配置为监控节点的计算机节点,用于执行本发明任一实施例所述的张量程序的整程序编译方法;
被配置为计算节点的计算机节点,在内部的每个计算设备上分别安装运行时虚拟机,用于在通过运行时虚拟机接收到监控节点发送的可执行程序分片时,使用所适配的计算设备加载运行所分配的可执行程序分片。
本发明实施例的技术方案,通过计算集群中的监控节点查询预先构建的性能代价模型,将张量程序源代码最终转换为整程序结构化字节码的方式,完成了张量程序的整程序编译过程,实现了由单一节点将大规模张量程序作为整体进行编译优化的新方式,编译器能够在编译阶段对完整的大规模张量程序进行切分与分配,得到整个计算集群上的全局优化方案,同时,本发明实施例的技术方案可以支持多程序多数据的执行模式,具有更大的优化搜索空间和优化潜力。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是现有技术中的一种张量程序编译执行流程的实现方框图;
图1b是根据本发明实施例一提供的一种张量程序的整程序编译方法的流程图;
图2是根据本发明实施例二所提供的一种张量程序的整程序编译方法的流程图;
图3a是根据本发明实施例三提供的一种张量程序的整程序编译方法的流程图;
图3b是根据本发明实施例三提供的方法得到的一种张量程序的整程序编译方法的具体应用场景的流程图;
图3c是根据本发明实施例三提供的方法得到的一种张量程序的整程序运行阶段的流程图;
图4是根据本发明实施例四提供的一张量程序的整程序编译装置的结构示意图;
图5是根据本发明实施例五提供的一种可以用来实施本发明的实施例的电子设备的结构示意图;
图6a是根据本发明实施例六提供的方法得到的一种张量程序的整程序编译计算集群的结构示意图;
图6b是是根据本发明实施例六提供的方法得到的一种张量程序的整程序编译计算集群与存储模块架构的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,为了使本技术领域的人员更好地理解本发明方案,首先将现有技术中大规模张量程序的编译执行方式进行简单介绍。具体的,在图1a中示出了现有技术中的一种张量程序编译执行流程的实现方框图。
如图1a所示,现有的大规模张量程序的编译执行方式由计算集群和并行训练库并行执行。首先,并行训练库在获取程序源代码后,首先将该程序源代码并行的分发至选定的多个计算节点中所运行的多个编译器中。其中,同一计算节点可能对应多个硬件设备,每个硬件设备上单独安装一个编译器以及一个运行时系统。
由于每个编译器所获取的程序源代码均为同一份,因而,现有技术采用单程序多数据的执行模式。每个编译器在获取该程序源代码后,基于自身所维护的编译程序,将该程序源代码编译得到程序字节码,之后,将该程序字节码发送至匹配的运行时系统中,由运行时系统基于自身所维护的运行程序,执行接收到的程序字节码。
也即,现有技术方案的主要特点是:1、需要在计算集群的基础上,额外进入一个并行训练库进行程序源代码的统一调度;2、每个硬件设备中对应一套单独的编译与运行流程,每个编译器所见的程序是单个设备运行时对应的程序;3、并行训练库需要独立完成分布式策略的搜索,无法有效实现性能优化。
也就是说,现有技术中分布式集群中的每个计算节点,仅会使用所本机适配的编译与运行流程,对本机内的程序源代码进行适配编译优化和执行,进而,无法站在整个计算集群的角度下,实现对程序源代码整体编译优化,有鉴于此,在本发明各实施例中,提出了一种将大规模张量程序作为整体进行编译优化的新方式,以解决现有技术中出现的各项问题。
实施例一
图1b为本发明实施例一提供的一种张量程序的整程序编译方法的流程图,本实施例可适用于对大规模张量程序的整程序编译的情况,该方法可以由张量程序的整程序编译装置来执行,该张量程序的整程序编译装置可以采用硬件和/或软件的形式实现,并一般可配置于执行大规模张量程序的计算集群中的监控节点内部。如图1b所示,该方法包括:
S110、获取与张量程序源代码匹配的整程序高层程序中间表示。
其中,张量程序源代码可以理解为未编译的按照一定的程序设计语言规范书写的计算程序,计算程序的语言类型可以包括:C++、C#以及JAVA等任何计算机语言代码。
该计算程序中包括多个数据变量,数据变量的数据类型为张量类型。其中,张量概念是矢量概念的推广,矢量是一阶张量。张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。
其中,现有的各种深度学习模型或者张量决策树等,均可以转化为匹配的张量程序源代码,以满足相应的计算需求。
高层中间表示,也可以称为中间表示(Intermediate Representation,IR),在该高层中间表示中,包含了源代码中的全部信息,是源代码的一个低层级的形式,更加接近机器编码,且具有语言无关、结构紧凑以及包含了控制流信息等特点。
相应的,整程序高层中间表示,可以理解为对该张量程序源代码未进行任何的切分处理,而是将该张量程序源代码完整的进行高层中间表示的转换,所得到的转换结果。
在本实施例的一个可选的实施方式中,获取与张量程序源代码匹配的整程序高层程序中间表示,可以包括:
通过语法分析器对所述张量程序源代码进行处理,得到与所述张量程序源代码匹配的抽象语法树(Abstract Syntax Tree,AST);
将所述抽象语法树转换为所述整程序高层程序中间表示。
其中,所述AST为张量程序源代码语法结构的一种抽象表示,AST以树状的形式表现编程语言的语法结构,树上的每个节点都表示张量程序源代码中的一种结构。在本实施例中,为了避免输入深度学习模型的设计架构中的张量程序源代码出现系统无法识别的情况,采用了将不同框架输入的张量程序源代码转换至使用整程序高层中间表示的统一格式;进一步的,语法分析器将不同框架输入的张量程序源代码转换为AST,通过AST将张量程序源代码转换至使用整程序高层中间表示的统一格式,并对其进行与硬件无关的优化,保证其能稳定传输,维护了系统的正常运行。
S120、查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示。
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联。
其中,该性能代价模型,通过使用该计算集群中每个计算节点的历史计算性能数据的预先构建得到。其中,该计算性能数据可以包括各计算节点在历史执行所分配的张量程序时的执行速度或者CPU占用率等信息。通过使用上述历史计算性能数据对该性能代价模型进行训练,该性能代价模型可以统一学习到整个计算集群的程序执行能力。
相应的,通过查询该性能代价模型,可以确定整程序高层程序中间表示中的哪一部分的程序代码被分配至计算集群中的哪一个计算节点执行时,性能最优。基于此,可以将整程序高层程序中间表示转换为整程序高层程序结构化中间表示。
在整程序高层程序结构化中间表示中,包含了整程序高层程序中间表示的全部程序代码。相区别的是,在整程序高层程序结构化中间表示中对全部程序代码进行了有效的划分,将全部程序代码划分为多段局部代码,并将每段局部代码分配到一个顶点上,之后,通过将各顶点与计算集群中的各计算节点关联,实现了将每段局部代码在各计算节点上进行了有效的分配。
S130、将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
字节码(Byte-code)是一种包含执行程序、由一序列op(operation code,操作码)代码或者数据对组成的二进制文件。字节码是一种中间码,它比机器码更抽象。字节码经常被看作是包含一个执行程序的二进制文件,更像一个对象模型。
其中,整程序结构化字节码可以理解为将整程序高层程序结构化中间表示中的每段局部代码均转换为匹配的字节码。但是,与不同局部代码分别对应的字节码仍然通过顶点进行组织。
也即,整程序结构化字节码仍然由多个顶点连接构成,每个顶点中分配有与设定局部代码对应的字节码,且每个顶点与计算集群中的设定计算节点关联。
可以理解的是,通过上述设置,计算集群中的监控节点可以基于全部计算节点的历史性能数据,对张量程序源代码进行整体的编译优化。
本发明实施例的技术方案,通过计算集群中的监控节点查询预先构建的性能代价模型,将张量程序源代码最终转换为整程序结构化字节码的方式,完成了张量程序的整程序编译过程,实现了由单一节点将大规模张量程序作为整体进行编译优化的新方式,编译器能够在编译阶段对完整的大规模张量程序进行切分与分配,得到整个计算集群上的全局优化方案,同时,本发明实施例的技术方案可以支持多程序多数据的执行模式,具有更大的优化搜索空间和优化潜力。
在上述各实施例的技术上,获取与张量程序源代码匹配的整程序高层程序中间表示,可以包括:
获取待编译的张量程序源代码,并计算所述张量程序源代码的数据规模;如果所述数据规模超过预设的数据规模门限,则获取与张量程序源代码匹配的整程序高层程序中间表示。
其中,本发明实施例的技术方案主要适用于大规模的张量计算程序在分布式计算集群上的高性能计算。优选的,本发明各实施例的技术方案首先对张量程序源代码的数据规模进行计算。如果该数据规模超过预设的数据规模门限,则确定该待编译的张量程序源代码为大规模张量程序源代码,并采用本发明实施例所述的整程序编译过程进行编译执行;如果该数据规模未超过预设的数据规模门限,则可以直接采用单计算节点的方式进行张量程序源代码的编译执行。
具体的,检测该数据规模是否超过预设的数据规模门限的方式可以包括:检测与该待编译的张量程序源代码匹配的机器学习模型所包括的计算层数是否超过预设的计算层数门限数量,或者,检测待编译的张量程序源代码匹配的单层计算核的尺寸是否超过预设的尺寸阈值等,本实施例对此并不进行限制。
实施例二
图2为本发明实施例二提供的一种张量程序的整程序编译方法的流程图,本实施例以上述实施例为基础进行优化。在本实施例中,对张量程序的整程序编译方法的具体实现方式进行进一步细化,相应的,如图2所示,该方法包括:
S210、通过语法分析器对所述张量程序源代码进行处理,得到与所述张量程序源代码匹配的抽象语法树。
S220、将所述抽象语法树转换为所述整程序高层程序中间表示。
S230、将所述整程序高层程序中间表示划分为多个基本块,每个基本块中包括所述整程序高层程序中间表示内的局部代码。
在本实施例中,可以通过分析所述整程序高层程序中间表示中各行代码的执行逻辑,将全部代码中适宜在同一计算节点(或者同一计算设备)中执行的相邻代码段划分为一个基本块。
也即,一个基本块可以理解一段行数适宜的,且不可分配至多个计算节点执行的一段局部代码。
相应的,基本块中包含整程序高层程序中间表示中的部分代码信息,同时,所述基本块的数量还可以由张量程序的数据规模间接确定,数据规模越大的张量程序,所划分出的基本块数量越多。
容易理解的是,所述每个基本块中包括所述整程序高层程序中间表示内的局部代码,每个基本块中的代码互异,且所有基本块中的代码可以构成完整的整程序高层程序中间表示。
S240、根据各基本块中局部代码的执行顺序,生成与所述整程序高层程序中间表示对应的计算图。
其中,所述计算图由多个顶点相连构成,一个顶点中分配有一个基本块,顶点间的连接顺序与基本块中局部代码间的执行顺序相匹配。
可以理解的是,整程序高层程序中间表示中不同代码行之间是具有执行顺序的,进而,由一行或者多行代码构成的基本块之间同样具有执行顺序的限制。例如,基本块A2需要使用基本块A0和基本块A1的计算结果作为输入执行计算,或者基本块B、基本块C以及基本块D均需要使用基本块A的计算结果作为输入执行计算等。
进而,在将所述整程序高层程序中间表示划分为多个基本块后,需要以计算图的形式,将各基本块组织起来。其中,计算图中各顶点的连接顺序,与各基本块之间的执行顺序相匹配。
S250、查询预先构建的性能代价模型,确定各基本块与计算集群中各计算节点之间的分配关系。
如前所述,在划分得到基本块后,可以通过查询该性能代价模型,确定出执行每个基本块的最佳计算节点。
其中,多个相邻或者不相邻的基本块可以被分配至同一计算节点中,或者分配至多个不同的计算节点中,本实施例对此并不进行限制。
在本发明实施例中,所述性能代价模型可以使用计算集群中各所述计算节点在执行所分配的可执行分片时反馈的历史性能数据更新后得到。该性能代价模型经过训练得到,可以用于识别不同计算节点对于不同类型的基本块的运算效率,并根据运算效率筛选出与每个基本块最合适的计算节点进行分配。
S260、根据所述分配关系对所述计算图进行设置,得到所述整程序高层程序结构化中间表示。
在指定出计算图中每个顶点所分配的计算节点后,可以得到如前所述的整程序高层程序结构化中间表示。
S270、依次调用多个高层程序优化变形组件,对整程序高层程序结构化中间表示中的每个顶点的基本块进行优化处理。
其中,所述优化处理可以用于对解决同一问题的不同程序进行比较、修改或重新编写,把一般程序处理为语句最少,占用内存量最小与处理最快的最优程序。
进一步的,高层程序优化变形组件可以包括:语句调整组件、汇编重写组件与指令调整组件、循环展开组件与参数传递优化组件等。
在本发明实施例中,经过多个高层程序优化变形组件对每个顶点的基本块进行优化处理可以减小代码的冗余量,降低代码运行的占用内存,减少编译码时间,提高了效率,节省了系统内存,提高了代码运行的效率。
S280、执行程序下沉操作,将整程序高层程序结构化中间表示转换为整程序底层程序结构化中间表示;
其中,底层程序中间表示,可以理解为对高层程序中间表示的进一步底层化处理,使得转化后的中间表示更加接近字节码的形式。
相应的,整程序底层程序结构化中间表示可以理解为将整程序高层程序结构化中间表示中的每段局部代码均转换为匹配的底层程序中间表示。但是,与不同局部代码分别对应的底层程序中间表示仍然通过顶点进行组织。
S290、根据整程序底层程序结构化中间表示,生成所述整程序结构化字节码,以完成张量程序的整程序编译过程。
其中,通过将整程序高层程序结构化中间表示先转换为整程序底层程序结构化中间表示,再由整程序底层程序结构化中间表示转换为所述整程序结构化字节码的方式,可以降低每一次转换时的复杂度,并相应提高每次转换时的转换精度,提高了转换效率。
本发明实施例的技术方案,通过计算集群中的监控节点查询预先构建的性能代价模型,将张量程序源代码最终转换为整程序结构化字节码的方式,完成了张量程序的整程序编译过程,实现了由单一节点将大规模张量程序作为整体进行编译优化的新方式,编译器能够在编译阶段对完整的大规模张量程序进行切分与分配,得到整个计算集群上的全局优化方案,同时,本发明实施例的技术方案可以支持多程序多数据的执行模式,具有更大的优化搜索空间和优化潜力。
在上述各实施例的基础上,在执行程序下沉操作,将整程序高层程序结构化中间表示转换为整程序底层程序结构化中间表示之后,还可以包括:
依次调用多个底层程序优化变形组件,对整程序底层程序结构化中间表示中的每个顶点的基本块进行优化处理。
与高层程序优化变形组件相类似,各底层程序优化变形组件可以对每个基本块中的底层程序中间表示进行优化处理可以减小代码的冗余量,降低代码运行的占用内存,减少编译码时间,提高了效率,节省了系统内存,提高了代码运行的效率。
实施例三
图3a为本发明实施例三提供的一种张量程序的整程序编译方法的流程图。本实施例以上述各实施例为基础进行优化。在本实施例中,具体限定了在监控节点完成张量程序的整程序编译过程后,由该监控节点继续完成张量程序的控制执行过程。
相应的,如图3a所示,该方法包括:
S310、获取与张量程序源代码匹配的整程序高层程序中间表示。
S320、查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示。
S330、将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
S340、调用调度器组件,对整程序结构化字节码进行调度切分,获取调度器组件输出的多个字节码分片。
如前所述,该整程序结构化字节码中同样包括多个顶点,每个顶点与设定计算节点关联,且每个顶点中被分配有设定长度的字节码片段。
相应的,调度器组件的作用就是依次遍历整程序结构化字节码中包括的各个顶点,根据具有连接关系的各顶点是否与同一计算节点相关联的判定结果,确定是否需要将整程序字节码进行分片,并相应的输出需要分配至不同计算节点的多个字节码分片。
需要说明的是,虽然在整程序结构化字节码中,每个顶点中被分配有设定长度的字节码片段,但是并没有真正的将与整个张量程序的字节码进行任何切分操作。换句话说,在整程序结构化字节码中包括的是与张量程序对应的完整字节码。仅是在该调度器组件的处理过程中,实现了将整程序结构化字节码切分得到多个字节码分片。
可以理解的是,一个字节码分片与一个计算节点关联,不同字节码分片与不同计算节点关联。
S350、调用汇编器组件对每个字节码分片进行汇编处理,获取汇编器组件输出的与各字节码分片分别对应的可执行程序分片。
其中,汇编器为将汇编语言翻译为机器语言的程序;进一步的,汇编语言是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的。
其中,所述可执行程序分片是可在操作系统存储空间中浮动定位的二进制可执行程序。它可以加载到内存中,由操作系统加载并执行。
相应的,通过汇编器组件将每个字节码分片分别转换为匹配的可执行程序分片,可以进而将各可执行程序分片分发至各计算节点的操作系统中执行。同样的,一个可执行程序分片对应一个计算节点。
S360、将每个可执行程序分片分发至与可执行程序分片匹配的各计算节点的运行时虚拟机。
其中,所述虚拟机可以为通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
S370、获取各所述计算节点在执行所分配的可执行分片时反馈的实时性能数据,将所述实时性能数据序列化为性能字典,并使用所述性能字典更新所述性能代价模型。
其中,所述实时性能数据可包括:该所述计算节点在执行所分配的可执行分片时对应CPU的频率、缓存容量与性能、工作电压、运行方式与超标量等。进一步的,通过分析所述计算节点在执行所分配的可执行分片时反馈的实时性能数据可以得到所述计算节点在执行所分配的可执行分片时的效率与匹配度等。
其中,所述性能字典存储有各所述计算节点在执行所分配的可执行分片时反馈的实时性能数据的序列化结果。
需要说明的是,分布式计算集群实现对张量程序的编译执行的过程中,可以不执行S370,以减少各计算节点的计算负担,降低计算耗时,每个计算节点可以在本地保存上述各实时性能数据,并在完成上述编译执行操作后,再向监控节点上报各实时性能数据,以供监控节点完成对所述性能代价模型,以供下一次张量程序的整程序编译执行。
本发明实施例的技术方案,通过将张量程序源代码作为一个完整的整体进行编译优化得到整程序结构化字节码,通过对整程序结构化字节码的切分汇编得到可执行程序分片,分发每个可执行分片到对应的运行时的虚拟机,并加载可执行的程序运行以完成张量程序的整程序的执行。通过本实施例的技术方案,优化了设备的协同优化,提高了程序兼容性,增大了调度空间以及优化了自动化系统。
具体应用场景
为了更清楚的表述本发明实施例提供的技术方案,图3b是本发明实施例三所适用的一种具体应用场景的流程图。
其中,在本实施例编译码阶段时,如图3b所示,张量程序源代码通过语法分析器处理获得整程序高层程序中间表示,再利用性能代价模型将整程序高层程序中间表示处理为整程序高层程序结构化中间表示,经过程序优化后通过程序下沉最终将张量程序源代码编译码转化为整程序底层程序结构化中间表示最终生成整程序结构化字节码,具体步骤如下:
步骤一:输入张量程序源代码;
步骤二:通过语法分析器生成AST;
步骤三:AST转换获得高层中间表示;
步骤四:程序并行切分与设备分配优化器,查询性能代价模型,生成优化策略;
步骤五:程序并行切分与设备分配优化器,将高层程序中间表示转换为高层程序结构化中间表示;
步骤六:执行程序的编译优化变形:多个模块串联完成,每个模块输入程序与输出程序均为高层程序结构化中间表示;
步骤七:执行程序下沉操作:将高层程序结构化中间表示转化为整程序底层程序结构化中间表示;
步骤八:生成整程序结构化字节码。
其中,在本实施例运行阶段时,具体的运行阶段流程如图3c所示。具体步骤如下:
步骤一:运行时系统读入整程序结构化字节码;
步骤二:运行调度器对整程序结构化字节码进行调度与切分,输出字节码分片;
步骤三:运行汇编器对每个字节码分片进行汇编,输出可执行程序分片;
步骤四:分发每个可执行分片到对应的运行时虚拟机;
步骤五:每个运行时虚拟机启动对应的计算设备,并加载可执行程序运行。
其中,运行时系统读入编译码阶段时得到的完整的整程序结构化字节码,通过运行调度器对整程序结构化字节码进行切分生成字节码分片;通过汇编器对多种类型的字节码分片进行汇编;其中,所述汇编操作包括字节码分片类型的分类与将同一种类型的字节码进行汇总等;字节码分片汇编完成后,通过性能代价模型分析,将每个可执行分片分发至对应运行的虚拟机;其中对应运行的虚拟机为在运行该种类型的可执行分片时实时性能数据最好以及存在空闲至少一个CPU的虚拟机;每个运行时虚拟机启动对应的计算机设备,并加载可执行程序运行
在本具体应用场景中,通过上述步骤,可以实现张量程序源代码,尤其是大规模张量程序源代码的计算;其中,大规模张量程序源代码指无法通过本地设备或单一设备完成计算的尺度较大的张量程序源代码;进一步的,大规模张量程序源代码可以包括层数不少于20层、单层张量计算核尺寸超过1024M和计算式对设备内存占用超过1024M的张量程序源代码等。
在本具体应用场景中,在通过性能代价模型分析,将每个可执行分片分发至对应运行的虚拟机后,优化代价模型,及支持动态的代价模型,以及可以实现基于代价模型的自动并行优化策略。现有技术中并行训练库与计算框架是独立的两个模块,而代价模型的数据需要采集自计算框架中的运行时模块;而代价模型使用则是在并行策略的决定阶段,也就是在并行训练库中使用。因此,容易理解的,主流技术方案中代价模型的数据来源与数据的使用者存在固有的隔离,因此难以实现。而本实施例采用一体化的设计,通过上述步骤,将张量程序源代码作为一个完整的整体进行编译优化,相对于现有技术,不需要分离的软件模块来支持不同的功能,而是整体处理与解决,优化了系统的协同性,提高了系统的兼容性的同时,增加了系统的调度空间。
进一步的,在本实施例中,性能代价模型的更新具体步骤如下所述:
步骤一:运行时系统中的性能检测模块在实际加载运行时期,收集设备性能数据;
步骤二:性能检测模块将数据序列为性能字典;
步骤三:代价模型数据库根据性能检测模块返回的观测数据进行资料更新。
进一步的,由于本实施例将张量程序源代码作为一个完整的整体进行编译优化且本实施例的编译模块采用层次化的中间程序表示,支持多程序多数据的执行模式,减少了大规模集群上的自动化优化困难度。
实施例四
图4为本发明实施例四提供的一种张量程序的整程序编译装置的结构示意图。如图4所示,该装置包括:高层中间表示获取模块410、高层结构化中间表示转换模块420以及结构化字节码转换模块430,其中:
高层中间表示获取模块410,用于获取与张量程序源代码匹配的整程序高层程序中间表示;
高层结构化中间表示转换模块420,用于查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;
结构化字节码转换模块430,用于将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
本发明实施例的技术方案,通过计算集群中的监控节点查询预先构建的性能代价模型,将张量程序源代码最终转换为整程序结构化字节码的方式,完成了张量程序的整程序编译过程,实现了由单一节点将大规模张量程序作为整体进行编译优化的新方式,编译器能够在编译阶段对完整的大规模张量程序进行切分与分配,得到整个计算集群上的全局优化方案,同时,本发明实施例的技术方案可以支持多程序多数据的执行模式,具有更大的优化搜索空间和优化潜力。
在上述各实施例的基础上,高层中间表示获取模块410可以包括:
数据规模计算单元,用于获取待编译的张量程序源代码,并计算所述张量程序源代码的数据规模;如果所述数据规模超过预设的数据规模门限,则获取与张量程序源代码匹配的整程序高层程序中间表示。
抽象语法树生成单元,用于通过语法分析器对所述张量程序源代码进行处理,得到与所述张量程序源代码匹配的抽象语法树;将所述抽象语法树转换为所述整程序高层程序中间表示。
在上述各实施例的基础上,高层结构化中间表示转换模块420可以包括:
基本块生成单元,用于将所述整程序高层程序中间表示划分为多个基本块,每个基本块中包括所述整程序高层程序中间表示内的局部代码。
计算图生成单元,用于根据各基本块中局部代码的执行顺序,生成与所述整程序高层程序中间表示对应的计算图;其中,所述计算图由多个顶点相连构成,一个顶点中分配有一个基本块,顶点间的连接顺序与基本块中局部代码间的执行顺序相匹配。
计算图设置单元,用于查询预先构建的性能代价模型,确定各基本块与计算集群中各计算节点之间的分配关系;根据所述分配关系对所述计算图进行设置,得到所述整程序高层程序结构化中间表示。
在上述各实施例的基础上,结构化字节码转换模块430可以包括:
优化单元,用于依次调用多个高层程序优化变形组件,对整程序高层程序结构化中间表示中的每个顶点的基本块进行优化处理。
下沉单元,用于执行程序下沉操作,将整程序高层程序结构化中间表示转换为整程序底层程序结构化中间表示;根据整程序底层程序结构化中间表示,生成所述整程序结构化字节码。
调度单元,用于调用调度器组件,对整程序结构化字节码进行调度切分,获取调度器组件输出的多个字节码分片。
汇编单元,用于调用汇编器组件对每个字节码分片进行汇编处理,获取汇编器组件输出的与各字节码分片分别对应的可执行程序分片。
分配单元,用于将每个可执行程序分片分发至与可执行程序分片匹配的各计算节点的运行时虚拟机,以完成张量程序的控制执行过程。
性能字典优化单元,用于获取各所述计算节点在执行所分配的可执行分片时反馈的实时性能数据;将所述实时性能数据序列化为性能字典,并使用所述性能字典更新所述性能代价模型。
本发明实施例所提供的一种张量程序的整程序编译装置可执行本发明任意实施例所提供的张量程序的整程序编译方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如实现如本发明实施例所述的一种张量程序的整程序编译方法。
也即,所述方法包括:
获取与张量程序源代码匹配的整程序高层程序中间表示;
查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;
将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
在一些实施例中,张量程序的整程序编译方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的张量程序的整程序编译方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行张量程序的整程序编译方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
实施例六
图6a为可以用来实施本发明的实施例的计算集群的结构示意图,如图6a所示,该计算集群包括:
多个计算机节点,各计算机节点之间通过线缆链接或者无线链接的方式实现点对点的通信连接;
其中,所述各计算机节点之间的无线连接方式可以包括:PCIe switch(Peripheral Component Interconnect express switch,高速串行计算机扩展总线交换机)与EDR InfiniteBand(Enhanced Data Rate InfiniteBand,蓝牙增强速率无限频带)的无线网卡互联的集群连接方式。
进一步的,本实施例所采用的拓扑方式适用范围更广的拓扑连接形式,不仅包括典型的2d-mesh、2d-torus等拓扑,其他变形的拓扑也能适用。相比于传统方案,本专利对拓扑的方式具有更广的适用范围传统方案主要基于集成通信算子库中的集群算子来完成设备的数据交换,比如需要使用环形全规约、环形全聚集等多种算子。这些集成通信算子对网络拓扑的形式有着严格的要求,如需要在全网络中能找到完整的环形通路并通过所有节点等。本实施例在通信方案层面主要采用点对点传输,并通过编译静态分析的方式将点对点传输的操作拼合成为集群传输的传输算子核函数,从而驱动设备完成更灵活的集成通信。因此并不依赖于集成通信算子库中既有的实现,也不依赖拓扑链接方案严格的遵循典型的几种拓扑
计算机节点中包括至少一个计算设备,同一计算机节点内的多个计算设备通过线缆直连的方式互联,其中:
被配置为监控节点的计算机节点,用于执行如本发明任一实施例所述的张量程序的整程序编译方法;
被配置为计算节点的计算机节点,在内部的每个计算设备上分别安装运行时虚拟机,用于在通过运行时虚拟机接收到监控节点发送的可执行程序分片时,使用所适配的计算设备加载运行所分配的可执行程序分片。
本领域专业人员应可知,一块可执行本实施例方案的芯片为多个计算群组和存储模块,如图6b所示。非共享的存储资源是计算群组内部私有的,不需要通过总线连接,而是可以直接进行高效访问。图6b则出示了本发明实施例提供的一种共享的存储模块,存储模块与计算群组之间通过总线连接。本实施例对于计算群组与存储模块之间的共享或非共享组织形式没有强制要求,均可通过运行时的适配单元进行适配。
本发明实施例通过点对点的传输方式连接驱动设备,将存储模块与计算群组用总线相连接,实现了存储资源的共享化,提高了系统运行的效率,适应了当前多元化的计算形式与越来越大的计算规模,降低了整程序编译的复杂度。
其中,本实施例所提供的计算集群单个计算芯片内,会将大颗粒度的计算拆解成为并行的多个颗粒度较小的计算。并通过设备对硬件多线程的支持从而实现在计算设备上的小颗粒度的并行计算;进一步的,对于单组计算来说,通过向量指令集、超长指令字的特性支持张量层面上的直接运行。实现小尺寸张量、向量计算的封装;进一步的,多组计算间的并行,是通过硬件设备对指令级并行技术的支持,在超长指令字中实现数据地址的多发等手段,并结合基于多核架构中核级别的硬件线程为并行单位的方式来实现。故本实施例提供的计算集群具有如下特点:适用于超长指令字的芯片指令集架构;适用于支持指令集并行技术的计算机设备;适用于支持张量、向量指令集的设备;适用于多核芯片的核为硬件线程单位的计算设备。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (13)

1.一种张量程序的整程序编译方法,由计算集群中的监控节点执行,其特征在于,包括:
获取与张量程序源代码匹配的整程序高层程序中间表示;
查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;
将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
2.根据权利要求1所述的方法,其特征在于,获取与张量程序源代码匹配的整程序高层程序中间表示,包括:
获取待编译的张量程序源代码,并计算所述张量程序源代码的数据规模;
如果所述数据规模超过预设的数据规模门限,则获取与张量程序源代码匹配的整程序高层程序中间表示。
3.根据权利要求1所述的方法,其特征在于,获取与张量程序源代码匹配的整程序高层程序中间表示,包括:
通过语法分析器对所述张量程序源代码进行处理,得到与所述张量程序源代码匹配的抽象语法树;
将所述抽象语法树转换为所述整程序高层程序中间表示。
4.根据权利要求1所述的方法,其特征在于,查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示,包括:
将所述整程序高层程序中间表示划分为多个基本块,每个基本块中包括所述整程序高层程序中间表示内的局部代码;
根据各基本块中局部代码的执行顺序,生成与所述整程序高层程序中间表示对应的计算图;
其中,所述计算图由多个顶点相连构成,一个顶点中分配有一个基本块,顶点间的连接顺序与基本块中局部代码间的执行顺序相匹配;
查询预先构建的性能代价模型,确定各基本块与计算集群中各计算节点之间的分配关系;
根据所述分配关系对所述计算图进行设置,得到所述整程序高层程序结构化中间表示。
5.根据权利要求1所述的方法,其特征在于,在将整程序高层程序结构化中间表示转换为整程序结构化字节码之前,还包括:
依次调用多个高层程序优化变形组件,对整程序高层程序结构化中间表示中的每个顶点的基本块进行优化处理。
6.根据权利要求1所述的方法,其特征在于,将整程序高层程序结构化中间表示转换为整程序结构化字节码,包括:
执行程序下沉操作,将整程序高层程序结构化中间表示转换为整程序底层程序结构化中间表示;
根据整程序底层程序结构化中间表示,生成所述整程序结构化字节码。
7.根据权利要求1-6任一项所述的方法,其特征在于,在将整程序高层程序结构化中间表示转换为整程序结构化字节码之后,还包括:
调用调度器组件,对整程序结构化字节码进行调度切分,获取调度器组件输出的多个字节码分片,其中,每个字节码分片与设定计算节点关联;
调用汇编器组件对每个字节码分片进行汇编处理,获取汇编器组件输出的与各字节码分片分别对应的可执行程序分片;
将每个可执行程序分片分发至与可执行程序分片匹配的各计算节点的运行时虚拟机,以完成张量程序的控制执行过程;
其中,每个运行时虚拟机用于使用所适配的计算设备加载运行所分配的可执行程序分片。
8.根据权利要求7所述的方法,其特征在于,张量程序的整程序编译过程以及张量程序的控制执行过程,由监控节点中的不同进程执行。
9.根据权利要求7所述的方法,其特征在于,在将每个可执行分片分发至与可执行分片匹配的各计算节点的运行时虚拟机之后,还包括:
获取各所述计算节点在执行所分配的可执行分片时反馈的实时性能数据;
将所述实时性能数据序列化为性能字典,并使用所述性能字典更新所述性能代价模型。
10.一种张量程序的整程序编译装置,由计算集群中的监控节点执行,其特征在于,包括:
高层中间表示获取模块,用于获取与张量程序源代码匹配的整程序高层程序中间表示;
高层结构化中间表示转换模块,用于查询预先构建的性能代价模型,将整程序高层程序中间表示转换为整程序高层程序结构化中间表示;
其中,整程序高层程序结构化中间表示由多个顶点连接构成,顶点中分配有整程序高层程序中间表示内的局部代码且与计算集群中的计算节点关联;
结构化字节码转换模块,用于将整程序高层程序结构化中间表示转换为整程序结构化字节码,以完成张量程序的整程序编译过程。
11.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的张量程序的整程序编译方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-9中任一项所述的张量程序的整程序编译方法。
13.一种计算集群,其特征在于,包括多个计算机节点,各计算机节点之间通过线缆链接或者无线链接的方式实现点对点的通信连接;
计算机节点中包括至少一个计算设备,同一计算机节点内的多个计算设备通过线缆直连的方式互联,其中:
被配置为监控节点的计算机节点,用于执行如权利要求1-9中任一项所述的张量程序的整程序编译方法;
被配置为计算节点的计算机节点,在内部的每个计算设备上分别安装运行时虚拟机,用于在通过运行时虚拟机接收到监控节点发送的可执行程序分片时,使用所适配的计算设备加载运行所分配的可执行程序分片。
CN202211442570.7A 2022-11-18 2022-11-18 张量程序的整程序编译方法、装置、设备、介质及集群 Active CN115495095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211442570.7A CN115495095B (zh) 2022-11-18 2022-11-18 张量程序的整程序编译方法、装置、设备、介质及集群

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211442570.7A CN115495095B (zh) 2022-11-18 2022-11-18 张量程序的整程序编译方法、装置、设备、介质及集群

Publications (2)

Publication Number Publication Date
CN115495095A true CN115495095A (zh) 2022-12-20
CN115495095B CN115495095B (zh) 2023-03-21

Family

ID=85116127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211442570.7A Active CN115495095B (zh) 2022-11-18 2022-11-18 张量程序的整程序编译方法、装置、设备、介质及集群

Country Status (1)

Country Link
CN (1) CN115495095B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115951936A (zh) * 2023-01-17 2023-04-11 上海燧原科技有限公司 向量化编译程序的芯片适配方法、装置、设备及介质
CN116149797A (zh) * 2023-04-04 2023-05-23 上海燧原科技有限公司 面向异构场景的ai统一计算方法、装置、设备及介质

Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222791A1 (en) * 2008-02-29 2009-09-03 Sony Computer Entertainment Inc. Compiler Capable of Partitioning Program and Program Partitioning Method
US20100199257A1 (en) * 2009-01-31 2010-08-05 Ted James Biggerstaff Automated Partitioning of a Computation for Parallel or Other High Capability Architecture
US20130031536A1 (en) * 2011-07-28 2013-01-31 De Subrato K Apparatus and method for improving the performance of compilers and interpreters of high level programming languages
US20140189661A1 (en) * 2012-12-31 2014-07-03 Oracle International Corporation Self-optimizing interpreter and snapshot compilation
US20140359587A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Deeply parallel source code compilation
US20180107456A1 (en) * 2016-10-19 2018-04-19 1026 Labs, Inc. Preprocessing tensor operations for optimal compilation
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
US10691432B1 (en) * 2019-01-03 2020-06-23 Graphcore Limited Compilation method
CN111512307A (zh) * 2017-12-20 2020-08-07 皇家飞利浦有限公司 编译设备和方法
CN111580826A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111860816A (zh) * 2020-07-08 2020-10-30 Oppo广东移动通信有限公司 神经网络模型的编译方法、装置、设备及存储介质
US20200356373A1 (en) * 2017-07-19 2020-11-12 Università Degli Studi Di Siena Process for the automatic generation of parallel code
US20200364036A1 (en) * 2019-05-16 2020-11-19 Microsoft Technology Licensing, Llc Persistent annotation of syntax graphs for code optimization
CN112463159A (zh) * 2020-11-25 2021-03-09 安徽寒武纪信息科技有限公司 编译方法、装置、电子设备和存储介质
CN113283613A (zh) * 2021-07-23 2021-08-20 上海燧原科技有限公司 深度学习模型的生成方法、优化方法、装置、设备及介质
CN113821208A (zh) * 2021-06-18 2021-12-21 清华大学 用于深度学习算子的编译优化方法及系统
CN114091685A (zh) * 2021-11-08 2022-02-25 北京百度网讯科技有限公司 深度学习框架的张量切分方法、装置、设备和存储介质
CN114385181A (zh) * 2021-12-17 2022-04-22 飞腾信息技术有限公司 一种数据处理方法、装置、设备及计算机存储介质
CN114398080A (zh) * 2021-12-17 2022-04-26 飞腾信息技术有限公司 一种数据处理方法、装置、设备及计算机存储介质
CN114418127A (zh) * 2022-03-23 2022-04-29 阿里云计算有限公司 机器学习计算优化方法和平台
CN114461221A (zh) * 2022-01-27 2022-05-10 北京奕斯伟计算技术有限公司 编译方法、编译装置、电子设备、存储介质
US11372629B1 (en) * 2019-04-19 2022-06-28 Reservoir Labs, Inc. Systems and methods for tensor scheduling
CN114912587A (zh) * 2022-06-09 2022-08-16 上海燧原科技有限公司 神经网络分布式训练系统、方法、装置、计算单元及介质
US11467811B1 (en) * 2021-06-24 2022-10-11 Marvell Asia Pte Ltd Method and apparatus for generating metadata by a compiler
CN115220727A (zh) * 2022-06-07 2022-10-21 清华大学 面向利用Python语言编写的不规则张量程序的优化方法及装置

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222791A1 (en) * 2008-02-29 2009-09-03 Sony Computer Entertainment Inc. Compiler Capable of Partitioning Program and Program Partitioning Method
US20100199257A1 (en) * 2009-01-31 2010-08-05 Ted James Biggerstaff Automated Partitioning of a Computation for Parallel or Other High Capability Architecture
US20130031536A1 (en) * 2011-07-28 2013-01-31 De Subrato K Apparatus and method for improving the performance of compilers and interpreters of high level programming languages
US20140189661A1 (en) * 2012-12-31 2014-07-03 Oracle International Corporation Self-optimizing interpreter and snapshot compilation
US20140359587A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Deeply parallel source code compilation
US20180107456A1 (en) * 2016-10-19 2018-04-19 1026 Labs, Inc. Preprocessing tensor operations for optimal compilation
US20200356373A1 (en) * 2017-07-19 2020-11-12 Università Degli Studi Di Siena Process for the automatic generation of parallel code
CN111512307A (zh) * 2017-12-20 2020-08-07 皇家飞利浦有限公司 编译设备和方法
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
US10691432B1 (en) * 2019-01-03 2020-06-23 Graphcore Limited Compilation method
US11372629B1 (en) * 2019-04-19 2022-06-28 Reservoir Labs, Inc. Systems and methods for tensor scheduling
US20200364036A1 (en) * 2019-05-16 2020-11-19 Microsoft Technology Licensing, Llc Persistent annotation of syntax graphs for code optimization
CN111580826A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111860816A (zh) * 2020-07-08 2020-10-30 Oppo广东移动通信有限公司 神经网络模型的编译方法、装置、设备及存储介质
CN112463159A (zh) * 2020-11-25 2021-03-09 安徽寒武纪信息科技有限公司 编译方法、装置、电子设备和存储介质
CN113821208A (zh) * 2021-06-18 2021-12-21 清华大学 用于深度学习算子的编译优化方法及系统
US11467811B1 (en) * 2021-06-24 2022-10-11 Marvell Asia Pte Ltd Method and apparatus for generating metadata by a compiler
CN113283613A (zh) * 2021-07-23 2021-08-20 上海燧原科技有限公司 深度学习模型的生成方法、优化方法、装置、设备及介质
CN114091685A (zh) * 2021-11-08 2022-02-25 北京百度网讯科技有限公司 深度学习框架的张量切分方法、装置、设备和存储介质
CN114385181A (zh) * 2021-12-17 2022-04-22 飞腾信息技术有限公司 一种数据处理方法、装置、设备及计算机存储介质
CN114398080A (zh) * 2021-12-17 2022-04-26 飞腾信息技术有限公司 一种数据处理方法、装置、设备及计算机存储介质
CN114461221A (zh) * 2022-01-27 2022-05-10 北京奕斯伟计算技术有限公司 编译方法、编译装置、电子设备、存储介质
CN114418127A (zh) * 2022-03-23 2022-04-29 阿里云计算有限公司 机器学习计算优化方法和平台
CN115220727A (zh) * 2022-06-07 2022-10-21 清华大学 面向利用Python语言编写的不规则张量程序的优化方法及装置
CN114912587A (zh) * 2022-06-09 2022-08-16 上海燧原科技有限公司 神经网络分布式训练系统、方法、装置、计算单元及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JONY00917: "TensorFlow技术内幕(一):导论", 《HTTPS://WWW.JIANSHU.COM/P/1DC3907596B3》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115951936A (zh) * 2023-01-17 2023-04-11 上海燧原科技有限公司 向量化编译程序的芯片适配方法、装置、设备及介质
CN116149797A (zh) * 2023-04-04 2023-05-23 上海燧原科技有限公司 面向异构场景的ai统一计算方法、装置、设备及介质

Also Published As

Publication number Publication date
CN115495095B (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
CN115495095B (zh) 张量程序的整程序编译方法、装置、设备、介质及集群
Sengupta et al. Graphreduce: processing large-scale graphs on accelerator-based systems
US8799880B2 (en) Parallelization of PLC programs for operation in multi-processor environments
US11385931B2 (en) Method, electronic device, and computer program product for processing computing job
US9684493B2 (en) R-language integration with a declarative machine learning language
CN111860816A (zh) 神经网络模型的编译方法、装置、设备及存储介质
Cai et al. Tensoropt: Exploring the tradeoffs in distributed dnn training with auto-parallelism
CN110705716A (zh) 一种多模型并行训练方法
Yun et al. Adaptive genetic algorithm for energy-efficient task scheduling on asymmetric multiprocessor system-on-chip
Celik et al. A novel simulated annealing-based optimization approach for cluster-based task scheduling
US20220172044A1 (en) Method, electronic device, and computer program product for deploying machine learning model
Zhou et al. Makespan–cost–reliability-optimized workflow scheduling using evolutionary techniques in clouds
CN117271101A (zh) 一种算子融合方法、装置、电子设备及存储介质
CN116775041A (zh) 基于流计算框架和rete算法的大数据实时决策引擎
Chennupati et al. On the efficiency of multi-core grammatical evolution (MCGE) evolving multi-core parallel programs
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
Li et al. An application-oblivious memory scheduling system for DNN accelerators
CN107256158B (zh) 电力系统负荷削减量的检测方法和系统
Uscumlic et al. Design space exploration with deterministic latency guarantees for crossbar mpsoc architectures
Li et al. CoCoPIE XGen: A Full-Stack AI-Oriented Optimizing Framework
Jing et al. An Automatic Task Partition Method for Multi-core System
Ghannane et al. Diviml: A module-based heuristic for mapping neural networks onto heterogeneous platforms
CN116089050B (zh) 一种异构自适应任务调度方法
US11836531B2 (en) Method, device, and program product for managing computing system
US20230409289A1 (en) Data processing apparatus and method

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
CP03 Change of name, title or address

Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Patentee after: Shanghai Suiyuan Technology Co.,Ltd.

Country or region after: China

Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address