CN107408051B - 用于处理系统上的程序的动态调度的系统和方法 - Google Patents
用于处理系统上的程序的动态调度的系统和方法 Download PDFInfo
- Publication number
- CN107408051B CN107408051B CN201580077742.7A CN201580077742A CN107408051B CN 107408051 B CN107408051 B CN 107408051B CN 201580077742 A CN201580077742 A CN 201580077742A CN 107408051 B CN107408051 B CN 107408051B
- Authority
- CN
- China
- Prior art keywords
- flow graph
- processing
- runtime environment
- execution
- data
- 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.)
- Active
Links
Images
Classifications
-
- 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/44—Encoding
- G06F8/447—Target code generation
-
- 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/47—Retargetable compilers
-
- 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/44—Encoding
- G06F8/443—Optimisation
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
技术领域
本发明在其一些实施例中涉及用于优化程序执行的系统和方法,且更具体地但非排他地说,涉及用于编译器优化和/或程序的运行优化的系统和方法。
背景技术
以领域专用语言等高级语言编写的相同程序可编译成在不同目标处理系统内调度和执行的机器可执行代码。每个目标处理系统可具有不同处理配置(例如,架构)。因而,相同机器可执行指令可取决于目标执行系统的处理配置而以不同性能水平执行。对于一个系统,程序可快速执行,而对于不同系统,相同程序可能极其缓慢地执行。
当系统含有简单架构,例如含有具有相同架构的多个计算装置,例如多核心中央处理单元(central processing unit,CPU)时,编译器和运行优化基于(由高级语言编译的)低级指令的程序运算而执行静态资源分配。
在一些系统中,由源代码产生基于图形的中间表示(intermediaterepresentation,IR)。IR是高级程序的机器未知表示。可在编译期间优化IR,以产生用于不同已知处理配置的程序的多个装置专用实施方案。举例来说,生成两个机器可执行版本,即,针对当在通用中央处理单元上执行时的改进性能设计的第一版本,以及针对当在专用图形处理单元上执行时的改进性能设计的第二版本。运行环境取决于特定系统的处理配置来选择调度和执行何种变化。IR是静态的,且使用静态算法进行程序执行的分配和调度。
发明内容
本发明的一个目标是提供一种用于改编源代码以在运行环境中执行、任选地在分布式处理系统中执行的设备、系统、计算机程序产品和方法。
前述和其它目标通过独立权利要求的特征实现。另外的实施形式从附属权利要求、描述以及图式中显而易见。
根据第一方面,一种用于改编源代码的设备包括:用于接收源代码的接口;以及用于进行以下操作的编译器:编译源代码以创建流图;识别执行流图的运行环境的至少一个处理特征,以及根据至少一个处理特征调整流图以在运行环境中进行运算。
所述设备和/或方法可根据程序正在执行时运行环境的处理特征的状态而调整取决于所述处理特征的执行程序的部分(或整个程序)。举例来说,程序的计算复杂度可根据所提供的输入的统计值(例如,大小的分布)而变化,这可能需要不同算法和/或不同硬件用于高效处理输入。
在根据第一方面的设备的第一可能实施方案中,至少一个处理特征选自由至少一个硬件架构特征和至少一个输入数据特征组成的群组。
本文中所描述的设备和/或方法适应可用资源的改变和/或提供到执行程序的输入数据的统计分布或其它统计属性的改变。当执行计算机程序的计算复杂度不确定时,本文中所描述的系统和/或方法可取决于输入数据,例如关系代数图形计算,来分配可用硬件的计算资源。当运行环境是异构系统,包含具有不同架构的计算装置,例如CPU和图形处理单元(graphical processing unit,GPU)时,此类分配问题解决起来很复杂。
在根据第一方面的设备的第二可能实施方案中,编译器用于接收在运行时运行环境的至少一个资源的可用性;其中至少一个处理特征是运行环境的至少一个资源的可用性。
根据资源的可用性改编流图,从而使用可用资源来改进性能。举例来说,可根据资源的可用性通过流图来调整资源的调度和分配。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第三可能实施形式中,至少一个处理特征是运行环境的多个处理器的硬件架构;其中编译器用于根据至少一个处理架构特征调整流图,以指示执行一些功能时的并行性。
本文中所描述的设备和/或方法可通过考虑可用硬件架构来调度处理以改进性能结果。
在根据第一方面的第三实施形式的设备的第四可能实施形式中,设备另外包括用于当由运行环境执行流图时指示并行性的运行模块。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第五可能实施形式中,设备另外包括用于当由运行环境执行流图时进行调度执行和调度数据传送中的至少一个的运行模块。
可调度流图进行集中和/或局部执行。可集中地和/或局部地改编流图,从而提供流图能够适应执行环境以改进性能的额外方式。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第六可能实施形式中,设备另外包括用于当由运行环境执行流图时计算以下中的至少一个的运行模块:资源分配、内核编译,和内核程序库关联性。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第七可能实施形式中,设备另外包括用于当由所述运行环境执行所述流图时监控在运行系统处接收的输入数据且相应地估计至少一个输入数据特征的运行模块。
监控运行环境以允许实时适应先前未知的运行环境的改变,以便根据输入数据和/或资源可用性进行改编。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第八可能实施形式中,流图将至少一个计算功能定义为以下中的至少一个:用公式表示为接收至少一个处理特征作为输入变量参数,且指定为根据对输入变量参数的分析输出用于改编由运行环境进行的执行的指令;用公式表示为接收至少一个处理特征作为输入变量参数,且输出用于路由流图中的数据流的指令。
流图可改编其在运行环境中执行的方式和/或进行自身转换,从而提供针对改进性能的多个不同改编等级。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第九可能实施形式中,流图包括执行以下中的至少一个的指令:根据至少一个处理特征选择多个不同计算模式中的一个;以及将运行环境的资源分配到定义为流图中节点的来自多个功能的选定功能。
流图可通过根据处理特征选择最佳计算模式且分配最合适的资源执行计算来改进性能。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第十可能实施形式中,流图将源代码中的多个功能建模为多个节点且将多个功能之间的数据流建模为边缘。
互连节点表示可通过使用图形转换法来转换、通过使用基于图形的编译器优化方法来优化,和/或提供与产生图形表示的其它系统的兼容性。
在根据第一方面的先前第十实施形式的设备的第十一可能实施形式中,编译器用于:创建至少一个新节点,且根据至少一个处理特征调整流图,以转送多个节点中的一些供至少一个新节点处理。
流图可通过转换而调整,从而改变流图的算法和/或流图的处理功能,以改进处理特征的相关性能。
在同样根据第一方面或根据第一方面的任何先前实施形式的设备的第十二可能实施形式中,编译器用于调整流图,以在根据运行环境的执行结果选定的不同路径中路由数据流。
流图自身可转换以改进执行性能。
根据第二方面,提供一种用于改编源代码的方法,所述方法包括:编译源代码以创建流图;识别执行流图的运行环境的至少一个处理特征;以及根据至少一个处理特征调整流图以在运行环境中进行运算。
根据第三方面,提供一种计算机程序产品,所述计算机程序产品包括在其上存储有用于改编源代码的程序代码的可读存储媒体,所述程序代码包括:用于编译源代码以创建流图的指令;用于识别执行流图的运行环境的至少一个处理特征的指令;以及用于根据至少一个处理特征调整流图以在运行环境中进行运算的指令。
除非另外定义,否则本文中所使用的所有技术和/或科学术语都具有与本发明所涉及的领域的技术人员通常所理解相同的含义。尽管与本文中所描述的方法和材料类似或等效的材料和方法可以用于本发明的实施例的实践或测试,但下文描述示例性方法和/或材料。倘若有冲突,将以包含定义的本专利说明书为准。另外,材料、方法和实例仅为说明性的且并不意图为必定限制性的。
附图说明
此处仅作为示例,结合附图描述了本发明的一些实施例。现在具体结合附图,需要强调的是所示的项目作为示例,为了说明性地讨论本发明的实施例。这样,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。
在附图中:
图1是根据本发明的一些实施例的源代码流图调整方法的流程图;
图2是根据本发明的一些实施例包含执行源代码流图调整的设备的系统组件的方框图;
图3是根据本发明的一些实施例的可调整流图的节点的示意图;
图4是根据本发明的一些实施例用于根据执行流图的运行环境的处理特征调整流图的数据实例;
图5A到图5B是描绘根据本发明的一些实施例的流图调整实例的示意图;且
图6是根据本发明的一些实施例用于基于图2的系统和/或图1的方法调整流图的架构设计方法的流程图。
具体实施方式
本发明在其一些实施例中涉及用于优化程序执行的系统和方法,且更具体地但非排他地说,涉及用于编译器优化和/或程序的运行优化的系统和方法。
本发明的一些实施例的方面涉及编译器,所述编译器编译源代码以创建流图,且根据执行流图的运行环境的一个或多个处理特征调整流图,使得图形根据处理特征在运行环境中进行运算。任选地,处理特征影响运行环境中的流图的执行性能,例如,处理时间和处理数据的吞吐量。处理特征可包含关于输入数据计算的统计值(例如,输入数据的统计分布)、资源可用性和/或运行环境的硬件架构。根据处理特征对图形的调整改进了运行环境中流图的执行性能。
输入数据可包含:数据的统计分布(例如,输入数据的大小的统计分布)、数据类型(例如,数据类型的统计分布)和/或数据源。输入数据的统计分布可例如随时间的推移而变化,例如,在某一时间范围期间的大量可用数据,和在不同时间范围期间的少量可用数据。可通过根据量改编流图来改进处理不同量的数据的效率。数据类型(例如,数据类型的统计分布)可变化,举例来说,输入可以是整型、阵列、图形和矩阵。可通过根据数据类型改编流图来改进处理数据类型的效率。输入数据的数据源可变化,例如,从远程服务器传送且由用户手动输入的本地存储档案。可通过根据数据源改编流图来改进处理来自不同数据源的数据的效率。应注意,输入数据可以是大小的统计分布和/或量、类型和源的组合,且根据所述组合调整流图。
可任选地基于包含根据运行环境计算的测量结果的处理特征来实时地执行调整。任选地,任选地鉴于执行流图处理输入数据的硬件架构和/或资源可用性而计算得出输入数据的统计数据。模块允许指定用于在运行环境中执行的流图基于输入数据(其可能难以预测或无法预测)而动态地改编,而不是基于例如可能不足以适应输入数据(或可能分配过多资源到输入数据,而减少了至其它程序的可用资源)的静态执行优化和/或静态资源分配。如本文中所描述,编译器可实施为系统内设备、执行为方法,和/或存储为计算机程序产品。
图形调整可在每个处理节点处集中地和/或局部地执行。流图可在每个节点的基础上调整、根据多个互连节点的集合(即,子图形)调整,和/或全局地调整(即,考虑图形的所有节点)。可通过考虑节点或子图形的输入和输出来独立分析和调整每个节点或子图形。节点或子图形的输入和输出可以是来自其它节点或子图形的输出的程序内部输入,或来自其它程序、外部数据库等程序外部的实体或来自用户的程序外部输入。
任选地,调整包含重新编译源代码以创建更新流图。更新流图可更好地用于调整改变的处理器特征,从而改进源代码的运行执行性能。
任选地,运行模块调度用于在运行环境内、任选地在异构分布式处理系统内并行执行的流图,所述异构分布式处理系统包含具有不同架构的计算装置,例如,CPU和图形处理单元(graphical processing unit,GPU)。
任选地,流图表示为多个互连节点。每个节点表示对输入变量参数执行的一个或多个计算功能。输入变量参数可包含处理特征中的一个或多个,所述处理特征包含运行环境的一个或多个测量结果。计算功能可包含:鉴于处理特征和/或处理特征的测量结果改编运行环境中流图的执行、运行环境中硬件资源的不同分配,和/或可包含流图自身的转换(流图接着由运行环境以不同方式执行)。
在详细解释本发明的至少一个实施例之前,应理解,本发明在其申请案中不必限于在以下描述中阐明和/或在附图和/或实例中所说明的组件和/或方法的结构以及布置的细节。本发明能够具有其它实施例或以各种方式实践或进行。
本发明可以是一种系统、一种方法和/或一种计算机程序产品。计算机程序产品可以包含一个(或多个)计算机可读存储媒体,其上具有计算机可读程序指令以使处理器执行本发明的方面。
计算机可读存储媒体可以是有形装置,其可以保持和存储指令以供指令执行装置使用。计算机可读存储媒体可以是例如但不限于:电子存储装置、磁性存储装置、光学存储装置、电磁存储装置、半导体存储装置或前述装置的任何合适组合。
本文中所描述的计算机可读程序指令可以从计算机可读存储媒体下载到相应计算/处理装置,或经由因特网、局域网、广域网和/或无线网络等网络下载到外部计算机或外部存储装置。
计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包执行、部分地在用户的计算机上且部分地在远程计算机上执行或完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过包含局域网(local area network,LAN)或广域网(wide area network,WAN)的任何类型的网络连接到用户的计算机,或者可以对外部计算机进行连接(举例来说,使用因特网服务提供方通过因特网)。在一些实施例中,包含例如可编程逻辑电路、现场可编程门阵列(field-programmable gate array,FPGA)或可编程逻辑阵列(programmable logic array,PLA)的电子电路可以通过利用计算机可读程序指令的状态信息使电子电路个性化而执行计算机可读程序指令,以便执行本发明的方面。
本文参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或方框图来描述本发明的方面。应理解,可以通过计算机可读程序指令实施流程图说明和/或方框图中的每个方框,以及流程图说明和/或方框图中的方框的组合。
图中的流程图和方框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方案的架构、功能性和操作。就此而言,流程图或方方框图中的每个方框可以表示模块、区段,或指令的部分,其包括用于实施指定逻辑功能的一个或多个可执行指令。在一些替代实施方案中,方框中提及的功能可以不按图中所提及的次序出现。举例来说,根据所涉及的功能性,连续示出的两个方框实际上可以大体上同时执行,或这些方框有时可以相反次序执行。还应注意,方框图和/或流程图说明中的每个方框,以及方框图和/或流程图说明中的方框的组合可以通过专用的基于硬件的系统实施,所述系统执行指定功能或动作,或实行专用硬件和计算机指令的组合。
现在参看图1,图1是根据本发明的一些实施例的源代码流图调整方法的流程图。还参看图2,图2是根据本发明的一些实施例的系统的组件的方框图,所述系统包含允许根据运行环境的一个或多个处理特征调整以高级语言编写的源代码的流图从而在运行环境中进行运算的设备。任选地根据输入数据且任选地鉴于运行环境的硬件而在运行期间动态地执行改编。执行改编以改进运行环境中的改编流图的执行性能。图1的方法可通过图2的设备和/或系统来执行。
设备和/或方法可根据程序正在执行时运行环境的处理特征的状态而调整取决于所述处理特征的执行程序的部分(或整个程序)。举例来说,程序的计算复杂度可根据所提供输入而变化,这可能需要不同算法和/或不同硬件用于高效处理输入。当执行计算机程序的计算复杂度不确定时,本文中所描述的设备和/或方法可取决于输入数据,例如关系代数图形计算,来分配可用硬件的计算资源。当运行环境是异构系统时此类分配问题解决起来很复杂。
任选地,在102处,如本文中所描述,由设备204接收计算机程序的源代码202,所述设备调整所述源代码的流图。可例如通过在网络上传送而由接口206接收源代码202,和/或从与接口206通信的存储器中检索源代码202。
计算机程序可以是整体计算机程序、计算机程序的一部分,和/或单个算法。计算机程序可以呈高级源代码格式、适合于执行的低级代码格式,或预编译代码形式。
源代码可以呈高级编程语言的形式。可使用高级编程语言的应用软件编程接口编写源代码。高级编程语言可以是领域专用语言(domain specific language,DSL)。DSL提供并非直接联系到任何特定低级实施方案的高级抽象化,从而允许多个可能的低级实施方案。DSL可映射到并行和/或分布式处理系统。DSL可允许领域专用静态和/或动态优化,所述优化在通用编译器和运行系统的情况下可未必是可能的。DSL的实例包含设计成对机器学习、数据查询和图形算法领域的应用程序进行编程的语言。
在104处,编译器208编译源代码202以创建流图210。流图210可以是源代码202的中间表示(IR),所述源代码202另外经编译以产生用于在运行环境214内执行的低级指令。流图可改编其自身在运行环境中执行的方式和/或进行自身转换,从而提供多个不同改编等级以改进性能。流图可通过根据处理特征选择最佳计算模式和/或分配最合适的资源执行计算来改进性能。
运行环境214可以是包含不同架构和/或不同低级程序实施方案的异构分布式处理系统。异构分布式处理系统基于例如程序设计模型、通信模型、存储器语义和处理器架构的多样性。
任选地,流图是非循环的。
流图可包含将运行环境的资源分配到流图中选定功能(任选地,定义为节点)的指令。流图可包含改编机制以改变流图自身(或其部分)。
任选地,流图将源代码中的功能建模成节点。功能(即,节点)之间的数据流和/或数据关系表示为节点之间的边缘。表示为每个节点的功能运算类型的实例包含:数学运算、逻辑运算和/或转换运算。对每个节点处接收的输入变量参数执行功能运算。输入变量参数可从外部源(例如,来自运行环境的处理特征)接收和/或从所连接的节点的输出接收。互连节点表示可通过使用图形转换法来转换、通过使用基于图形的编译器优化方法来优化,和/或提供与产生图形表示的其它系统的兼容性。
流图定义任选地表示为一个或多个节点的一个或多个计算功能。计算功能用公式表示为接收例如以下中的一个或多个作为输入变量参数:包含运行环境的测量结果的一个或多个处理特征、在运行期间由程序接收的输入数据、流图自身(或其部分),以及所分配计算装置的索引集合。任选地,计算功能指定为根据对输入变量参数的分析输出用于改编由运行环境进行的执行的指令。替代地或另外,计算功能输出用于路由流图中数据流的指令。替代地或另外,计算功能输出所分配计算资源的指示。替代地或另外,计算功能输出流图的更新版本或其部分。
流图计算功能可处理输入数据,且指派用于计算特定节点的所分配资源。流图功能可处理输入数据且改编由流图定义的程序的执行。
任选地,流图包含根据处理特征从不同计算模式中选择计算模式的指令。
在106处,识别执行流图210的运行环境214的一个或多个处理特征。可通过编译器208执行识别。
处理特征可包含:运行环境214的硬件架构、提供以供运行环境214处理的输入数据、在流图的运行执行期间运行环境214(例如,处理器)的一个或多个资源的可用性,和/或运行环境214的(例如,处理器的)硬件架构。
编译器208可采用决策机制进行计算决策,例如,如本文中所描述,根据处理特征选择计算模式。
现在参看图3,图3是根据本发明的一些实施例的流图的节点的示意图。图3以图形方式描绘流图节点的输入和输出,所述流图节点处理节点输入以产生节点输出。应注意,可以子图形取代节点,且以类似方式进行分析。节点302与节点304和306连接。节点302与将对输入变量参数执行的运算相关联,从而产生输出。输入的实例包含:整个流图或其部分308A、运行环境的硬件资源308B和其它数据308C(例如,处理特征)。对输入执行的功能的实例包含:资源分配、输入流图的转换,和处理特征,所述处理特征包含对作用于来自运行环境的数据(例如,输入数据)的元数据模块执行的运算。节点输出的实例包含:转换图形310A、输入数据的处理结果310B,和其它数据310C。应注意,输出可充当用于另一连接节点的输入。
现返回参看图1,任选地,在108处,对所产生的流图应用一个或多个编译器优化。通过与编译器208通信的编译器优化器模块218应用优化。替代地,编译器优化器模块218和编译器208集成于单个编译器208模块中。
可对流图的初始化版本应用编译器优化。替代地,迭代地对流图的先前产生版本应用编译器优化。编译器优化可选择待计算的测量结果和/或待应用到流图的决策机制,以优化图形调整以适应运行环境的能力。可集中地和/或局部地执行优化。
编译器优化器218使用测量模块212来利用元数据模块216的子集构建测量。元数据模块216包含在运行环境214(例如,库)上执行的一组基元测量。测量模块212使用由元数据模块216定义的基元以执行测量和/或计算运行环境214的处理特征。
可根据节点、子图形,或对于整个图形全局地定义处理特征。可根据一个或多个元数据模块216基于一个或多个测量模块212独立地定义每个处理特征。
可自动地执行和/或手动地定义用于根据元数据模块216计算来自相应测量模块212的处理特征的测量构建。
可根据预定义优化标准执行选择,所述预定义优化标准可包含运行环境中流图的执行的性能测量(实际和/或目标),例如在每个处理节点处的运行计算时间、在每个处理节点处的计算复杂度、在每个处理节点处的可用内存,以及在每个节点处的处理器利用率。
任选地,在集中编译和/或局部编译期间在编译时执行选择。替代地或另外,在运行期间执行选择。
测量模块212可根据在节点处接收的输入数据和/或在节点处的计算状态(例如,硬件资源、资源可用性)和/或从运行环境获得的其它数据计算测量结果。测量模块212从运行环境214接收输入。测量模块212根据基于输入的计算测量结果,例如统计数据,计算一个或多个处理特征。输入的实例包含:程序输入数据和流图(或其部分)。基于所计算测量结果的处理特征的实例和/或用于程序输入数据的统计数据包含:最小值、最大值、平均值、标准差、方差以及关于输入数据的关系代数运算。基于所计算测量结果的处理特征的实例和/或用于流图的统计数据包含:图形路径中跃点的最小数目和/或最大数目。
编译器优化器218处理所接收的输入、由测量模块212计算的处理特征,和/或其它数据,且作出决策,例如选择计算模式。
编译器优化器218可基于每个处理节点评估图形,从而根据通过节点接收的输入作出决策。编译器优化器218可根据单个类型的输入数据、根据两个或更多个类型的输入数据,和/或当节点和/或边缘任选地指派有权重时根据对流图执行的接收为输入(例如,最短路径、最大路径)的一个或多个计算作出决策。
处理特征和/或测量模块212和/或元数据模块216可组合,从而产生呈决策树形式的决策阈值。
在110处,根据所识别的处理特征调整流图,以在运行环境214中进行运算。编译器208可根据从应用于编译器优化器218的决策机制的测量模块212接收的处理特征来调整流图。
可通过转换来调整流图,改变流图的算法和/或流图的处理功能,从而改进处理特征的相关性能。可转换流图自身以改进执行性能。
可根据资源的可用性改编流图,从而使用可用资源改进性能。举例来说,可根据资源的可用性通过流图调整资源的调度和分配。
任选地,由编译器208集中地调整流图。可调度集中调整的流图,用于在多个处理节点处执行。替代的或另外,通过与每个节点相关联的运行模块220局部地调整每个流图。可局部调度每个局部调整的流图,用于在每个相应的处理节点处执行。
编译器208可根据处理架构特征调整流图,任选地鉴于所接收的测量数据调整流图,以指示在执行流图的功能中的一些时的并行性。
任选地,根据系统状态划分执行流图调整。每个划分的区可以与某一处理系统配置相关联。每个划分的区和处理系统配置可以与所估计的局部节点性能相关联。可通过元数据模块216计算划分、处理系统配置选择,和/或所估计的性能。
任选地,编译器208将所分配的计算资源指派到一个或多个功能(表示为流图的节点)。现在参看图4,图4是根据本发明的一些实施例基于由编译器优化器218提供的决策机制的流图调整的实例。所描绘的决策机制是描绘系统状态划分的图表。图表根据两个处理特征、输入数据大小(x轴上所描绘)和可用处理资源(y轴上所描绘)映射计算吞吐量。应注意,输入数据大小和/或分布可由测量模块212计算。吞吐量(即,性能)可如下文所描述估计。需要高吞吐量(表示为阴影区)。在使用图4的图表的情况下,可根据运行环境中所接收的数据大小调整流图,以选择适当的处理资源。应注意,资源的不当选择会产生低或中等吞吐量,而非所要的高吞吐量。当程序正在执行和接收输入数据时,输入的实际数据大小可仅在运行时已知。举例来说,对于较小输入数据大小,通过含有单个CPU的节点处理功能将产生高吞吐量。对于中间范围数据大小,需要单个GPU。对于较大数据大小,需要两个GPU来实现高吞吐量。应注意,在两个GPU的情况下,可另外转换流图以使用双GPU划分运算用于执行。
应注意,可使用一个或多个方法估计性能。举例来说,使用基于估计模型的以统计方式导出的模型,所述估计模型基于真实数据。举例来说,回归模型,其使凭经验导出的数据和/或其它测量信息适合于系统状态空间的分区,且跨其余分区内插和/或外推数据,以获得用于整个系统状态空间的模型。举例来说,回归树方案,其根据预定义细分方案以递归方式细分空间。
现在参看图5A和5B,图5A和5B描绘根据本发明的一些实施例根据运行环境的处理特征调整流图以在运行环境中进行运算的一些实例的示意图。
图5A描绘流图的处理节点502。节点502接收提供到运行环境中程序的数据输入(即,data_in 504)以及处理程序的处理节点的硬件(即,装置索引506)作为输入。节点502将选定的元数据模块508应用到所述输入,所述输入将标准库功能应用到data_in 504,且将结果与阈值Y进行比较。评估装置索引506以确定GPU是否可用。当处理值大于阈值Y且GPU可用时,流图节点a和b 510被转换为单个运算,且分配GPU资源以供处理。否则,流图节点a和b 510不转换,且指定为供CPU资源依序处理。
图5B描绘两个互连节点520A和520B。节点520A接收由测量模块计算的输入测量数据522作为输入,所述测量模块应用于由运行环境中的执行程序接收的输入数据,例如输入数据的计算复杂度。选定的元数据模块524将测量数据522与预定义阈值比较,以作出选择决策。当结果低于阈值时,作出使用GPU处理输入数据的决策,所述GPU处理含有两个顺序节点的简单图形526A。当结果高于阈值时,使用应用于含有多个互连节点的复杂图形526B的更强大CPU来处理输入。所得决策由节点520A作为输入提供到节点520B,所述节点520A还接收简单图形526A、复杂图形526B,和可用硬件(例如,不同GPU和CPU)。节点520B遵循决策,以使用选定处理器(任选地选择特定硬件)执行选定图形。
在112处,调度流图210用于在运行环境214内执行。替代地或另外,在运行环境214内执行流图210。本文中所描述的设备和/或方法可通过考虑可用硬件架构来调度处理,以改进性能结果。可调度流图用于集中和/或局部执行。可集中地和/或局部地改编流图,从而提供流图能够适应执行环境以改进性能的额外方式。
流图可首先转化成流图的一个或多个具体化版本,以用于传送到运行环境的每个处理节点进行局部执行。可由低级编译器执行转化,所述低级编译器产生供运行环境执行的低级指令。
相同具体化流图可被传送到所有节点,或不同具体化流图可被传送到运行环境的不同节点。选定元数据模块216和/或选定测量模块212可被传送到相应的处理节点,以供局部流图执行和/或流图的局部调整。模块216和/或212可从流图中单独传送,或可实施于具体化低级指令内。
当由运行环境执行流图时通过运行模块220实施执行调度和/或数据传送调度,所述运行模块220可居中定位进行集中调度,和/或与每个处理节点相关联定位以进行局部调度。
当流图由运行环境214执行时运行模块220指示并行性。当流图由运行环境214执行时,运行模块220计算以下中的一个或多个:资源分配、内核编译,和内核程序库关联性。
在114处,当流图由运行环境214执行时运行模块220集中地和/或局部地监控处理特征,例如在运行系统处接收的输入数据。测量模块212可相应地估计和/或计算输入数据的统计值,例如允许图形调整的决策制定的输入数据的统计数据,例如参看图4所论述的输入数据的平均大小。
替代地或另外,运行模块220监控其它处理特征,例如处理可用性,以便检测新处理节点的添加、现有处理节点的移除(例如,归因于故障),和/或处理节点的改变(例如,移除处理器或处理器添加到节点)。
监控运行环境以允许实时适应先前未知的运行环境的改变,以便例如根据输入数据和/或资源可用性改编。
运行模块220可分析监控数据,以在流图不能够适当地调整以适应处理特征和/或不能够调整以获得运行环境中所要的性能时进行检测。举例来说,流图转换不能够解决运行环境的当前处理特征。举例来说,流图不能够适当地分配资源以处理输入数据,从而获得合适的性能(例如,根据所测量的性能标准)。
任选地,在116处,响应于监控输入数据,例如通过重复方框110和/或方框112来重新调整图形。响应于动态改变的处理特征,任选地输入数据,实时执行图形调整。以此方式,如本文中所描述,可分配适当的资源实现所要性能。
替代地或另外,在118处,响应于监控输入数据触发由编译器208对流图的重新编译(整个或部分)和/或转换。举例来说,当图形的当前版本不能够响应于输入数据而适当地调整时,例如不能够通过调整图形的当前版本来实现所要的性能时。
可重复一个或多个方框104到112。可集中调整和/或集中重新编译当前流图(整个或其部分),以产生流图的更新版本。替代地或另外,可选择新的元数据模块216和/或新的测量模块212以与流图的处理特征相关联,这可允许流图的更新版本,以改进对输入的响应。
任选地,编译器208任选地通过对流图的重新编译在流图中创建一个或多个新节点。可根据处理特征调整流图,以转送先前存在的节点中的一些供新节点处理。
任选地,编译器208调整流图(任选地为重新编译),以在根据运行环境214的执行结果选定的不同路径中路由数据流。以此方式,可根据运行环境的实际性能结果实时调整流图。
现在参看图6,图6是根据本发明的一些实施例用于基于图2的系统和/或图1的方法改编流图的架构设计方法的流程图。
在602处,以领域专用语言编写应用程序。
在604处,前端编译器产生初始流图,所述初始流图被称作动态功能流图(dynamicfunctional flow graph,DFFG)。
在606处,DFFG编译器根据运行环境的处理特征改编DFFG,以在运行环境中进行运算。
替代地或另外,DFFG编译器通过从元数据测量运算(metadata measureoperation,MMO)库606B中选择一个或多个MMO来优化初始DFFG以在输入上执行,从而计算用于改编DFFG的统计数据。
替代地或另外,DFFG编译器对初始DFFG执行图形优化。
替代地或另外,DFFG编译器执行系统资源606C的资源分配以处理DFFG。
在608处,DFFG转化成动态功能执行图形(dynamic functional executiongraph,DFEG)。
在610处,DFEG正在运行环境中执行。
在612处,监控执行DFEG的性能。当性能合适(例如,根据定义性能标准的预定义阈值)时,如在方框610中,继续DFEG的执行。当性能不合适时,如方框606中,改编DFFG。DFFG可重新编译和/或重新转化成更新DFEG以供运行执行。
已出于说明的目的呈现本发明的各种实施例的描述,但所述描述并不意欲为穷尽性的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。本文中所使用的术语选择为最佳解释实施例的原理、实际应用或对市场中发现的技术的技术改进,或使本领域一般技术人员能够理解本文所公开的实施例。
预计在专利从此申请案开始成熟的有效期期间,将研发出许多相关系统和方法,且术语流图、编译器和运行环境的范围意图先验地包含所有此类新技术。
本文所使用的术语“约”是指±10%。
术语“包括(comprise/comprising)”、“包含(include/including)”、“具有(having)”和其同源词意指“包含但不限于”。这个术语涵盖术语“由……组成”和“主要由……组成”。
短语“主要由…组成”意指组成物或方法可以包含额外成分和/或步骤,但前提是所述额外成分和/或步骤不会实质上改变所要求的组成物或方法的基本和新颖特性。
除非上下文中另有明确说明,否则此处使用的单数形式“一”和“所述”包括复数含义。例如,术语“化合物”或“至少一个化合物”可以包含多个化合物,包含其混合物。
本文中使用的词语“示例性”意指“充当实例、例子或说明”。描述为“示例性”的任何实施例不一定解释为比其它实施例优选或有利,和/或并不排除来自其它实施例的特征的并入。
本文中使用词语“任选地”意指“在一些实施例中提供且在其它实施例中不提供”。本发明的任何特定实施例皆可包含多个“任选”特征,除非此类特征相矛盾。
在整个本申请案中,本发明的各种实施例可以范围格式呈现。应理解,范围格式的描述仅为了方便和简洁起见,并且不应该被解释为对本发明范围的固定限制。因此,对范围的描述应被认为是已经具体地公开所有可能的子范围以及所述范围内的个别数值。举例来说,对例如从1到6的范围的描述应被认为是已经具体地公开子范围,例如从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等,以及所述范围内的个别数字,例如1、2、3、4、5和6。不管范围的宽度如何,这都适用。
当此处指出一个数字范围时,表示包括了在指出的这个范围内的任意所列举的数字(分数或整数)。短语“在第一指示数字与第二指示数字之间的范围变化/范围”以及“从第一指示数字到第二指示数字的范围变化/范围”在本文中互换使用且意图包含第一指示数字和第二指示数字以及其间的所有分数和整数数字。
单个实施例也可以提供某些特征的组合,这些特征在各个实施例正文中有简短的描述。相反地,本发明的各个特征在单个实施例的正文中有简短的描述,也可以分别提供这些特征或任何适合的子组合或者作为本发明所述的任何合适的其它实施例。不可认为各个实施例的正文中描述的某些特征是这些实施例的必要特征,除非没有这些元素,所述实施例无效。
此处,本说明书中提及的所有出版物、专利和专利说明书都通过引用本说明书结合在本说明书中,同样,每个单独的出版物、专利或专利说明书也具体且单独地结合在此。此外,对本申请的任何参考的引用或识别不可当做是允许这样的参考在现有技术中优先于本发明。就使用节标题而言,不应该将节标题理解成必要的限定。
Claims (14)
1.一种用于改编源代码的设备,其特征在于,包括:
接口,其用于接收源代码;
编译器,其用于:
编译所述源代码以创建流图;
识别执行所述流图的运行环境的至少一个处理特征,以及
根据所述至少一个处理特征调整所述流图以在所述运行环境中进行运算;
所述流图将至少一个计算功能定义为以下中的至少一个:用公式表示为接收所述至少一个处理特征作为输入变量参数,且指定为根据对所述输入变量参数的分析输出用于改编由所述运行环境进行的所述执行的指令;用公式表示为接收所述至少一个处理特征作为输入变量参数,且输出用于路由所述流图中的数据流的指令。
2.根据权利要求1所述的设备,其特征在于,所述至少一个处理特征选自由至少一个硬件架构特征和至少一个输入数据特征组成的群组。
3.根据权利要求1所述的设备,其特征在于,所述编译器用于接收在所述流图运行时所述运行环境的至少一个资源的可用性;其中所述至少一个处理特征是所述运行环境的至少一个资源的所述可用性。
4.根据权利要求1-3中任一权利要求所述的设备,其特征在于,所述至少一个处理特征是所述运行环境的多个处理器的硬件架构;其中所述编译器用于根据所述至少一个处理特征调整所述流图,以指示执行一些功能时的并行性。
5.根据权利要求4所述的设备,其特征在于,另外包括用于当由所述运行环境执行所述流图时指示所述并行性的运行模块。
6.根据权利要求5所述的设备,其特征在于,另外包括用于当由所述运行环境执行所述流图时进行调度执行和调度数据传送中的至少一个的运行模块。
7.根据权利要求6所述的设备,其特征在于,另外包括用于当由所述运行环境执行所述流图时计算以下中的至少一个的运行模块:资源分配、内核编译,和内核程序库关联性。
8.根据权利要求7所述的设备,其特征在于,所述至少一个处理特征包括至少一个输入数据特征;所述设备另外包括用于当由所述运行环境执行所述流图时监控在运行系统处接收的输入数据且相应地估计所述至少一个输入数据特征的运行模块。
9.根据权利要求1所述的设备,其特征在于,所述流图包括用于执行以下中的至少一个的指令:
根据所述至少一个处理特征选择多个不同计算模式中的一个;以及
将所述运行环境的资源分配到定义为所述流图中节点的来自多个功能的选定功能。
10.根据权利要求9所述的设备,其特征在于,所述流图将所述源代码中的多个功能建模为多个节点且将所述多个功能之间的数据流建模为边缘。
11.根据权利要求10所述的设备,其特征在于,所述编译器用于:
创建至少一个新节点,且
根据所述至少一个处理特征调整所述流图,以转送所述多个节点中的一些供所述至少一个新节点处理。
12.根据权利要求11所述的设备,其特征在于,所述编译器用于调整所述流图,以在根据所述运行环境进行的所述执行的结果选定的不同路径中路由数据流。
13.一种用于改编源代码的方法,其特征在于,包括:
编译源代码以创建流图;
识别执行所述流图的运行环境的至少一个处理特征;以及
根据所述至少一个处理特征调整所述流图以在所述运行环境中进行运算;
所述流图将至少一个计算功能定义为以下中的至少一个:用公式表示为接收所述至少一个处理特征作为输入变量参数,且指定为根据对所述输入变量参数的分析输出用于改编由所述运行环境进行的所述执行的指令;用公式表示为接收所述至少一个处理特征作为输入变量参数,且输出用于路由所述流图中的数据流的指令。
14.一种计算机存储介质,包括在其上存储有用于改编源代码的程序代码的可读存储媒体,其特征在于,所述程序代码包括:
用于编译源代码以创建流图的指令;
用于识别执行所述流图的运行环境的至少一个处理特征的指令;以及
用于根据所述至少一个处理特征调整所述流图以在所述运行环境中进行运算的指令;
所述流图将至少一个计算功能定义为以下中的至少一个:用公式表示为接收所述至少一个处理特征作为输入变量参数,且指定为根据对所述输入变量参数的分析输出用于改编由所述运行环境进行的所述执行的指令;用公式表示为接收所述至少一个处理特征作为输入变量参数,且输出用于路由所述流图中的数据流的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2015/055200 WO2016141991A1 (en) | 2015-03-12 | 2015-03-12 | Systems and methods for dynamic scheduling of programs on processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107408051A CN107408051A (zh) | 2017-11-28 |
CN107408051B true CN107408051B (zh) | 2020-11-06 |
Family
ID=52727094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580077742.7A Active CN107408051B (zh) | 2015-03-12 | 2015-03-12 | 用于处理系统上的程序的动态调度的系统和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107408051B (zh) |
WO (1) | WO2016141991A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450972B (zh) * | 2017-07-04 | 2020-10-16 | 创新先进技术有限公司 | 一种调度方法、装置以及电子设备 |
KR20200053318A (ko) * | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 인공 신경망의 연산 처리 그래프를 관리하는 시스템 및 이를 이용한 연산 처리 그래프를 관리하는 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536674B2 (en) * | 2003-08-13 | 2009-05-19 | Intel Corporation | Method and system for configuring network processing software to exploit packet flow data locality |
US7793275B2 (en) * | 2006-03-31 | 2010-09-07 | Intel Corporation | Methods and apparatus to tune intermediate representations in a managed runtime environment |
JP4959774B2 (ja) * | 2009-11-30 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アプリケーション生成システム、方法及びプログラム |
WO2013187864A1 (en) * | 2012-06-11 | 2013-12-19 | Empire Technology Development Llc | Modulating dynamic optimizations of a computer program |
US9262139B2 (en) * | 2013-01-07 | 2016-02-16 | Advanced Micro Devices, Inc. | Layered programming for heterogeneous devices |
CN103645930B (zh) * | 2013-12-18 | 2017-03-08 | 中国科学院声学研究所 | 汇编级跨文件调度框架的构建方法 |
-
2015
- 2015-03-12 WO PCT/EP2015/055200 patent/WO2016141991A1/en active Application Filing
- 2015-03-12 CN CN201580077742.7A patent/CN107408051B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
WO2016141991A1 (en) | 2016-09-15 |
CN107408051A (zh) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111505B (zh) | 用于在并行异构系统上执行算法的系统和方法 | |
CN112396172A (zh) | 用于管理深度学习加速器系统的功率的方法与装置 | |
US10509683B2 (en) | Modeling resource usage for a job | |
US7694290B2 (en) | System and method for partitioning an application utilizing a throughput-driven aggregation and mapping approach | |
JP6763072B2 (ja) | データ処理グラフのコンパイル | |
US11385931B2 (en) | Method, electronic device, and computer program product for processing computing job | |
FI20185365A1 (en) | A method for distributed information processing and a distributed information processing system | |
KR20200091790A (ko) | Gpu 연산의 동시 실행을 위한 플랫폼 | |
Maleki et al. | A hybrid approach of firefly and genetic algorithms in software cost estimation | |
US11216752B1 (en) | Optimizing machine learning models | |
WO2016177405A1 (en) | Systems and methods for transformation of a dataflow graph for execution on a processing system | |
EP4038501A1 (en) | Resource optimization for serverless query processing | |
CN107408051B (zh) | 用于处理系统上的程序的动态调度的系统和方法 | |
Cecilia et al. | Enhancing GPU parallelism in nature-inspired algorithms | |
US11551118B2 (en) | Tuning implementation of machine learning model for resource-constrained device | |
US11551147B2 (en) | Evaluating resources used by machine learning model for implementation on resource-constrained device | |
KR102195886B1 (ko) | 분산 처리 시스템 및 이의 동작 방법 | |
CN116800610A (zh) | 一种分布式的数据平面资源优化方法与系统 | |
Wu et al. | Latency modeling and minimization for large-scale scientific workflows in distributed network environments | |
Guo et al. | Automated framework for general-purpose genetic algorithms in FPGAs | |
CN107209680B (zh) | 构建分布式程序的系统和方法 | |
Cuenca et al. | A proposal for autotuning linear algebra routines on multicore platforms | |
Vázquez et al. | Novel parallelization of simulated annealing and Hooke & Jeeves search algorithms for multicore systems with application to complex fisheries stock assessment models | |
KR20190106577A (ko) | 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법 | |
US11874836B2 (en) | Configuring graph query parallelism for high system throughput |
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 |