首页> 中国专利> 用于在并行异构系统上执行算法的系统和方法

用于在并行异构系统上执行算法的系统和方法

摘要

本发明提供了一种用于生成在处理系统,尤其是分布式处理系统上执行的代码的装置,包括:计算机程序的中间表示(intermediate representation,IR);解释器,用来评估所述中间表示,而所述解释器用于:接收反馈信息,所述反馈信息包括关于所述处理系统的信息;以及基于所述反馈信息来调整所述IR。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-14

    授权

    授权

  • 2017-09-22

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20150119

    实质审查的生效

  • 2017-08-29

    公开

    公开

说明书

技术领域

本申请涉及计算机技术领域,尤其涉及一种用于在并行异构系统上执行算法的系统和方法。

背景技术

本发明在其一些实施例中涉及用于优化程序执行的系统和方法,更具体地但非唯一地,涉及用于优化分布式和/或异构处理系统中的程序执行的系统和方法。

异构处理平台的规模、处理器指令集架构(instruction set architecture,ISA)、通信架构和存储器架构存在巨大差异。例如,与拥有10000个多核CPU服务器的计算云之类的同质处理系统对比,具有片上系统(system-on-chip,SOC)的蜂窝电话包括自定义专用集成电路(application specific integrated circuit,ASIC)、图形处理器(graphicprocessing unit,GPU)和小型双核中央处理器(central processing unit,CPU)的组合。

以高级语言编写的同一程序可编译成在不同目标异构分布式处理系统中执行的机器可执行代码。每个目标处理系统可具有一个不同的架构。因此,相同的机器可执行指令的性能水平可能不同,取决于执行系统的架构。对于一个系统,程序可能快速执行,而对于另一系统,同一程序可能执行地非常慢。

一种针对基于目标异构系统提高程序性能的问题的方案是为每种特定目标硬件配置手动定制代码。这种手动编码耗时且容易出错。

如果可能,另一种方案是在由相似的处理平台组成的计算云之类的同质系统中执行代码。

针对上述问题提出的另一种方案是从源代码生成基于图形的中间表示(intermediate representation,IR)。IR是高级程序的机器无关表示。IR可在编译期间优化,以生成程序的多种设备特定实施方式。例如,产生两个机器可执行版本,第一版本适合在通用中央处理器上执行,第二版本适合在专用图形处理器上执行。运行时环境根据架构选择执行哪种变体。

发明内容

本发明的目的是改进在处理系统中执行的代码的代码生成。

前述和其它目标通过独立权利要求的特征来实现。其它实施方式从从属权利要求、描述内容和附图中显而易见。

根据第一方面,一种用于生成在处理系统,尤其是分布式处理系统上执行的代码的装置包括:计算机程序的中间表示(intermediate representation,IR);解释器,用来评估所述中间表示,而所述解释器用于:接收反馈信息,所述反馈信息包括关于所述处理系统的信息;以及基于所述反馈信息来调整所述IR。

在编译时需要知道目标系统架构。所述装置执行所述计算机程序的运行时调整,以基于所述处理系统的状态和/或动态变化来改变所述程序的行为。所述计算机程序对其自身进行重配置,以适应所述处理系统的架构中的变化。在遇到先前未知的处理架构时,执行程序可对其自身进行重配置。所述执行程序可对其自身进行重配置以在由不同子架构(例如,不同的节点处理器架构)组成的目标异构系统上执行。

根据所述第一方面,在所述装置的第一可能实施形式中,所述IR包括依赖数据流图形,表示所述计算机程序的计算流程;所述图形包括以下元素:表示一个或多个数据操作的节点,表示所述数据操作的一个或多个参数的边缘,尤其是入边缘,表示所述数据操作的一个或多个结果的边缘,尤其是出边缘;和/或一个或多个规则,其对如何评估所述IR,尤其是所述数据流图形的所述元素,进行编码。

一个或多个规则与图形节点关联,支持程序执行基于受影响图形节点进行有效的运行时调整。基于DIR的图形可有效地重优化和/或重编译。

根据所述第一方面的所述第一实施形式,在所述装置的第二可能实施形式中,所述解释器用于响应于所述反馈信息而调整所述IR,从而执行以下操作中的至少一个:将至少一个新规则添加到所述IR、撤销所述IR的至少一个预先存在的规则、改变所述IR中的至少一个预先存在的规则。

评估的规则可触发先前存在的规则的自适应,从而支持例如基于递归的复杂运行时调整。

根据如上所述第一方面或根据所述第一方面的任一前述实施形式,在所述装置的第三可能实施形式中,所述解释器还用于集中生成部分物化的IR,所述部分物化的IR可由多个目标分布式处理系统作为全物化本地IR的本地调整和本地生成的基础来执行,用于某一分布式处理系统中多个节点中的每个节点处的本地执行。

集中IR基于可用全局信息进行部分编译,无需生成全局完整程序。部分编译的代码被发送到每个节点,以基于本地节点条件进行本地编译和调整。

根据如上所述第一方面或根据所述第一方面的任一前述实施形式,在所述装置的第四可能实施形式中,所述某一分布式处理系统的多个节点中的每个单独节点包括一个本地解释器以评估集中生成的调整后IR,而所述解释器用于:接收本地反馈信息,所述本地反馈信息包括关于所述某一分布式处理系统的本地信息;以及基于所述本地反馈信息本地调整所述集中生成的调整后IR。

所述集中调整后IR在各个节点处本地调整以创建不同的版本,对每个版本进行优化以在所述本地节点处执行。每个节点处的调整可以不同,取决于本地节点架构和其它本地条件。

根据如上所述第一方面或根据所述第一方面的任一前述实施形式,在所述装置的第五可能实施形式中,所述解释器还用于向中央调度器提供所述调整后IR,所述中央调度器用于集中调度所述调整后IR以针对每个单独节点处的多个相应目标架构,在每个单独节点处本地执行。

中央调度器能够在不知道目标节点处的架构和处理条件的情况下调度所述调整后IR在所述目标节点上的处理。

根据所述第一方面的所述第三、第四或第五实施形式,在所述装置的第六可能实施形式中,所述装置还包括所述多个节点中的每个单独节点处的一个本地规则集,所述规则对如何评估所述本地调整后IR,尤其是所述本地调整后IR的所述本地数据流图形的所述元素,进行编码。

所述本地规则集用于基于本地架构和/或本地条件等使所述计算机程序适应(例如,所述本地节点处的)本地环境。不同的本地处理环境可以具有不同的本地规则集,从而以自定义的灵活性使同一计算机程序以不同的方式适应各个本地环境。

根据如上所述第一方面或根据所述第一方面的任一前述实施方式,在所述装置的第七可能实施形式中,所述反馈信息从包含以下项的组中选择:所述处理系统的图形拓扑表示的模式、所述处理系统的处理系统拓扑的模式、基于所述处理系统的至少一个系统运行时变量的至少一个逻辑表达式、所述计算机程序的至少一个函数和参数的模式。

所述调整通过不同的反馈信息触发,从而响应于各方面的改变而提供灵活性。遇到新情况可通过调整动态地处理。动态运行时调整由以下一项或多项触发:DIR表示自身、所述分布式处理系统的架构、运行时系统变量、执行代码。

根据如上所述第一方面或根据所述第一方面的任一前述实施方式,在所述装置的第八可能实施形式中,调整所述IR从包含以下项的组中选择:动态调整表示所述计算机程序的计算流程的运行时图形、调整所述计算机程序中的操作、重编译所述计算机程序的一个或多个部分以在某一平台上进行优化、更新触发一个或多个规则的变量。

不同参数可以动态调整,从而使系统能够灵活地以不同方式进行响应。可选择最佳响应。可改变代码自身,可替换不同代码,可基于参数变化编译新代码以进行优化,并且可触发其它规则。

根据如上所述第一方面或根据所述第一方面的任一前述实施形式,在所述装置的第九可能实施形式中,包含在所述IR中的一个规则集基于一种基于规则的语言实施为应用编程接口。

所述规则集独立于所述IR。所述规则集例如由不同的程序设计员从用于生成所述IR的源代码分别编写。同一个规则集可应用到不同的计算机程序。同一计算机程序的同一IR可使用例如不同组织处的不同规则集进行调整。

根据如上所述第一方面或根据所述第一方面的任一前述实施形式,在所述装置的第十可能实施形式中,所述解释器还用于向低级编译器提供所述调整后IR以编译和生成低级代码,以供在所述处理系统中执行。

所述计算机程序通过更新所述DIR和重编译所述DIR来触发其自身的修改,以生成更新后的计算机可执行代码。所述更新后DIR的重编译可更有效地优化,从而产生优化的更新后可执行代码。

根据如上所述第一方面或根据所述第一方面的任一前述实施方式,在所述装置的第十一可能实施形式中,所述反馈信息包括从包含以下成员的组中选择的至少一个成员:添加新处理单元、移除现有处理单元、进程失败、处理单元失败、处理单元的可用性发生变化、处理资源的可用性发生变化、输入数据发生变化、处理复杂度发生变化。

所述可执行代码在运行时期间的调整由常发生在分布式处理系统中的一个或多个场景触发。

根据如上所述第一方面或根据所述第一方面的任一前述实施方式,在所述装置的第十二可能实施形式中,所述装置还包括:数据库,用于存储从所述调整后DIR编译而来的计算机可执行代码,以供将来在执行类似规则集的评估时重用。

在运行时期间存储通过重编译和可选重优化而生成的所述可执行代码的不同版本使得将来遇到类似的系统条件时可使用所述代码。所述代码可在不重复生成所述代码的处理步骤的情况下重用。

根据第二方面,提供了一种用于生成在处理系统,尤其是分布式处理系统上执行的代码的方法,包括:提供计算机程序的中间表示(intermediate representation,IR);接收反馈信息,所述反馈信息包括关于所述处理系统的信息;以及基于所述反馈信息来调整所述IR。

根据第三方面,提供了一种包括可读存储介质的计算机程序产品,所述可读存储介质上存储有程序代码,供解释器来评估计算机程序的中间表示(intermediaterepresentation,IR),所述程序代码包括:用于接收反馈信息的指令,所述反馈信息包括关于执行所述计算机程序的处理系统,尤其是分布式处理系统的信息;以及用于基于所述反馈信息调整所述IR的指令。

除非另外限定,否则本文所使用的所有技术术语和/或科学术语均具有本发明所涉及的本领域的普通技术人员共同理解的相同意思。虽然类似于或等同于本文所描述的那些方法和材料可以使用在本发明的实施例的实践中或测试中,但是以下描述了示例性方法和/或材料。在有冲突的情况下,以包括定义的专利说明书为准。此外,材料、方法和示例仅仅是示例性的并不旨在有必要地进行限制。

附图说明

此处仅作为示例,结合附图描述了本发明的一些实施例。现在具体结合附图,需要强调的是所示的项目作为示例,为了说明性地讨论本发明的实施例。这样,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。

在附图中:

图1是根据本发明一些实施例的在处理系统中执行的计算机程序的中间表示的运行时调整方法的流程图;

图2是根据本发明一些实施例的包括装置的系统的方框图,该装置执行在处理系统中执行的计算机程序的中间表示的运行时调整;

图3是根据本发明一些实施例的本地调整集中生成的中间表示以供本地执行的方法的流程图;

图4是根据本发明一些实施例的本地调整集中生成的中间表示以供本地执行的系统的方框图;

图5是根据本发明一些实施例的通过基于图2的系统的架构来实施图1的方法的示例的示意图;

图6是根据本发明一些实施例的通过基于图4的系统的架构来实施图3的方法的示例的示意图;

图7是根据本发明一些实施例的描绘中间表示的调整的示意图。

具体实施方式

本发明在其一些实施例中涉及用于优化程序执行的系统和方法,更具体地但非唯一地,涉及用于优化分布式和/或异构处理系统中的程序执行的系统和方法。

本发明一些实施例的一个方面涉及一种解释器模块,其基于反馈信息调整计算机程序的中间表示(intermediate representation,IR),该反馈信息包括关于计算机程序在其中执行的处理系统的信息。调整基于反映处理系统的当前状态的动态反馈信息实时执行。程序执行在运行时期间基于调整后IR动态变化。该模块支持设计用于在处理系统上执行的程序,以响应于程序执行期间的处理系统变化而动态地对程序自身进行重配置,而不是例如提前静态地定义程序的不同版本并选择要运行的版本,这将程序只限制为预定义的版本。解释器支持计算机程序使其自身适应分布式处理系统(distributed processingsystem,DPS)中的意外变化,和/或在遇到先前未知的处理架构时对其自身进行配置。解释器支持同一原始计算机程序通过该模块自动调整以在各种各样的分布式处理平台上有效运行。解释器可在系统中实施,作为方法执行,和/或存储为计算机程序产品,如本文所述。

可选地,调整根据基于反馈信息定义IR调整的一个规则集中的至少一个规则执行。该规则集可例如由不同的程序设计员从源代码分别定义和/或编程。可选地,该规则集使用一种不同的语言,可选地一种自定义的规则语言来定义。

在本文中,该规则集与IR合并称为动态中间表示(dynamic intermediaterepresentation,DIR)。术语DIR有时可与术语IR互换使用,例如,在调整DIR的数据流图形时,数据流图形是指DIR的IR部分。

可选地,DIR以高级抽象进行表示,可选地以依赖数据流图形进行表示,依赖数据流图形可在多个不同目标DPS架构和/或目标DPS编译器上执行。DIR可基于目标DPS架构的局部(或少许)认知来构造。使DIR适应某些目标架构由解释器在运行时期间基于来自某一目标DPS的反馈信息来动态执行。

可选地,将解释器组织为具有中央解释器模块的层次结构,中央解释器模块生成中央DIR以分布到多个处理节。每个处理节点包括一个本地解释器模块,其基于来自本地处理系统的本地反馈信息本地调整中央DIR。可选地,DIR的本地调整根据基于本地反馈信息定义调整的一个本地规则集来执行。每个节点可根据本地条件(例如,本地架构)以一种不同的方式来调整中央DIR。

可选地,DPS是包括不同架构和/或不同低级程序实施方式的异构分布式处理系统。异构分布式处理系统基于例如编程模型、通信模型、内存语义和处理器架构的多样性。

通过详细说明本发明的至少一项实施例,将会理解,本发明的应用不一定限于下文描述中陈述的和/或附图和/或示例中说明的部件和/或方法的构造和布置细节。本发明能够用于其它实施例或者能够以各种方式实践或执行。

本发明可以是一种系统、一种方法和/或一种计算机程序产品。计算机程序产品可包括一种计算机可读存储介质(或媒体),其上存储有计算机可读程序指令,用于使处理器执行本发明的各方面。

计算机可读存储介质可以是有形设备,该有形设备可保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是,例如但不限于电子存储设备、磁性存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述存储设备的任意合适组合。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者通过网络,例如互联网、局域网、广域网和/或无线网络下载到外部计算机或外部存储设备。

计算机可读程序指令可作为独立软件包全部在用户的计算机上执行、部分在用户的计算机上执行、部分在用户的计算机上且部分在远程计算机上执行,或全部在远程计算机或服务器上执行。在后一场景中,远程计算机可通过任意类型的网络连接到用户的计算机,这些类型的网络包括局域网(local area network,LAN)或广域网(wide areanetwork,WAN),或者可以(例如使用互联网服务提供商通过互联网)连接到外部计算机。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field-programmable gatearray,FPGA)或可编程逻辑阵列(programmable logic array,PLA)等的电子电路可使用计算机可读程序指令的状态信息来对电子电路进行个性化,从而执行计算机可读程序指令,以便执行本发明的各部分。

本发明的各方面在本文中参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或方框图进行描述。将理解,流程图图示和/或方框图中的每个方框以及流程图图示和/或方框图中的方框的组合可以通过计算机可读程序指令实现。

图中的流程图和方框图图示了根据本发明各实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这一方面,流程图或方框图中的每个方框可表示一个模块、片段或一部分指令,指令包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代性实施方式中,方框中提到的功能可不按照图中提到的顺序发生。例如,相继示出的两个方框,事实上可以基本上同时执行,或者这些方框有时可以按相反的顺序执行,取决于所涉及的功能。还应注意的是,方框图和/或流程图图示的每个方框以及方框图和/或流程图图示中的方框的组合可通过执行指定功能或动作或执行专用硬件和计算机指令组合的基于硬件的专用系统来实现。

现参考图1,图1是根据本发明一些实施例的用于在处理系统中执行的计算机程序的中间表示的运行时调整方法的流程图。还参考图2,图2是包括解释器模块的系统的部件的图,解释器模块支持计算机程序的IR在运行时期间响应于目标处理系统的反馈信息而动态适应目标处理系统。解释器模块使IR适应当前系统状态和/或发生于DPS执行计算机程序期间的动态变化,例如,一个或多个硬件部件发生故障、一个或多个部件的热插拔、动态优化和/或多个应用之间的硬件资源的动态划分。图1的方法可由图2的装置和/或系统执行。

本文描述的系统和/或方法无需知道IR编译时的目标系统架构。该方法执行计算机程序的运行时调整以基于处理系统的状态和/或动态变化来改变计算机程序的行为。系统对其自身进行重配置,以适应DPS架构变化。在遇到先前未知的处理架构时,执行程序可对其自身进行重配置。执行程序可对其自身进行重配置以在由不同子架构(例如,不同的节点处理器架构)组成的目标异构系统上执行。

可选地,在102处,解释器模块202接收计算机程序的中间表示(intermediaterepresentation,IR)。或者,解释器模块202接收计算机程序的源代码。源代码和/或IR可存储在与解释器模块202通信的204存储器上。该存储器可存储调整后IR的迭代。

计算机程序可以是一个完整的计算机程序、一个计算机程序的一部分,和/或单个算法。计算机程序可使用高级源代码格式、适合执行的低级代码格式,或可为预编译代码。

计算机程序旨在由处理系统执行,可选地由分布式处理系统208执行,可选地由异构分布式处理系统执行。例如,程序可解决由于以下原因而无法在单个计算节点上解决的计算问题:为解决该计算问题而需要处理大量信息。单个计算节点可能没有足够的内存和处理能力来在合理的时间量内解决该计算问题,或者可能根本无法处理该信息量(例如,本地内存不足)。

注意到,计算机程序的源代码可由(位于装置200中或装置200外部的)高级编译器处理以通过解析和/或编译源代码等方式来生成IR。或者,可通过现有计算机程序的反编译来生成IR。或者,从外部源获得IR。

用于生成IR的源代码可使用高级编程语言的应用编程接口来编写。该高级编程语言可以是领域专用语言(domain specific language,DSL)。DSL提供不直接与任何特定低级实施方式关联的高级抽象,从而支持多种可能的低级实施方式。DSL的示例包括旨在对机器学习、数据查询和图形算法领域中的应用进行编程的语言。

IR可包括表示计算机程序的计算流程的依赖数据流图形。该图形可包括以下元素:表示数据操作的节点、表示数据操作参数的入边缘、表示数据操作结果的出边缘。IR是机器无关的,有能力被编译以在不同的目标系统上执行。

在104处,解释器202接收一个规则集。该规则集对如何评估IR,尤其是数据流图形的元素,进行编码。该规则集根据反馈信息定义在计算机程序执行时的动态变化,以优化DPS 208中的计算机程序的性能。

该规则集可基于反馈信息定义IR的自适应优化和/或IR的编译规则。该规则集变换计算机程序的算法(表示为IR)以实现不同处理环境中的最佳执行。

可选地,该规则集基于一种基于规则的语言实施为应用编程接口(applicationprogramming interface,API)。该基于规则的语言旨在表达调整逻辑。该基于规则的语言可与用于编写源代码的语言不同。

该规则集独立于IR。该规则集例如由不同的程序设计员从用于生成IR的源代码分别编写。同一规则集可应用到不同的计算机程序。同一计算机程序的同一IR可使用例如不同组织处的不同规则集进行调整。

该规则集可存储在与解释器模块202通信的存储器204上。

可选地,每个规则被划分为一个谓词(其可通过规则语言表示为左手边(lefthand side,LHS))和一个关联动作(其可通过规则语言表示为右手边(right hand side,RHS))。

谓词的示例包括:处理系统的图形拓扑表示的模式匹配、处理系统的处理系统拓扑的模式匹配、基于处理系统运行时变量的逻辑表达式、处理系统性能指标(例如,可用内存和处理器使用率)、处理系统的函数和参数的模式匹配。

用于调整IR(例如,图形表示)的动作的示例包括:图形变换、图形划分、操作替代、操作融合和分离、调用第三方编译器来编译或重编译特定平台上的内核或优化、更新与其它谓词(它们可迭代触发其它规则)关联的变量。

可选地,在106处,通过将该规则集与IR合并来生成DIR。这些规则可与IR关联和/或映射到IR。可选地,DIR是包括IR和该规则集这两者的合并数据结构,例如,规则存储在IR的各个节点中。或者,DIR分别包括拥有IR和该规则集的数据结构。这些规则独立评估,所评估的规则的动作应用到IR。

DIR可在多个不同的目标DPS架构和目标DPS特定编译器上执行(或者可编译以供执行)。DIR在目标DPS的每个不同节点处可以有差异地执行。

一个或多个规则与图形节点关联,支持程序执行基于受影响图形节点进行有效的运行时调整。基于DIR的图形可有效地重优化和/或重编译。

在108处,解释器模块202接收反馈信息,反馈信息包括关于DPS 208的信息。反馈信息可由监控DPS 208的监控模块216获取,从而连续地、周期性地、基于事件和/或实时进行监控。监控模块216将反馈信息传输给解释器模块202以评估规则,如本文所述。

反馈信息可表示处理环境的当前状态和/或变化、算法自身的状态和/或变化,和/或执行程序在处理的输入数据的状态和/或变化,等等。

反馈信息的示例包括:添加新处理单元(例如,热插拔)、移除现有处理单元(例如,热插拔)、进程失败、处理单元失败、处理单元和/或其它资源的可用性发生变化(例如,由于多个用户和/或数据集变化)、可变输入数据类型和/或大小发生统计变化、处理资源的可用性发生变化、处理复杂度发生变化(例如,与输入相关的变化)。

可选地,反馈信息与一个或多个规则有关,例如,与一个或多个谓词关联,谓词包括如IR的图形拓扑表示的模式、DPS的处理系统拓扑的模式、基于一个或多个系统运行时变量的逻辑表达式、执行的计算机程序的函数和/或参数的模式。

在110处,响应于反馈信息而调整DIR。当基于反馈信息评估DIR的一个或多个规则时,触发调整。所评估的规则触发有关调整动作。

调整通过不同的参数触发,从而灵活地响应各方面的改变。遇到新情况可通过调整动态地处理。动态运行时调整由以下一项或多项触发:DIR表示自身、DPS架构、运行时系统变量、执行代码。

可执行代码在运行时期间的调整由常发生于DPS中的一个或多个场景触发。

DIR的规则和图像部件可一起、分别或独立调整。可选地,当规则被评估为真(true)(或者满足另一条件)时,例如规则的谓词,触发关联的调整动作。前一DIR版本的调整后版本在本文中称为调整后DIR。调整后DIR可以是前一DIR的(即,规则和/或图形的)子图形、前一DIR的分区、前一DIR的更新版本、前一DIR的部分删除版本,和/或前一DIR的修改版本。

可选地,在系统运行时评估和调用规则以调整DIR。

可选地,基于反馈信息评估规则以触发DIR中的相同规则或其它规则的调整,例如,将一个或多个新规则添加到DIR、撤销DIR中的一个或多个预先存在的规则和/或改变DIR的一个或多个预先存在的规则。所评估的规则可触发先前存在的规则的调整,从而支持基于递归等进行复杂运行时调整。

在DIR上执行的调整动作基于关联的触发规则,由规则的RHS动作定义。例如,动态调整表示计算机程序的计算流程的运行时图形、调整计算机程序中的操作、编译或重编译计算机程序的一个或多个部分以在某一目标平台进行优化、更新触发一个或多个其它规则的变量。

在112处,将调整后DIR传输给中央调度器210,中央调度器调度目标DPS 208中的计算机程序执行。中央调度器210集中调度调整后DIR以供在DPS 208的每个单独处理节点处进行本地执行。当DPS 208是异构系统时,每个处理节点可包括不同的目标架构。中央调度器能够在不知道目标节点处的架构和处理条件的情况下调度调整后DIR在目标节点上的处理。

不同参数可以动态调整,从而使系统能够灵活地以不同方式进行响应。可选择最佳响应。可改变代码自身,可替换不同代码,可基于参数变化编译新代码以进行优化,并且可触发其它规则。

可选地,为低级编译器212提供调整后DIR以编译和生成低级代码,以便在目标DPS208中执行。或者,或另外,低级编译器212从调整后DIR生成静态运行时数据流图形。低级代码和/或运行时图形被提供给中央调度器210以供调度。这样,DIR可基于DPS 208的当前状态触发其自己的部分或完全重编译。

低级编译器212可将调整后DIR编译为适合在目标DPS上执行的格式,例如,编译为目标二进制格式、便携型代码格式或具有节点的运行时数据流图形,其中这些节点表示由二进制或字节代码组成的操作。低级编译器212可以是基于高级编程语言的目前现成的编译器,例如,编译调整后DIR(当其在没有规则集的情况下提供时,对使用可识别IR格式的低级编译器显示)的DSL后端编译器。

计算机程序可通过更新DIR和重编译DIR来触发其自身的修改,以生成程序的更新后计算机可执行代码。更新后DIR的重编译可更有效地优化,从而产生优化的更新后可执行代码。

可选地,编译代码存储在代码存储库(例如,数据库)214中。将来在执行类似规则集的评估时可重用所存储的代码。在运行时期间存储通过重编译和可选重优化而生成的可执行代码的不同版本使得将来遇到类似的系统条件时可使用该代码。该代码可在不重复生成和/或编译代码的处理步骤的情况下重用,提高了系统性能。

可选地,解释器模块202集中生成部分物化的DIR,部分物化的DIR可通过多个目标DPS架构执行。部分物化的DIR被提供给目标DPS的每个处理节点,作为全物化本地DIR的本地调整和本地生成的基础,用于在本地处理节点处进行本地执行。集中IR基于可用全局信息进行部分编译,无需生成全局完整程序。部分编译的代码被发送到每个节点,以基于本地节点条件进行本地编译和调整。

部分、完整或划分的DIR被发送到中央调度器210以供执行调度。

现参考图3,图3是根据本发明一些实施例的本地调整集中生成的IR以供本地执行的方法的流程图。还参考图4,图4是系统部件的方框图,该系统包括:目标处理系统(例如,图2的DPS 208)的本地节点400,以及本地解释器模块402,该本地解释器模块支持计算机程序在运行时期间响应于本地环境的反馈信息而动态适应本地处理系统404。本地解释器模块402根据本地反馈信息评估计算机程序的集中生成的调整后IR。本地解释器模块402使中央DIR适应在处理节点对程序进行本地执行期间发生的本地动态变化,和/或适应本地系统状态。图3的方法可由图4的装置和/或系统执行。

集中调整后IR在各个节点处本地调整以创建不同的版本,对每个版本进行优化以在本地节点处执行。每个节点处的调整可以不同,取决于本地节点架构和其它本地条件。

在302处,在每个本地节点处接收至少一部分集中生成的DIR(其可能已经集中调整)。图2的调度器210可将DIR分发至本地节点。同一个集中生成的DIR可在每个本地节点处接收,以进行本地调整。或者,可将DIR的不同部分传输到每个单独节点,与被调度以供该单独节点执行的任务关联。或者,首先将中央DIR转换为运行时图形,运行时图形被传输到每个处理节点。或者,将中央DIR的IR部件传输到每个处理节点,无需中央规则集部件。

在304处,接收一个本地规则集。该本地规则集对如何评估本地调整后IR,尤其是本地调整后IR的本地数据流图形的元素,进行编码。每个规则与一个单独节点关联(例如,存储在与该节点通信的存储器中)。

该本地规则集用于,例如基于本地架构和/或本地条件,使计算机程序适应(例如,本地节点处的)本地环境。不同的本地处理环境可以具有不同的本地规则集,从而以自定义的灵活性使同一计算机程序以不同的方式适应各个本地环境。

该本地规则集可以具体相同的格式,和/或使用参考中央规则集描述的同一种(或相似的)基于规则的语言进行编写。

在306处,将该本地规则集与中央DIR合并以生成本地DIR。该本地规则集可映射到中央DIR的IR部件,可与中央DIR的中央规则集合并,和/或替代中央DIR的中央规则集。

在308处,从本地处理系统(local processing system,LPS)404接收本地反馈信息。本地反馈信息包括关于LPS 404的本地信息。

可选地,本地监控模块408执行LPS 404的监控,并将本地反馈信息传输给本地解释器模块402。

在310处,基于本地反馈信息调整中央DIR以生成本地DIR。或者,在已生成了本地DIR时,基于本地反馈信息调整本地DIR以生成调整后本地DIR。

在312处,将本地DIR或调整后本地DIR传输给本地调度器406以调度LPS 404中的执行。

在314处,重复方框308至312。当收到新的本地反馈信息时和/或当从触发本地规则评估的先前本地反馈信息中检测到变化时,可进行该重复以生成新的本地调整后DIR。

注意的是,方框302至314可在额外的多个层次等级中重复,例如,本地处理节点自身可以是包括多个子节点的本地分布式系统。

返回参考图1,在114处,重复方框108至112。当收到新的反馈信息时和/或当从触发规则评估的先前反馈信息中检测到变化时,可进行该重复以生成新的调整后DIR。

现参考图5,图5是根据本发明一些实施例的通过基于图2的系统的架构502来实施图1的方法的示例的示意图。

算法504例如由程序设计员以高级语言(例如,DSL)506编写为源代码。可选地,前端编译器508将源代码编译为IR。IR与算法特定优化规则512(例如,由程序设计员编写以优化程序的规则)合并以生成DIR。或者,前端编译器508接收规则510和源代码作为输入,并生成DIR(即,不输出不包含这些规则的IR)。

DIR解释器模块514从监控目标DPS的系统监控器516接收实时反馈信息。DIR解释器514基于收到的反馈信息评估规则,以执行以下动作:

*重写DIR 512,

*生成运行时图形518,其被传输到异构调度器526以在目标DPS处执行。

*通过优化器模块520优化DIR,通过后端编译器522(即,低级编译器)编译DIR。编译代码存储在操作存储器524中以供将来使用。将编译代码传输给异构调度器526以在DPS中执行。例如,当操作代码(例如,使用二进制格式和/或字节代码格式)对于系统平台丢失时或者需要更新时,触发重优化和重调度。

现参考图6,图6是根据本发明一些实施例的通过基于图4的系统的架构来实施图3的方法的示例的示意图。

集中生成DIR 602,如本文所述。DIR解释器604从目标DPS接收实时系统信息606作为反馈信息。基于反馈信息评估DIR 602的规则,以生成部分物化图形608。反馈信息可包括系统级详细内容,例如,可用节点的数量。将部分物化图形608传输到主调度器610以在本地节点612A和612B处进行调度。

现描述本地节点612A。为了清晰明了,由于相似,所以省略本地节点612B的描述。描述节点之间的元素差异。本地DIR解释器614A接收部分物化图形608。基于来自本地处理系统的本地反馈信息,本地DIR解释器614A可将部分物化图形608转换为本地全物化图形616A。注意的是,全物化图形616A和616B可以不同,基于本地反馈信息适应本地条件。或者,本地DIR解释器614A将部分物化图形608传输给本地编译器620A以生成低级代码。注意的是,本地编译器620A和620B可以不同,从而将同一个部分物化图形编译为适合在本地架构中执行的不同低级语言。生成的代码可保存在本地操作存储器622A中。本地调度器618A调度设备624A中的全物化图形616A和/或低级代码的执行。注意的是,设备624A和624B可以不同(即,架构不同)。

现参考图7,图7是根据本发明一些实施例的描绘中间表示的调整的示意图。注意的是,调整可集中执行,和/或在每个处理节点处本地执行。

DIR解释器模块704处理DIR 702。DIR 702包括IR部件,例如图形706,以及关联的规则708集部件。规则708包括一个或多个谓词,每个谓词与一个动作关联。这些谓词基于从目标DPS收到的实时系统信息710(即,反馈信息)进行评估,以触发有关动作。可(同时,或在不同迭代期间)生成不同的调整后DIR 712A和DIR 712B,它们可以是DIR 702的部分或完全重写版本。

现描述将本文描述的系统和/或方法应用到常见场景的示例。

在第一示例中,代码自动适应变化的处理环境。参考图1(假设现有IR),在108处,解释器模块接收关于在DPS中添加新处理节点的反馈信息。在110处,触发相应规则以通过根据新的处理节点数量重新划分IR来调整IR,将新节点纳入考虑。(为清晰起见,省略方框112至114)。在另一有关示例中,在108处,解释器模块接收反馈信息,反馈信息是关于输入负载阈值的基于从DPS收集到的统计的变化。在110处,触发相应规则以通过重构本地图形来调整IR,从而实现新分区平衡。

在第二示例中,将集中生成的DIR转发给本地节点以供本地优化和执行。参考图3,在302处,节点中的一个接收DIR,其中已为该DIR集中划分一个图形以在多个节点上运行。划分的图形包含运算x。在304和306处,将一个本地规则集映射到运算x。在308处,节点无法确定运算x在本地操作存储器中的实例,并向本地解释器提供有关反馈信息。在310处,评估与运算x有关的规则以确定在运算x丢失时执行什么操作。该规则触发对运算x的实例的搜索,这适用于节点的硬件。发现运算x的实例以高级DSL语言编写。该规则触发运算x的源代码重编译,产生的低级代码存储在操作存储器中以供将来使用。在312处,调度生成的低级代码。

在第三示例中,本地解释器修改现有规则以实施本地优化。参考图3,在302处,本地节点接收针对N个GPU划分的IR。在308处,本地节点接收关于本地GPU有时被另一进程使用的反馈信息。在310处,本地节点将一个规则添加到本地DIR,以检查当前GPU使用率以及当部分GPU已经在使用时重划分本地DIR。

在第四示例中,在集群中的不同处理器上逐步物化DIR。参考图1,主节点在不知道各个从节点处的哪些处理器可用的情况下将IR划分到从节点。参考图3,各个从节点重评估并重划分中央IR以生成适用于各个从节点的处理器的本地DIR。

在第五示例中,调整DIR以添加一种先前未知类型的处理器。参考图3,在302处,节点从主调度器接收集中划分的IR。在308处,向本地解释器提供反馈信息,反馈信息指示检测到系统先前已知的一种新类型的片上系统(system on a chip,SOC)。在310处,本地解释器将SOC转换逻辑添加到本地DIR,并重新解释本地DIR。针对新架构生成并优化正确的低级代码。生成的代码存储在本地存储库(例如,操作存储器)中以供将来使用。在312处,在新架构上执行新的低级代码。

第六示例涉及算法特定优化规则。参考图1,在102和104处,创建具有唯一优化集的算法,设计一个关联的优化规则集与该算法一起工作。在106处,解释器模块将唯一算法规则添加到现有规则,以生成DIR。在110处,基于反馈信息将这些唯一规则与缺省规则一起进行评估。当任一规则被触发时,解释器模块触发优化算法所需要的合适动作。生成的优化指令可存储在存储库(例如,操作存储器)中以供将来使用。在另一有关示例中,参考图1,在108处,向解释器模块提供反馈信息,指示节点A、B和C被确定为连续的并且各自包含GPU硬件。在110处,触发算法特定优化规则,从而调用将节点A、B和C融合为更有效的节点D的动作。节点A、B和C在DIR的图形中替换为节点D。

本发明各实施例的描述已出于说明目的提出,但并非旨在详尽无遗或限制所公开的实施例。对于本领域普通技术人员来说,许多修改和变体将是显而易见的,不脱离所描述的实施例的范围和精神。选择本文使用的术语是为了最好地说明实施例的原则、实际应用或相对于在市场中发现的技术的技术改进,或者是为了使具有本领域普通技术的其他人员能够理解本文公开的实施例。

预期在从本申请开始走向成熟的专利的生命周期中,将会开发出许多相关系统和方法,术语中间表示、反馈信息和解释器的范围旨在包括所有这类先验新技术。

本文使用的术语“约”是指±10%。

术语“包括”和“有”表示“包括但不限于”。这个术语包括了术语“由…组成”以及“本质上由…组成”。

短语“本质上由…组成”是指构造或方法可包括额外的材料和/或步骤,但前提是额外的材料和/或步骤不会实质上改变所要求保护的构造或方法的基本和新颖特性。

本文使用的单数形式“一个”和“所述”包括复数含义,除非上下文中另有明确说明。例如,术语“一个化合物”或“至少一个化合物”可包括多个化合物,包含其混合物。

此处使用的词“示例性的”表示“作为一个示例、实例或说明”。任何“示例性的”实施例并不一定理解为优先于或优越于其它实施例和/或并不一定排除其它实施例的特征的并入。

此处使用的词语“可选地”表示“在一些实施例中提供且在其它实施例中没有提供”。本发明的任意特定的实施例可以包括多个“可选的”特征,除非这些特征相互矛盾。

在本申请中,本发明各实施例可通过范围格式提出。应理解,以范围格式进行的描述仅仅是为了方便和简洁,不应理解为对本发明的范围的僵化限制。相应地,范围的描述应视为具体公开了所有可能的子范围以及该范围内的单独的数值。例如,范围的描述,例如从1至6,应视为已具体公开了子范围,例如从1至3,从1至4,从1至5,从2至4,从2至6,从3至6等等,以及该范围内所有单独的数字,例如1、2、3、4、5和6。无论范围多宽,这都适用。

当此处指出一个数字范围时,表示包括了在指出的这个范围内的任意所列举的数字(分数或整数)。短语“在第一个所指示的数和第二个所指示的数范围内”以及“从第一个所指示的数到第二个所指示的数范围内”和在这里互换使用,表示包括第一个和第二个所指示的数以及二者之间所有的分数和整数。

单个实施例也可以提供某些特征的组合,这些特征在各个实施例正文中有简短的描述。相反地,本发明的各个特征在单个实施例的正文中有简短的描述,也可以分别提供这些特征或任何适合的子组合或者作为本发明所述的任何合适的其它实施例。不可认为各个实施例的正文中描述的某些特征是这些实施例的必要特征,除非没有这些元素,该实施例无效。

此处,本说明书中提及的所有出版物、专利和专利说明书都通过引用本说明书结合在本说明书中,同样,每个单独的出版物、专利或专利说明书也具体且单独地结合在此。此外,对本申请的任何参考的引用或识别不可当做是允许这样的参考在现有技术中优先于本发明。就使用节标题而言,不应该将节标题理解成必要的限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号