CN102402419A - 用所选执行运行时执行的用户代码的运行时不可知表示 - Google Patents
用所选执行运行时执行的用户代码的运行时不可知表示 Download PDFInfo
- Publication number
- CN102402419A CN102402419A CN2011103142138A CN201110314213A CN102402419A CN 102402419 A CN102402419 A CN 102402419A CN 2011103142138 A CN2011103142138 A CN 2011103142138A CN 201110314213 A CN201110314213 A CN 201110314213A CN 102402419 A CN102402419 A CN 102402419A
- Authority
- CN
- China
- Prior art keywords
- computer
- computer system
- know
- task
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及用所选执行运行时来执行的用户代码的运行时不可知表示。计算机系统中的执行环境允许使用多个执行运行时来执行用户代码。该执行环境将该用户代码转换为运行时不可知表示,选择用于执行该运行时不可知表示的执行运行时,以及为所选执行运行时调用调度器。该调度器从该运行时不可知表示分派任务以由该计算机系统使用所选执行运行时中的并发性机制执行。
Description
技术领域
本发明涉及用所选执行运行时执行的用户代码的运行时不可知表示。
背景技术
计算机系统通常具有并发(即并行)执行同一程序的不同部分的能力。程序员一般在程序内表达该并发,以使指定部分能够并发执行。然而,程序中的并发的表达通常紧密耦合于用于执行该程序的执行环境。程序的执行环境可以包括例如计算机系统的类型、程序的编程语言、以及计算机系统中的一个或多个运行时库。因为这种耦合,为一个执行环境编写的程序可能在另一执行环境中不能执行。
即使一个程序可能是能在不同的执行环境中执行的,该程序也可能不能够充分利用一些执行环境中可用的计算资源。例如,为单一机器编写的程序可能不能在机器群集或机器云上执行。即使该程序被修改为在群集或云上执行,该程序也可能不能够使用可动态变得可用(诸如通过向该群集或云添加新的机器)的资源。
发明内容
提供本发明内容以便以简化的形式介绍将在以下的具体实施方式中进一步描述的一些发明内容。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
计算机系统中的执行环境允许使用多个执行运行时来执行用户代码。该执行环境将该用户代码转换为运行时不可知表示,选择用于执行该运行时不可知表示的执行运行时,以及为所选执行运行时调用调度器。该调度器从该运行时不可知表示分派任务以由该计算机系统使用所选执行运行时中的并发机制执行。
附图说明
包括、合并在本发明书内并构成其一部分的附图提供了对各实施例的进一步理解。附图示出各实施例,并且与说明书一起用于解释本发明的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此是比例正确的。相同的附图标记指代对应的类似部分。
图1是示出计算机系统中的执行环境的实施例的框图。
图2是示出产生用户代码的运行时不可知中间表示的实施例的框图。
图3是示出使用运行时不可知中间表示来执行用户代码的实施例的框图。
图4A-4C是示出被配置成实现图1中示出的执行环境的计算机系统的实施例的框图。
具体实施方式
在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本发明的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、“后方”、“前导”、“尾部”等的方向性术语参考所描述的附图的取向来使用。因为各实施例的各组件可以被定位为多个不同的取向,所以方向性术语出于说明的目的来使用而不是限制。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本发明的范围。因此,以下详细描述并不旨在限制,并且本发明的范围由所附权利要求来定义。
应该理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。
图1是示出在计算机系统中的执行环境10的实施例的框图,所述计算机系统诸如是在图4A中示出的计算机系统100(例如,单一机器)、在图4B中示出的计算机系统150(例如,机器群集)、或在图4C中示出的计算机系统160(例如,机器云)。执行环境10表示该计算机系统中的操作的运行时模式,其中该计算机系统正在该计算机系统的一个或多个处理核(诸如在图4A中示出并在下面更详细地描述的处理核103)上执行指令。执行环境10包括具有两个或更多个任务14的集合的所调用的用户代码12、运行时不可知库16、用户代码12的运行时不可知表示(RAR)18、调用的调度器20、以及执行运行时24(1)-24(M),其中M是大于或等于2的整数并代表第M个执行运行时24(M)。
执行环境10提供分布式任务编程模型,该分布式任务编程模型允许使用不同的执行运行时24(1)-24(M)来执行用户代码12。尤其是,执行环境10动态地将用户代码12绑定到所选执行运行时24以允许用户代码12的执行在执行环境10的计算机系统内缩放(scale)。执行环境10允许使用运行时不可知库16、RAR 18、调度器20、以及所选执行运行时24来并发执行用户代码12定义的任务14。
每个执行运行时24(1)-24(M)通常对应于一种适用于底层计算机系统的编程语言和/或编程模型。例如,一个执行运行时24(例如,微软并发运行时(ConcRT))可以被设计为增强用户代码12在具有多个处理核的单一机器(例如,图4A中示出的计算机系统100)上的并行执行,另一执行运行时24(例如,消息传递接口(MPI)运行时)可以被设计为增强用户代码12在机器群集(例如,图4B中示出的计算机系统150)上的并行执行,以及又一执行运行时24可以被设计为提升用户代码12在机器云(例如,图4C中示出的计算机系统160)上的并行执行。
用户代码12包括指令序列,该指令序列形成一个或多个并行算法的直观表达。通过在每个算法内指定任务14以及各任务14的交互,用户代码12使每个算法基于数据流。用户代码12表达任务14和各任务14的交互而不显式引用任何特定执行运行时24(1)-24(M)的编程特性或构造。因此,用户代码12可以被转换为RAR 18,并且使用调度器20和由运行时不可知库16选择的执行运行时24(1)-24(M)执行。在一个实施例中,用户代码12包括调用运行时不可知库16中的应用程序接口(API)以启动任务14的执行的指令。在其他实施例中,用户代码12使用由运行时不可知库16提供的其他编程语言构造和/或相应的工具以使用一动态选择的执行运行时24(1)-24(M)来启动任务14的执行。
每一任务14包括当由计算机系统执行时执行工作单元的指令序列。每一任务14是自包含的(即,没有副作用)并对一组定义的输入数据进行操作以产生一组定义的输出数据。由一个任务14产生的该组输出数据可被用作另一任务14的该组输入数据的全部或部分。因此,任务14可以使用由一个或多个其他任务14产生的输入数据并可以产生将被一个或多个任务14用作输入数据的输出数据。然而,任务14被如此定义以便它们不会共享数据(即,并发地对同一组数据进行操作)。因为任务14的输入和输出数据是良好定义的,所以各任务14的交互可由运行时不可知库16确定。任务14被如此编码以便每个任务14可以被调度器20激活和分派以在该任务14的该组输入数据变得可用时由该计算机系统的各处理核并发执行。
在一个实施例中,用户代码12是以诸如C++等本机(即,非托管的)编程语言编写的。在此实施例中,每个任务14可被编码为包括一组顺序指令或其他合适指令的C++拉姆达(Lambda)表达式的抽象。在其他实施例中,用户代码12可以用可被转换为RAR 18并由一所选执行运行时24(1)-24(M)执行的其他合适的本机编程语言编写。类似地,每个任务14可以使用其他合适的编程语言构造来编码。
用户代码12可被配置成在基于诸如栈模型或解释器模型等任何合适的计算机系统执行模型的一个或多个计算机系统中操作,并可表示任何合适类型的代码,如应用程序、库函数或操作系统服务。用户代码12具有与包括定义的存储器地址空间的一组分配的计算机系统资源相关联的程序状态和机器状态。用户代码12独立于执行环境10中的任何共存进程而自主地或基本自主地执行。因此,用户代码12不会不利地更改共存进程的程序状态或分配到共存进程的任何资源的机器状态。类似地,共存进程不会不利地更改用户代码12的程序状态或分配到用户代码12的任何资源的机器状态。
响应于用户代码12启动任务14的执行,运行时不可知库16将用户代码12转换为RAR 18,选择用于执行RAR 18的执行运行时24,以及为所选执行运行时24调用调度器20。如同上面指出的,用户代码12可以调用运行时不可知库16中的API或使用其他合适的编程构造来启动任务14的执行。
运行时不可知库16基于用户程序12中的固有并行性而标识用户代码12中的各任务14和各任务14的交互。运行时不可知库16将用户代码12转换为RAR 18以便RAR 18嵌有用户代码12的固有并行性并可以由执行运行时24(1)-24(M)中的任一执行运行时执行。RAR 18包括可被移植到执行运行时24(1)-24(M)中的任一执行运行时的调度器20的任务14的抽象。在一个实施例中,通过形成指定各任务14间的延续的有向无环图(DAG)以表示用户代码12中的数据流,运行时不可知库16产生RAR 18。使用DAG,运行时不可知库16形成表示任务14的节点并根据任务之间的数据流(即,交互)表达各节点之间的关系。在其他实施例中,运行时不可知库16使用其他合适的数据结构来产生RAR 18以表示用户程序12中的固有并行性。
和创建RAR 18一起,运行时不可知库16基于与底层计算机系统和RAR 18相对应的试探(heuristic)来选择用于执行用户代码12的执行运行时24(1)-24(M)。具体而言,通过选择可以最高效地执行用户代码12的任务14的那个执行运行时24(1)-24(M),运行时不可知库16尝试针对用户代码12实现最优缩放。运行时不可知库16考虑用户代码12的特征(例如,代码密集对计算密集)并确定在给定底层计算机系统的情况下用于执行用户代码12的适当的计算资源水平(例如,单一机器、机器群集、或机器云)在做出确定之后,运行时不可知库16为所选执行运行时24创建调度器20的实例。
调度器20使得用户代码12的任务14在执行环境10中使用所选执行运行时24执行。调度器20使来自RAR 18的任务14排队并从用户代码12分派任务14以通过调用API或使用其他合适的编程构造而在所选执行运行时24中执行。调度器20根据任何合适的调度算法分派任务14。通过分派任务14以在任务14的该组输入数据和计算机系统的处理资源变得可用时执行,调度器20管理任务14的执行。如同上面描述的,任务14的该组输入数据可在完成一个或多个其他任务14之后变得可用。
通过用户代码12与所选执行运行时24的动态绑定,执行环境10从该组执行运行时24(1)-24(M)中为用户代码12划定编程模型。通过这样做,同一用户代码12可用于针对(target)不同的执行运行时24(1)-24(M)而不会招致为每个执行运行时包括针对特定运行时的代码的开销。作为结果,执行环境10支持用于用户代码12的编程模型,其提供从单一机器到多个机器(例如,群集或云)的自动缩放。
执行环境10还可提供支持执行运行时24(1)-24(M)的特征的富编程模型。例如,一个执行运行时24(诸如MPI)可指定在机器群集的节点间传递的数据要被串行化,而另一执行运行时24(诸如ConcRT)可允许使用共享存储器机器上的指针来访问数据。使用富编程模型,用户代码12包括用于用于诸如MPI等运行时24的用户定义类型的适当的串行化例程。然而,执行环境10(即,运行时不可知库16和调度器20)确保当用户代码12在共享存储器机器上执行时该串行化例程不被调用。
执行环境10可进一步提供支持防死锁和容错的富编程模型。通过产生RAR 18,执行环境10阻止循环并因此消除死锁并避免高开销的动态锁死检测策略的使用。此外,因为任务14被编码为没有副作用,所以如果给定计算节点在任务14的执行过程中失败,任务14可以在其他计算节点上重启。
在一个实施例中,执行环境10是使用在诸如C++等本机语言上的声明性编程模型实现的。在此实施例中,用户代码12是用本机语言中的查询句法写的,其固有地按照数据流来表达任务。使用查询句法,用户代码12的任务14按照定义是无副作用的,并且具有良好定义的交互。作为结果,用户代码12的执行可以从单一机器自动缩放到诸如群集或云等分布式环境。
图2是示出具有查询句法的用户代码12的实施例12A的框图。在图2的示例中,用户代码12A将映射减少操作表达为本机语言查询。通过这样做,用户代码12A允许运行时不可知库16产生RAR 18的实施例,如箭头32指示的,所述RAR 18的实施例形成运行时不可知DAG 18A。运行时不可知库16从用户代码12A中的查询中标识任务14(1)-14(4)(即,分别为reader、SelectMany(mapper)、GroupBy以及SelectMany(reducer))并将任务14(1)-14(4)的表示转换为DAG 18A(在图2的实施例中示出为流程图中的框)。运行时不可知库16还标识各任务14(1)-14(4)的交互并将交互的表示转换为DAG 18A。该交互指定任务14之间的延续,所述延续包括由一个任务14输出并被输入到另一任务14的该组数据。在图2中,箭头34(1)表示任务14(1)(即,reader)和任务14(2)(即,SelectMany(mapper))之间的交互。换言之,箭头34(1)表示由任务14(1)输出并被输入至任务14(2)的该组数据。类似地,箭头34(2)表示任务14(2)和任务14(3)之间的交互,而箭头34(3)表示任务14(3)和任务14(4)之间的交互。
在图2的示例中,任务14从一个其他任务14接收一组输入数据并向一个其他任务14提供一组输出数据。在其他实施例中,每个任务14可以从任何合适数量的其他任务14接收一组输入数据和/或可向任何合适数量的其他任务14提供一组输出数据。
在图2的实施例中,查询句法使用基于方法的调用策略以便该查询句法不直接集成在该本机编程语言中。例如,在使用诸如C++等本机编程语言的情况下,该查询句法可以是使用拉姆达表达式实现的。该查询句法可以是在用户代码12中用该本机语言的其他代码编写的并且可以允许用户代码12的懒惰执行(lazy execution)。作为结果,具有查询句法的声明性编程模型可以在诸如C++等本机语言上实现并使用现有的本机语言编译器,同时在分布式环境中提供更好的执行性能。
在一个实施例中,执行环境10为用户代码12提供动态数据和计算资源弹性以提高执行效率。具体而言,执行环境10允许用户代码12的执行对于以下内容具有弹性:任务14所操作的数据的大小、在运行时可用的计算资源、以及用户代码12提供的任何上下文敏感试探。执行环境10通过使用RAR 18和调度器20来提供弹性。弹性指代基于在执行用户代码12的每个任务14时可用的数据和计算资源的量来动态调整该任务14的并发水平的能力。
如同上面描述的,当任务14的该组输入数据和该计算机系统的处理资源变得可用时调度器20分派该任务14以用于执行。对于RAR 18中的每个任务14,通过考虑该任务14的该组输入数据的大小、在调用任务14的时刻可用的计算资源的量、以及用户代码12的任何对上下文敏感的试探,调度器20确定并发水平。基于所确定的并发水平,调度器20调用并将任务14的多个实例分布至可用的计算资源。通过这样做,在给定该组输入数据的大小、可用的计算资源、以及针对特定用户的试探的情况下,调度器20自动将用户代码12的执行缩放到合适的水平。
在确定适当的并发水平时,调度器20考虑每个任务14的该组输入数据的大小。尤其是,调度器20可以考虑在该计算系统内移动输入数据的开销量(例如,在群集内的机器之间移动数据所花费的时间)。例如,基于该开销,在具有较小的输入数据量的情况下,调度器20可以为任务14选择较低的并发水平,而在具有较大的输入数据量的情况下,调度器20可以为任务14选择较高的并发水平。
因为调度器20针对每个任务14确定在调用时的适当的并发水平,所以调度器20考量到了底层计算机系统中计算资源的可用性的变化。例如,调度器20可以检测到计算资源已被添加到该计算机系统(例如,由于一个或多个机器被添加到该计算机系统中)或被从该计算机系统移除(例如,由于该计算机系统的一个或多个节点的失败或不可用)。
调度器20可以将表达任务14的输入数据的大小以及任务14的可用计算资源量的信息提供至用户代码12中的一个或多个函数。这些函数又可以向调度器20提供程序员为执行任务14而推荐的建议的或最优的并发水平。调度器20考虑此信息,还考虑输入数据的大小和可用计算资源量,以确定任务14的适当的并发水平。
图3是示出使用DAG 18A(图2中示出)执行用户代码12的实施例的框图。在图3的示例中,调度器20为DAG 18A中的任务14(1)-14(4)中的每个任务确定适当的并发水平,并且基于该并发水平创建每个任务14(1)-14(4)的适当数量的实例。例如,在调用任务14(1)时,调度器20基于上述因素确定单一实例对任务14(1)是适当的。类似地,在调用任务14(3)时,调度器20基于上述因素确定单一实例对任务14(3)是适当的。
对于任务14(2),调度器20确定N个实例是适当的,其中N是大于或等于2的整数。因此,调度器20使得任务14(2)的该组输入数据被分区为N个子组并被提供给最多N个计算资源(例如,群集或云中的节点机器)以用于执行。调度器20还使得任务14(2)产生的该组输出数据被合并为可被提供至任务14(3)的形式。
对于任务14(4),调度器20确定P个实例是适当的,其中P是大于或等于2且可以等于或不等于N的整数。因此,调度器20使得任务14(4)的该组输入数据被分区为P个子组并被提供给最多P个计算资源(例如,群集或云中的节点机器)以用于执行。调度器20还使得任务14(4)产生的该组输出数据被合并为可作为该查询的输出提供的形式。
动态数据和计算弹性提供了一种可用来进行用户代码12的最优缩放的技术。为RAR 18或DAG 18A中的每个任务建立并发水平的灵活性允许用户代码12对于可用计算资源具有弹性且能有效地平衡负载。因此,用户代码12可以在多种计算机系统上高效地执行。
图4A是示出计算机系统100的实施例的框图,所述计算机系统100被配置成实现如上面描述的执行环境10。
计算机系统100包括一个或多个处理器封装102(其中每个处理器封装102包括一个或多个处理核103)、存储器系统104、零个或更多输入/输出设备106、零个或更多显示设备108、零个或更多外围设备110、和零个或更多网络设备112。处理器封装102、存储器系统104、输入/输出设备106、显示设备108、外围设备110和网络设备112使用包括任何合适的类型、数量和配置的控制器、总线、接口、和/或其他有线或无线连接的一组互连114来进行通信。
计算机系统100表示出于通用或专用目的而配置的任何合适的处理设备。计算机系统100的示例包括服务器、个人计算机、膝上型计算机、平板计算机、个人数字助理(PDA)、移动电话或智能电话、和音频/视频设备。计算机系统100的组件(即,处理器封装102、存储器系统104、输入/输出设备106、显示设备108、外围设备110、网络设备112和互连114)可包含在公共外壳(未示出)中或任何合适数量的独立外壳(未示出)中。
每个处理器封装102都包括一个或多个处理核103,所述处理核103形成被配置成执行指令(即,软件)的执行硬件。每一处理核103被配置成独立于或基本独立于其他处理核103来执行指令,且包括机器状态。每个处理器封装102都可以包括具有相同或不同架构和/或指令集的处理核103。例如,处理核103可以包括顺序执行核、超标量执行核、以及GPGPU执行核的任何组合。处理器封装102中的每一处理核103被配置成访问并执行存储在存储器系统104中的指令。所述指令可包括基本输入输出系统(BIOS)或固件(未示出)、用户代码12、运行时不可知库16、调度器20、操作系统(OS)122、以及一个或多个执行运行时24的组(124)每个处理核103都可以结合或响应于从输入/输出设备106、显示设备108、外围设备110、和/或网络设备112接收到的信息来执行指令。
存储器系统104包括被配置成存储指令和数据的任何合适的类型、数量和配置的易失性或非易失性存储设备。存储器系统104的存储设备表示存储包括用户代码12、运行时不可知库16、调度器20、OS 122、以及一个或多个执行运行时24的组124的计算机可执行指令(即,软件)的计算机可读存储介质。存储器系统104存储从处理器封装102、输入/输出设备106、显示设备108、外围设备110和网络设备112接收的指令和数据。存储器系统104将存储的指令和数据提供给处理器封装102、输入/输出设备106、显示设备108、外围设备110和网络设备112。所述指令可由计算机系统100执行以完成在此所述的用户代码12、运行时不可知库16、调度器20、OS 122、以及执行运行时24的功能和方法。存储器系统104中的存储设备的示例包括硬盘驱动器、随机存取存储器(RAM)、只读存储器(ROM)、闪存驱动器和卡、以及诸如磁盘和CD和DVD之类的光盘。
计算机系统100引导并执行OS 122。OS 122包括可由处理器包102执行的指令,以管理计算机系统100的组件,并提供允许运行时不可知库16、调度器20、OS 122、以及执行运行时24访问并使用组件的一组功能。在一个实施例中,OS 122是Windows操作系统。在其他实施例中,OS 122是适于和计算机系统100一起使用的另一操作系统。运行时不可知库16包括能与OS 122结合执行以产生图1中示出的执行环境10并向用户代码12和调度器20提供运行时函数的指令。所述运行时函数可作为OS 122的集入部分或其他编程实体和/或其他实施例中的构造而被包括在内。
输入/输出设备106包括被配置成将指令或数据从用户输入到计算机系统100并将指令或数据从计算机系统100输出到用户的任何合适的类型、数量和配置的输入/输出设备。输入/输出设备106的示例包括键盘、鼠标、触摸垫、触摸屏、按钮、拨盘、旋钮和开关。
显示设备108包括被配置成向计算机系统100的用户输出文本和/或图形信息的任何合适的类型、数量和配置的显示设备。显示设备108的示例包括监视器、显示屏和投影仪。
外围设备110包括被配置成用计算机系统100中的一个或多个其他组件来操作以执行通用或专用处理功能的任何合适的类型、数量和配置的外围设备。
网络设备112包括被配置成允许计算机系统100通过一个或多个网络(未示出)进行通信的任何合适的类型、数量和配置的网络设备。网络设备112可根据任何合适的网络协议和/或配置来操作以允许计算机系统100将信息发送给网络或者从网络接收信息。
图4B是示出计算机系统150的实施例的框图,所述计算机系统100被配置成实现如上面描述的执行环境10。计算机系统150形成分布式计算环境,所述分布式计算环境包括两个或更多个计算机系统100(1)-100(Q)的集合,其中Q是大于或等于2的整数。计算机系统100(1)-100(Q)使用包括任何合适类型、数量和配置的控制器、总线、接口和/或其他有线或无线连接的一组互连152通信。
计算机系统150被配置为机器群集(即,计算机系统100(1)-100(Q)的群集)。每个计算机系统100(1)-100(Q)都可包括与其他计算机系统100(1)-100(Q)相同的配置或不同的配置。在一个实施例中,系统150中的每个计算机系统100(1)-100(Q)包括为群集而配置的运行时24(诸如MPI)、以及计算机系统100(1)-100(Q)可包括的任何其他运行时24。在其他实施例中,系统150中的每个计算机系统100(1)-100(Q)都包括任何合适类型、数量的运行时24和/或其组合。
图4C是示出计算机系统160的实施例的框图,所述计算机系统160被配置成实现如上面描述的执行环境10。计算机系统160形成分布式计算环境,所述分布式计算环境包括两个或更多个计算机系统100(1)-100(R)的集合,其中R是大于或等于2的整数。计算机系统100(1)-100(R)使用网络162通信,所述网络162包括任何合适类型、数量和配置的有线的和/或无线的网络设备。
计算机系统160被配置为机器云(即,计算机系统100(1)-100(R)的云)。每个计算机系统100(1)-100(R)都可包括与其他计算机系统100(1)-100(R)相同的配置或不同的配置。在一个实施例中,系统160中的每个计算机系统100(1)-100(R)包括为云而配置的运行时24、以及计算机系统100(1)-100(R)可包括的任何其他运行时24。在其他实施例中,系统160中的每个计算机系统100(1)-100(R)都包括任何合适类型、数量的运行时24和/或其组合。
尽管此处说明并描述了具体实施例,但本领域技术人员可以理解,可用各种替换和/或等价实现来替换此处示出并描述的具体实施例而不背离本发明的范围。本申请旨在覆盖此处讨论的具体实施例的任何改编或变型。因此,本发明旨在仅由权利要求书及其等效方案来限制。
Claims (20)
1.一种存储计算机可执行指令的计算机可读存储介质,其中所述计算机可读指令在由计算机系统执行时使得所述计算机系统执行一种方法,所述方法包括:
选择所述计算机系统中的第一执行运行时以执行用户代码的运行时不可知表示,所述第一执行运行时是基于所述运行时不可知表示的至少一个试探而选择的;以及
调用调度器以从所述运行时不可知表示分派一组任务以使用所述第一执行运行时在所述计算机系统上执行。
2.如权利要求1所述的计算机可读存储介质,其特征在于,所述方法进一步包括:
将所述用户代码转换为包括所述一组任务的所述运行时不可知表示。
3.如权利要求1所述的计算机可读存储介质,其特征在于,所述用户代码固有地表达所述一组任务以及所述一组任务的一组交互。
4.如权利要求1所述的计算机可读存储介质,其特征在于,所述用户代码使用查询句法指定所述一组任务以及所述一组任务的一组交互。
5.如权利要求1所述的计算机可读存储介质,其特征在于,所述运行时不可知表示能够由所述第一执行运行时和不同于所述第一执行环境的第二执行运行时执行。
6.如权利要求1所述的计算机可读存储介质,其特征在于,所述运行时不可知表示按照数据流来表达所述一组任务。
7.如权利要求1所述的计算机可读存储介质,其特征在于,所述运行时不可知表示形成有向无环图(DAG)。
8.如权利要求1所述的计算机可读存储介质,其特征在于,所述第一执行运行时对应于单一机器、机器群集或机器云中的一个。
9.如权利要求1所述的计算机可读存储介质,其特征在于,所述计算机系统包括单一机器、机器群集或机器云中的一个。
10.如权利要求1所述的计算机可读存储介质,其特征在于,所述调度器被配置成响应于对应于所述一组任务中的一任务的一组输入数据变得可用而分派所述任务。
11.一种存储计算机可执行指令的计算机可读存储介质,其中所述计算机可读指令在由计算机系统执行时使得所述计算机系统执行一种方法,所述方法包括:
标识用户代码中固有地表达的一组任务和所述一组任务的一组交互;以及
将所述一组任务和所述一组交互转换为所述用户代码的运行时不可知表示。
12.如权利要求11所述的计算机可读存储介质,其特征在于,所述运行时不可知表示按照数据流来表达所述一组任务。
13.如权利要求11所述的计算机可读存储介质,其特征在于,所述运行时不可知表示形成有向无环图(DAG)。
14.如权利要求11所述的计算机可读存储介质,其特征在于,所述方法进一步包括:
选择所述计算机系统中的执行运行时以在运行时执行所述运行时不可知表示。
15.如权利要求11所述的计算机可读存储介质,其特征在于,所述执行运行时对应于单一机器、机器群集或机器云中的一个。
16.如权利要求11所述的计算机可读存储介质,其特征在于,所述计算机系统包括单一机器、机器群集或机器云。
17.一种由至少一个计算机系统执行的方法,所述方法包括:
将用户代码转换为运行时不可知表示,所述运行时不可知表示形成按照数据流来表达一组任务的有向无环图(DAG),其中所述用户代码固有地表达所述一组任务和所述一组任务的一组交互。
从所述计算机系统中的两个或更多个执行运行时的集合中选择第一执行运行时以执行所述运行时不可知表示,所述第一执行运行时是基于所述运行时不可知表示的至少一个试探而选择的;以及
调用调度器以从所述运行时不可知表示分派所述一组任务以使用所述第一执行运行时在所述计算机系统上执行。
18.如权利要求17所述的方法,其特征在于,所述运行时不可知表示能够由所述第一执行运行时和所述两个或更多个执行运行时的集合中的第二执行运行时执行,且所述第二执行运行时不同于所述第一执行环境。
19.如权利要求17所述的方法,其特征在于,所述第一执行运行时对应于单一机器、机器群集或机器云中的一个。
20.如权利要求17所述的方法,其特征在于,所述计算机系统包括单一机器、机器群集或机器云。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/900,705 US9658890B2 (en) | 2010-10-08 | 2010-10-08 | Runtime agnostic representation of user code for execution with selected execution runtime |
US12/900,705 | 2010-10-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102402419A true CN102402419A (zh) | 2012-04-04 |
Family
ID=45884656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103142138A Pending CN102402419A (zh) | 2010-10-08 | 2011-10-08 | 用所选执行运行时执行的用户代码的运行时不可知表示 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9658890B2 (zh) |
EP (1) | EP2625600A4 (zh) |
JP (1) | JP6010540B2 (zh) |
KR (1) | KR101825772B1 (zh) |
CN (1) | CN102402419A (zh) |
CA (1) | CA2813600A1 (zh) |
WO (1) | WO2012047554A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013177765A1 (en) * | 2012-05-30 | 2013-12-05 | Intel Corporation | Runtime dispatching among heterogeneous group of processors |
CN113656164A (zh) * | 2021-08-30 | 2021-11-16 | 阿里巴巴(中国)有限公司 | 任务执行方法、系统、电子设备及计算机存储介质 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600250B2 (en) | 2010-10-08 | 2017-03-21 | Microsoft Technology Licensing, Llc | Declarative programming model with a native programming language |
US9600255B2 (en) | 2010-10-08 | 2017-03-21 | Microsoft Technology Licensing, Llc | Dynamic data and compute resource elasticity |
US9760348B2 (en) | 2010-11-29 | 2017-09-12 | Microsoft Technology Licensing, Llc | Verification of a dataflow representation of a program through static type-checking |
US9471651B2 (en) | 2012-10-08 | 2016-10-18 | Hewlett Packard Enterprise Development Lp | Adjustment of map reduce execution |
US9626261B2 (en) * | 2013-11-27 | 2017-04-18 | Futurewei Technologies, Inc. | Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud |
US9652286B2 (en) * | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
CN106716363B (zh) * | 2014-07-25 | 2021-04-09 | 英特尔公司 | 使用转换后备缓冲器来实现指令集不可知的运行时架构 |
US20160026484A1 (en) * | 2014-07-25 | 2016-01-28 | Soft Machines, Inc. | System converter that executes a just in time optimizer for executing code from a guest image |
US11281481B2 (en) | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
US20160026486A1 (en) * | 2014-07-25 | 2016-01-28 | Soft Machines, Inc. | An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture |
US9733909B2 (en) * | 2014-07-25 | 2017-08-15 | Intel Corporation | System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address |
US10353680B2 (en) | 2014-07-25 | 2019-07-16 | Intel Corporation | System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence |
CN105578259B (zh) * | 2015-12-14 | 2018-10-19 | 四川长虹电器股份有限公司 | 一种基于智能电视下用户观影行为分类方法 |
JP6891399B2 (ja) | 2016-04-11 | 2021-06-18 | 富士通株式会社 | データ処理プログラム、データ処理方法およびデータ処理装置 |
US10409654B2 (en) | 2017-07-13 | 2019-09-10 | International Business Machines Corporation | Facilitating event-driven processing using unikernels |
US10402195B2 (en) * | 2017-10-16 | 2019-09-03 | General Electric Company | Framework for supporting multiple analytic runtimes |
CN108388474A (zh) * | 2018-02-06 | 2018-08-10 | 北京易沃特科技有限公司 | 基于dag的智能分布式计算管理系统及方法 |
US20210200731A1 (en) * | 2019-12-26 | 2021-07-01 | Oath Inc. | Horizontal skimming of composite datasets |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098374A1 (en) * | 2002-11-14 | 2004-05-20 | David Bayliss | Query scheduling in a parallel-processing database system |
CN1653439A (zh) * | 2002-05-10 | 2005-08-10 | 微软公司 | 资源的并发、分布式网络的协作 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978583A (en) | 1995-08-07 | 1999-11-02 | International Business Machines Corp. | Method for resource control in parallel environments using program organization and run-time support |
US6182277B1 (en) | 1998-04-15 | 2001-01-30 | Oracle Corporation | Methods and apparatus for declarative programming techniques in an object oriented environment |
US6457172B1 (en) | 1999-04-13 | 2002-09-24 | International Business Machines Corporation | Compiler for supporting multiple runtime data representations |
US7100164B1 (en) * | 2000-01-06 | 2006-08-29 | Synopsys, Inc. | Method and apparatus for converting a concurrent control flow graph into a sequential control flow graph |
US20030033588A1 (en) * | 2001-01-29 | 2003-02-13 | John Alexander | System, method and article of manufacture for using a library map to create and maintain IP cores effectively |
US7210145B2 (en) | 2001-10-15 | 2007-04-24 | Edss, Inc. | Technology for integrated computation and communication; TICC |
US7055142B2 (en) * | 2002-05-10 | 2006-05-30 | Microsoft Corporation | Permutation nuances of the integration of processes and queries as processes at queues |
US6999958B2 (en) * | 2002-06-07 | 2006-02-14 | International Business Machines Corporation | Runtime query optimization for dynamically selecting from multiple plans in a query based upon runtime-evaluated performance criterion |
US7000151B2 (en) | 2002-07-18 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | System and method for providing run-time type checking |
US8122106B2 (en) | 2003-03-06 | 2012-02-21 | Microsoft Corporation | Integrating design, deployment, and management phases for systems |
US7415700B2 (en) | 2003-10-14 | 2008-08-19 | Hewlett-Packard Development Company, L.P. | Runtime quality verification of execution units |
US20050166182A1 (en) | 2004-01-22 | 2005-07-28 | Microsoft Corporation | Distributed semantic schema |
US7676791B2 (en) | 2004-07-09 | 2010-03-09 | Microsoft Corporation | Implementation of concurrent programs in object-oriented languages |
US7458066B2 (en) * | 2005-02-28 | 2008-11-25 | Hewlett-Packard Development Company, L.P. | Computer system and method for transferring executables between partitions |
US7401329B2 (en) | 2005-04-25 | 2008-07-15 | Arm Limited | Compiling computer programs to exploit parallelism without exceeding available processing resources |
US7774750B2 (en) | 2005-07-19 | 2010-08-10 | Microsoft Corporation | Common concurrency runtime |
US7853923B2 (en) | 2005-12-29 | 2010-12-14 | Sap Ag | Specific runtime generators in a visual modeling language environment |
US7689582B2 (en) | 2006-03-10 | 2010-03-30 | International Business Machines Corporation | Data flow system and method for heterogeneous data integration environments |
US7739663B2 (en) | 2006-05-16 | 2010-06-15 | International Business Machines Corporation | Method, system and program product for validating a runtime environment |
JP4936517B2 (ja) | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US7660884B2 (en) | 2006-11-10 | 2010-02-09 | International Business Machines Corporation | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system |
US8010954B2 (en) | 2007-02-14 | 2011-08-30 | The Mathworks, Inc. | Parallel programming interface to dynamically allocate program portions |
US7926035B2 (en) | 2007-04-24 | 2011-04-12 | Microsoft Corporation | Testing multi-thread software using prioritized context switch limits |
US20080282238A1 (en) | 2007-05-10 | 2008-11-13 | Microsoft Corporation | Static type for late binding |
US8296743B2 (en) * | 2007-12-17 | 2012-10-23 | Intel Corporation | Compiler and runtime for heterogeneous multiprocessor systems |
US8495594B2 (en) | 2008-01-10 | 2013-07-23 | International Business Machines Corporation | Method and system for providing a componentized resource adapter architecture |
US7783782B2 (en) * | 2008-05-23 | 2010-08-24 | Raytheon Company | Dynamic runtime service oriented architecture |
US7747742B2 (en) | 2008-06-27 | 2010-06-29 | Microsoft Corporation | Online predicate checking for distributed systems |
US8473897B2 (en) | 2008-10-03 | 2013-06-25 | Microsoft Corporation | Common intermediate representation for data scripting language |
US7979844B2 (en) | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
US8528001B2 (en) | 2008-12-15 | 2013-09-03 | Oracle America, Inc. | Controlling and dynamically varying automatic parallelization |
US20100175049A1 (en) | 2009-01-07 | 2010-07-08 | Microsoft Corporation | Scope: a structured computations optimized for parallel execution script language |
US20100250564A1 (en) | 2009-03-30 | 2010-09-30 | Microsoft Corporation | Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution |
US9600255B2 (en) | 2010-10-08 | 2017-03-21 | Microsoft Technology Licensing, Llc | Dynamic data and compute resource elasticity |
US9600250B2 (en) | 2010-10-08 | 2017-03-21 | Microsoft Technology Licensing, Llc | Declarative programming model with a native programming language |
US9760348B2 (en) | 2010-11-29 | 2017-09-12 | Microsoft Technology Licensing, Llc | Verification of a dataflow representation of a program through static type-checking |
-
2010
- 2010-10-08 US US12/900,705 patent/US9658890B2/en active Active
-
2011
- 2011-09-23 EP EP11831225.5A patent/EP2625600A4/en not_active Withdrawn
- 2011-09-23 WO PCT/US2011/053006 patent/WO2012047554A1/en active Application Filing
- 2011-09-23 CA CA2813600A patent/CA2813600A1/en not_active Abandoned
- 2011-09-23 JP JP2013532828A patent/JP6010540B2/ja active Active
- 2011-09-23 KR KR1020137008779A patent/KR101825772B1/ko active IP Right Grant
- 2011-10-08 CN CN2011103142138A patent/CN102402419A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1653439A (zh) * | 2002-05-10 | 2005-08-10 | 微软公司 | 资源的并发、分布式网络的协作 |
US20040098374A1 (en) * | 2002-11-14 | 2004-05-20 | David Bayliss | Query scheduling in a parallel-processing database system |
Non-Patent Citations (1)
Title |
---|
CONSTANTINE D. POLYCHRONOPOULOS: "The Hierarchical Task Graph and its Use in Auto-Scheduling", 《THE 5TH INTERNATIONAL CONFERENCE ON SUPERCOMPUTING, NEW YORK: ACM》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013177765A1 (en) * | 2012-05-30 | 2013-12-05 | Intel Corporation | Runtime dispatching among heterogeneous group of processors |
US9280395B2 (en) | 2012-05-30 | 2016-03-08 | Intel Corporation | Runtime dispatching among a heterogeneous group of processors |
US10331496B2 (en) | 2012-05-30 | 2019-06-25 | Intel Corporation | Runtime dispatching among a hererogeneous groups of processors |
CN113656164A (zh) * | 2021-08-30 | 2021-11-16 | 阿里巴巴(中国)有限公司 | 任务执行方法、系统、电子设备及计算机存储介质 |
CN113656164B (zh) * | 2021-08-30 | 2024-05-03 | 阿里巴巴(中国)有限公司 | 任务执行方法、系统、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CA2813600A1 (en) | 2012-04-12 |
US9658890B2 (en) | 2017-05-23 |
WO2012047554A1 (en) | 2012-04-12 |
US20120089968A1 (en) | 2012-04-12 |
KR20130122619A (ko) | 2013-11-07 |
KR101825772B1 (ko) | 2018-02-05 |
JP6010540B2 (ja) | 2016-10-19 |
JP2013545169A (ja) | 2013-12-19 |
EP2625600A1 (en) | 2013-08-14 |
EP2625600A4 (en) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402419A (zh) | 用所选执行运行时执行的用户代码的运行时不可知表示 | |
US10592218B2 (en) | Dynamic data and compute resource elasticity | |
US10585653B2 (en) | Declarative programming model with a native programming language | |
JP5984158B2 (ja) | 異種構成コンピュータ上でハイ・レベルのプログラムをコンパイルし、実行するための技法 | |
KR101900796B1 (ko) | 기민 통신 오퍼레이터 | |
CN102027447B (zh) | 调度器中的局部任务集合 | |
JP5957006B2 (ja) | 拡張可能なデータ並列セマンティクス | |
CN102047218A (zh) | 进程中的调度器实例 | |
Cicotti | Tarragon: a programming model for latency-hiding scientific computations | |
Jain et al. | Charm++ and MPI: Combining the best of both worlds | |
JP2021034023A (ja) | アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置 | |
Gioiosa et al. | The minos computing library: Efficient parallel programming for extremely heterogeneous systems | |
CN102047217A (zh) | 重新获取对执行外部执行上下文的处理资源的控制 | |
Papadimitriou et al. | Multiple-tasks on multiple-devices (MTMD): exploiting concurrency in heterogeneous managed runtimes | |
Tardieu et al. | X10 and APGAS at Petascale | |
Nguyen et al. | Perilla: Metadata-based optimizations of an asynchronous runtime for adaptive mesh refinement | |
Finnerty et al. | Supercharging the APGAS programming model with relocatable distributed collections | |
Chard et al. | Productive Parallel Programming with Parsl | |
CN103064668A (zh) | 文件处理方法及装置 | |
Gazit | A deterministic parallel algorithm for planar graphs isomorphism | |
Uddin | Microgrid-The microthreaded many-core architecture | |
Campeanu et al. | The realization of flexible GPU components in Rubus | |
Medeiros et al. | Grid programming frameworks | |
WO2022253451A1 (en) | Task-centric job scheduling method and system for heterogeneous clusters | |
JP2020113244A (ja) | Rtosアプリケーションデバッグ装置及びrtosアプリケーションデバッグ方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150803 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150803 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120404 |