CN103262064A - 分布式计算体系结构 - Google Patents
分布式计算体系结构 Download PDFInfo
- Publication number
- CN103262064A CN103262064A CN2011800607428A CN201180060742A CN103262064A CN 103262064 A CN103262064 A CN 103262064A CN 2011800607428 A CN2011800607428 A CN 2011800607428A CN 201180060742 A CN201180060742 A CN 201180060742A CN 103262064 A CN103262064 A CN 103262064A
- Authority
- CN
- China
- Prior art keywords
- codelet
- scheduler
- level
- type
- language environment
- 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
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, e.g. post-wait, barriers, locks
Abstract
一种分布式计算系统可以并入执行模型、位置管理方案、调度方案、类型系统和/或异质系统管理的实现方式。
Description
相关申请的交叉引用
本申请为非临时申请,其要求2010年12月16日提交的美国临时专利申请号61/424,052的优先权,所述美国临时专利申请的全部内容以引用的方式并入本文。
技术领域
本发明的各种实施方案可以涉及用于实施分布式计算的计算环境的各种方面。
背景技术
调制解调器高端计算机(HEC)体系结构可以使以下具体化:具体包含数千至数百万的处理单元、大量的具有不同程度的非局部存储的分布式存储器、联网组网以及存储保存基础结构的分布式存储器。这些系统为由执行应用程序所利用的资源的静态和动态最化二者最佳化呈现一个极好的机会。传统上,计算机体系结构进行详细分析以而向应用程序呈现单一的、单个统一的地址空间,连同用于代码的顺序执行和对数据的访问的合理的语义。所得范例已经良好服务多年,但是当计算和数据二者都被分布时,并且当事实上经由借助并行处理而不是增大的时钟频率来完成所有硬件加速时,所得范例却变成最优资源分配的障碍。
有效分布式计算中的一个巨大挑战是能够提供具有以下功能的系统软件:在为应用程序代码的写入器提供计算的可用抽象计算模型的同时,做出对底层硬件的最优使用。这一般可能需要沿系统元件的频谱而做出始终如一的选择,以使得控制、监控、可靠性以及安全在每个水平层面都是相干的。计算机规范系统、协调系统以及具有清晰和合理的语义的语言同样是必要的,以使得相当大部分的应用程序开发者人员的子集可以在新环境中富有成效地工作。此外,将会需要支持应用程序代码的有效分布式执行的编译器或翻译器,并且可能需要相关开发工具以来向开发者提供关于应用程序代码的执行的选项和见解(insight)。
驱动HEC开发的应用程序一般可以包括:图形分析应用程序,如图形搜索、最小路径搜索以及最大流分析;广义优化应用程序,包括非线性和混合整数编程和随机优化;以及科学计算应用程序,包括图像分析、数据挖掘以及有限元模拟。更大的使用者导向问题也是HEC的目标,并且可以包括信息搜索和索引、文本分析以及信息抽取。
发明内容
本发明的各种实施方案可以涉及用于实施分布式计算系统的硬件、软件和/或固件,以及方法。这类实施方案可以并入执行模型、位置管理方案、调度方案、类型系统和/或异质系统管理的实现方式。
附图说明
现在将结合附图更加详细地描述本发明的各种实施方案,其中:
图1展示根据本发明各种实施方案的分布式计算系统的概念框图;
图2展示可以并入在本发明各种实施方案中的或可以利用本发明各种实施方案的系统的概念框图;
图3示出根据本发明各种实施方案的、对用于通信的密钥传递的使用;
图4展示本发明实施方案的概念层次表示;
图5展示根据本发明各种实施方案的上下文层级;
图6展示根据本发明各种实施方案的nodelet实施例;
图7展示根据本发明各种实施方案的存储映射的实施例;
由图8a至图8c组成的图8展示根据本发明各种实施方案的示例性类型层级;
由图9a至图9b组成的图9展示根据本发明各种实施方案的分级工作窃取调度器操作;
由图10a至图10d组成的图10展示本发明的各种实施方案中datalet在其涉及codelet行为时的行为。
具体实施方式
在分布式计算系统中,单一程序可以在多个处理设备上执行。图1示出展示此类系统可以如何实施的实施例。用户设备11可以用于准备有待执行的程序(包括允许用户写入程序)。用户设备可以与各种处理设备12a、12b、……、12n进行通信,这些处理设备可以用于执行所述程序的方面的各种处理设备12a、12b、……、12n进行通信。所述处理设备可以彼此间互连13和/或与用户设备11互连。用户设备和/或处理设备的各种之一可以包括计算系统,如图2中所示的实施例。应注意,用户设备11还可以并入充当所述分布式计算系统的一部分的处理设备。还应注意,一个或多个处理设备12a、12b、...、12n可以包括在如多核中央处理单元(CPU)的单处理器包中。
图2展示可以用于实施本发明的实施方案的各种形式和/或部分的示例性系统。此类计算系统可以包括可以连接至一个或多个系统存储器21的一个或多个处理器22。此类系统存储器21可以包括(例如)RAM、ROM或其它类似机器可读介质,并且系统存储器21可以用于并入(例如)基本I/O系统(BIOS)、操作系统、用于由处理器22执行的指令等。所述系统还可以包括其它存储器23,如另外的RAM、ROM、硬盘驱动器或其它处理器可读介质。处理器22还可以连接耦接到至少一个输入/输出(I/O)接口24。I/O接口24可以包括一个或多个用户接口,以及用于各种类型存储介质的阅读器和/或与一个或多个通信网络的连接(例如,通信接口和/或调制解调器),从所述通信网络可以获得(例如)软件代码。此类计算系统可以(例如)用作相应平台,在所述平台上运行转译软件和/或控制、容纳仿真系统或与所述仿真系统对接。此外,其它设备/介质,如FPGA,也可以附接至系统并且与所述系统进行互动。
如上文所论述的,在实施分布式计算系统时,可能存在许多需要考虑的问题。例如,其中一个问题是,可能需要考虑如何分布任务、如何安排处理设备中数据的互动/交换(例如,图1的12a、12b、……、12n和/或用户设备11)、如何促进有效执行、如何促进用于此类系统的程序的准备等。
为适应分布式计算环境的各个方面,用于此类环境的运行时间体系结构可以为程序组件提供细粒调度服务,并且为了达到此目的,所述程序可以与传统执行系统和相关联编程语言(如C语言)中所投射的程序,按照不同的方式进行分解。因此可以在“本机”C/P线程执行模型(由大多数其它命令式语言所共享的模型)与可以用于本发明各种实施方案中的执行模型之间做出区别,所述“本机”C/P线程执行模型通常由大体上独立的线程组成,所述线程使用各线程单调堆栈来调用可重入函数。
本发明的实施方案可以使用基于“codelet”的执行模型,所述codelet可以相对于运行时间的调度算法而单独地组成基本执行单元。Codelet可以包括以下内容:
·有待在正常情况下执行的任务的描述,以便推进程序的状态。这是codelet的“运行叉路”。
·有待在异常情况下执行的任务的可选描述,以便安全地退出程序状态。这是codelet的“取消叉路”。
·codelet所期望的上下文帧类型的描述(如果有的话)。上下文输入至Codelet的上下文帧类似于传递至面向对象语言中方法的隐含的这个/自我参数。“上下文”是指可以由codelet(或,一般来说,任何规程)用来记下其状况或状态(例如,变量、缓存值等)的信息。
·codelet所期望的输入数据类型的描述(如果有的话)。
Codelet可以在运行时间环境内表示为以下描述符对象:包括对用于每个叉路的函数(运行和取消)的引用,连同对上下文和输入类型的描述。
当它开始执行时,codelet可以接收对其上下文和输入的引用,连同可以用于允许codelet管理其与系统硬件的关系的对环境缓冲区的引用。另外,codelet可以接收对另外“链式codelet”(参看下文)和相关联“链式上下文”的引用,所述“链式codelet”和相关联“链式上下文”应该在codelet所启动的活动完成时运行上下文。
为运行codelet,可以通过用调度器(下文将会进一步论述调度器)记录对codelet、上下文以及输入的引用来准备好“codelet实例”。Codelet引用还可以用于在准备就绪的不同阶段创建部分codelet实例;例如,可以记录等待来自网络的输入的codelet在网络接口上的上下文,并且稍后可以填充其输入,以便在数据从网络达到时完成codelet实例。
一旦调度器选择用于执行的codelet,那么此codelet可以变成“活动的”并且一般可以运行至完成而没有占先或阻断。这意味着codelet可以在其执行的持续时间内专门地利用其处理线程。如果codelet遇到传统上将会导致阻断(例如,从文件读取)的情况,那么codelet可能向其上下文泄露任何非易失性数据,通过适当的软件接口记录链式上下文和codelet,并且结束其执行,从而放弃对运行时间系统的控制。一旦记录事件发生,那么所记录的链式codelet可以根据上下文打开状态并且在较早codelet中断处恢复执行。这个机制可以允许在codelet所使用中的硬件资源被放弃并且在长延迟操作完成时重新用于其它工作,而不需要可以包括操作系统的重量级任务或线程切换机制。这个机制还可以用于产生多个codelet,例如,通过用调度器记录若干codelet实例。
在一些情况下,可能有必要使用一个以上codelet来完成任务。例如,从文件读取一行文本可能包括任何数量的阻断操作,每个阻断操作需要codelet向其上下文泄露、记录以便恢复、结束并且最终恢复。朝向单一目标工作的一组codelet可以称为“codelet复合体”。通常,复合体中的所有codelet可以使用同一上下文对象,不论单独地依次还是并行地一起使用同一上下文对象。Codelet还可以形成“子复合体”,所述“子复合体”代表总体“超复合体”来执行任务的一个较小部分。例如,codelet复合体可以用于从文件读取一行文本,超复合体可以在解析整个文件并且将其数据存储在存储器中时使用此复合体,超-超复合体可以使用所述解析复合体以便在投送至应用内核之前准备好其配置数据等。就对程序结构的作用而言,复合体因此可以被认为是类似于高水平编程语言中的子例程;然而,它们没有必要如同大多数语言中的子例程一样服从后进先出(LIFO)顺序要求。
如上文所提及的,当codelet开始执行时,可以给予codelet对链式codelet和上下文的引用,所述链式codelet和上下文一起可以称为“链对”。这可以提供简单机制,所述简单机制用于指示对一些任务完成的依赖,并且可以被看作与通常隐含地传递至任何传统子例程调用中的返回地址有关。为再次访问以上的行读取实施例,向启动行读取复合体的codelet传递链对可以使得在读取整行之后准备好链式codelet,而新读取的文本作为其输入。
在活动的codelet内,执行模型可以类似于传统的、基于堆栈的模型,并且假设底层平台支持所述codelet,那么它便可以正常地进行函数调用。Codelet还可以通过显式地“屈服”于运行时间软件而临时地暂停其自己的执行,这可以允许一个或多个其它codelet在同一程序堆栈上运行,犹如从所暂停的codelet内直接调用一样,此后,调度器可以恢复所暂停codelet的执行,犹如未发生任何事一样。
根据本发明的运行时间环境实施方案可以支持用于在codelet内使用的传统函数调用和/或基于堆栈的异常处理,并且可以另外地支持双向异常恢复语义,所述双向异常恢复语义在可能的情况下可以允许快速、简单的差错恢复。然而,通过基于堆栈的机制,在codelet之间传送异常或许是不可能的,因为所述codelet在程序堆栈上可能不是彼此直接相关的,并且将很可能没有清晰的LIFO排序。为此,每个codelet可以具有可选取消叉路,所述取消叉路可以在链接过程中使用。
通过正常地运行链式codelet(借助运行叉路)或通过取消所述链式codelet(借助取消叉路)可以处理所述链式codelet。与基于堆栈的异常投掷可以将异常传送至调用者函数中非常相似,取消叉路可以用于将异常传达至链式codelet中。与链对可以传递至运行叉路中以支持完成非常相似,链对可以传递至codelet的取消叉路中以提供对差错恢复之后的恢复支持。根据本发明的各种实施方案,codelet可以与当前盛行的基于函数的和基于堆栈的执行模型密切相关,并且可以充当所述执行模型的扩展。函数与codelet之间的主要差异是:
·除了由codelet它们自己的行为所强制执行的那些约束之外,codelet相对于彼此未被强加排序约束(LIFO或以其它方式);
·Codelet接受链对而不是返回地址和调用者的堆栈/异常帧指示符;并且
·链对可以在codelet变成活动状态之后的任何时间(包括在codelet的执行或暂停过程中)触发,而函数的返回可能不会与函数自身的执行重叠。
因为强加在codelet上的要求比强加在函数上的要求弱,所以codelet可以用于实施传统风格的LIFO排序的函数。
当然,主要因为其极低的开销,传统基于堆栈的机制可能仍是有用的;堆栈上的数据分配可能仅需要加法和减法运算,并且函数调用可以通常仅仅包括寄存器存储或堆栈推入运算。由此推断,对于codelet生成编译器来说,将已链接的codelet调用转化成codelet内LIFO函数调用可能非常类似于非codelet生成编译器内联化函数调用。在可能的情况下,如果编译器生成基于codelet形式和函数形式二者的输出,那么所述编译器或许还有可能在低开销、同步的(LIFO)基于函数的调用与高开销异步的基于codelet的调用之间静态地或动态地进行选择。
除了提供对codelet的支持之外,本发明的实施方案可以提供对“datalet”的支持,datalet是提供更好的对静态数据流编程的内置支持的对codelet的扩展。Codelet可以接受单一上下文、输入以及链对,并且一旦准备好这些数据就可以加以执行。Datalet可以接受单一上下文和链对,但是却还可以接受任何数量的相应输入,所述输入可以异步地、按照任何顺序进行准备和指派。与codelet一样,datalet可以具有可以允许运行时间组件直接地引用datalet的存储器中的相关联的描述符,并且这个描述符可以包括codelet描述符的所有组件(包括对运行/取消叉路的引用),连同对所有输入和其类型的描述以及对应用程序提供的运行和取消叉路函数的引用。因为datalet行为可以扩展codelet行为,所以所述datalet的codelet方面可以使用单独的内部运行和取消叉路函数,以便接受和准备所述datalet的输入并且启用datalet特定的运行/取消叉路函数。Datalet的内部运行/取消叉路在下文中被称为其“控制叉路”(例如,其控制运行叉路或控制取消叉路),并且应用程序特定的叉路被称为“应用程序叉路”。图10a和图10b示出codelet叉路(图10a)和datalet叉路(图10b)之间的差异。
当向datalet指派输入时,输入的标识符(例如,整数)、输入的值以及有待在不再需要所述输入时执行的链对可以作为输入一起传递至datalet的控制运行叉路。在开始时,控制运行叉路可以采取任何必要的动作,来准备稍后由datalet应用程序运行叉路加以使用的输入,和/或调度应用程序运行或取消叉路用于执行(图10c)。取消datalet可能导致针对具体上下文所收集的输入丢弃,并且datalet的应用程序取消叉路可能作为结果而被调用(图10d)。不管用于启动应用程序叉路的方法如何,一旦输入已经被datalet“消耗”—也就是说,一旦应用程序叉路已经使得将要执行其链对—可以派遣利用输入传递的任何链对。通过将运行时间内部链对从控制叉路传递至应用程序叉路,然后使用链式codelet来清理datalet输入,本发明的实施方案可以实现上述过程。
几种datalet行为可能是尤其有用的,并且和逻辑“与”、“或”以及“异或”运算符相对应。基于“与”的datalet可以在所有特定的输入已经被接收并且准备好以供使用之后,运行其应用程序运行叉路(对控制运行叉路使用上下文参数,从而映射至特定输入值的队列),并且一旦已经针对具体上下文收集到所有输入值,就可以将所述值移出队列并且可以启动datalet的应用程序运行叉路。如果已经收集到任何或所有输入,基于“或”的datalet可以运行其应用程序运行叉路;在其它行为中,不同的实施方案可以一收集到任何一个输入就选择运行应用程序运行叉路(实际上和基于“异或”的datalet相同的行为),可以等待直到已经收集到一些最小数量的输入,或者可以等待一些短暂的延迟而允许输入进行累积。一接收到单一输入,基于“异或”的datalet就可以运行其应用程序运行叉路,并且可以仅将此单一输入传递至所述应用程序运行叉路中。本发明的实施方案可以实施或提供其它datalet行为(例如,定时的基于“非”或基于“或非”的datalet)。另外,一些实施方案可以提供动态指定的输入列表和类型。
根据本发明各种实施方案的系统,可以粗略地沿图4中所示的分级线加以划分。计算“全域”可以包括一个或多个运行时间系统,如系统41、42以及43。给定的运行时间系统可以包括一个或多个主机,如主机411。主机可以包括一个或多个处理节点,如节点4111。处理节点4111可以用于运行一个或多个软件或硬件线程41111。
Codelet执行可以发生在硬件或软件线程上,所述硬件或软件线程可以由运行时间系统加以管理。这些线程可以基于较易在其间共享的信息程度而聚集在一起;例如,共享一个缓存器的两个线程可以聚集在一起,或一个主机上的所有内核可以而聚集在一起。这些组群可以嵌入至树状结构或“语言环境树”中,所述树状结构或“语言环境树”可以用于描述分布式平台上所执行软件的通信特征。
树中的每个语言环境可以具有相关联的存储资源和处理资源,所述存储资源和处理资源可以在语言环境内分别管理存储空间和处理时间的分配。枝叶(即,底部层面并且无子代的)语言环境、分配器以及调度器可以管理它们的描述硬件或软件结构内的空间/时间分配,而更高层面的语言环境的分配器和调度器可以管理它们自己的和/或它们下代的分配,从而潜在地允许下代硬件和软件资源的聚合。
因为语言环境可以代表计算系统的有界区域,所以由本发明实施方案所提供的、通向语言环境的软件接口可以在那些区域之间、在正常地需要特殊软件支持或显式处理的边界上提供数据的传送和控制。语言环境可以实现包括以下的全异数据传送方法的提取:地址内空间数据传送(例如,指示符共享和批量复制)、节点内地址间空间传送(例如,共享存储映射或使用局部套接字接口),和/或节点间传送(例如,网络/总线互连上的显式基于包/报文的通信)。
除了数据传送之外,在一个语言环境内执行的codelet可以变宽、变窄或在语言环境树内整体地迁移其执行范围。这可以允许程序组件的执行显式地或隐含地转发至数据(所述执行需要作用于所述数据),并且可以允许系统动态地对数据可用性和布局做出反应。
用于管理语言环境的技术可以进一步辅助管理与系统内的非均匀性有关的问题。因为所预期的是,未来计算系统将会表现出大量的硬件非均匀性,所以可能令人满意的是设计一种分布式运行时间系统来良好地处理所述硬件非均匀性。通过使用于通信的提取、调度以及存储分配统一,本发明的实施方案可以实现简单明了的执行分布。
以上所描述的语言环境树可以被扩展以描述全异硬件组件(如果有的话)。例如,通过特别适用于具有附接的存储器的GPU的其自己的调度器和分配器,可以给予所述GPU以其自己的语言环境。因为codelet可以被表示为运行时间的高水平多态对象,可以用codelet对象存储运行或取消叉路的多种形式,例如,一种用于CPU体系结构而一种用于GPU体系结构,然后,所述运行时间可以根据需要从所述形式自动地进行选择。因为可以允许既自动又显式的调度,所以程序可以将codelet显式地定位并且调度至(例如)GPU,或它们可以在运行时间和适当工作变得有效时使得所述运行时间调度至GPU。本发明的运行时间系统的实施方案还可以允许通常不兼容的体系结构的整合;例如,使用下文所论述的可传送接口类型(下文进行更详细论述),可以在小端法体系结构与大端法体系结构之间,或在具有不同指示符格式的体系结构之间轻易地转移数据,以便在所述体系结构各自的语言环境之间移动数据。(另一方面,不使用可传送接口,可以允许将对象隐含地锁定至其地址空间中,尽管具有压缩垃圾收集的系统可能仍将所述对象重新定位在所述地址空间内)。
在许多情况下,使用语言环境作为数据传送的基础,还可以使得网络化计算节点之间的边界有可能被应用程序忽略。只要程序组件使得足够的局部数据和可供使用的存储空间运行,那个组件的执行在哪或在硬件的哪个精确片段上发生可能无所谓。通过允许运行时间管理通信和执行布局,可以根据需要透明地转移应用程序组件,以便(例如)减小通信开销,或者平衡局部处理或存储负载。
语言环境层级可以由codelet调度器和/或其它软件资源使用,以便导出位置的粗略测量结果,并且因此辅助确定codelet执行和/或上下文的布局。在一个实施方案中,默认行为可以是要求配合codelet来共享存储器中的单一上下文区块—并且这些codelet可能正在这个上下文区块附件的某处理想地执行。在另一个实施方案中,多个高度并行的codelet复合体跨越系统资源的较大收集来分布它们的执行是令人满意的。
为此,复合体可以利用几层上下文,所述几层上下文可以安排在覆盖于语言环境树顶部上的树状结构中上下文;图5展示上下文层的实施例。上下文层树的枝叶可以表示大多数定域的上下文区块,所述语言区块可以与codelet及其容易并且直接看见的上下文相对应上下文。通过来自枝叶上下文的父指示符,较少的定域上下文区块可以进行引用(尽管生成可与所述运行时间系统的实施方案兼容的代码的编程语言可以模糊通过这些指示符对更高水平层的引用)。因此,多层上下文(在图5的实施例中,是三层上下文,本发明不限于所述三层上下文)可以用于提供在运行于单一CPU内核中的不同硬件线程上的codelet中共享的上下文层、运行于单一NUMA节点或主机上的codelet之间共享的另一层,以及在一个复合体中的所有codelet当中共享的其它层。尽管正常的单层规程上下文可以在codelet之间直接地共享,但是在一些状况下或在一些实施方案中,可能有必要使用显式资源管理调用来显式地清除更高层上下文,以便使存储在那里的数据同步。在典型的实施方案中,当更低层上下文变成未使用的并且它们的存储被收回时,更高层上下文可以自动地清除。在替代实施方案中,上下文信息的更新可以延期直到需要当前信息。
当在使本发明具体化的运行时间中执行的每个codelet启动时,所述codelet可以提供有“环境缓冲区”。环境缓冲区可以包括对以下内容的引用:codelet当前正在其中执行的语言环境;可以指定最新的跳跃和codelet复合体的执行路线的始发站的起源和发送器语言环境;以及可以指定路程的下一个跳跃和最终跳跃的接收器和目的地语言环境。环境缓冲区可以由使用它的codelet修改,以便重新定向其执行路径(例如,通过使环境缓冲区转向以产生延迟)。除了在codelet开始执行时传递至codelet中之外,codelet的当前环境缓冲区可以存储在线程局部存储区域中或由线程局部指示符加以引用。当前环境缓冲区—具体来说,当前和接收器语言环境—可以由运行时间使用来选择应该在其中完成分配和调度请求的语言环境。因此,如果codelet将其环境缓冲区的接收器指示符设定成引用另一个线程的语言环境,那么所分配的任何存储器可以默认地从那个线程语言环境的分配器进行分配,并且所调度的任何其它codelet可以默认地调度至那个线程。然而,codelet还可以规避它们的环境缓冲区,并且显式地指定用于此类操作的目标语言环境。
在本论述中,将会存在并且已经存在对“资源”的引用。出于本申请的目的,资源是在其上可能存在控制或数据相依、包括进程或接口的东西;即,如果资源包括硬件,那么出于本申请的目的,资源是硬件的软件接口而不是硬件本身(例如,硬件处理设备的软件接口),除非另有说明(例如,明确地描述为“硬件资源”、“设备”等)。在其它事物中,资源可以包括但不必要限制于:处理资源,如CPU线程/内核的接口;存储资源,如芯片上或芯片外RAM和磁盘上的文件的接口;通信资源,如网络套接字;共享数据结构;以及可执行代码。通过对获取和放入操作的使用,资源互动可以发生。放入操作可以用于将数据推进至资源中,并且一旦结束就可以引起代表其启用进程的一些用户指定的链式codelet的执行,而获取可以用于从资源抽取数据,并且可以在结束时引起用户指定的链式codelet的执行。给予获取和放入操作的链式codelet称为“完成codelet”,或者与相关联的链式上下文被称为“完成对”,因为它们仅在讨论中的操作完成之后执行。
为促进互动资源之间/当中的树状“会话”,本发明的实施方案可以使用“密钥”来标记与资源的数据/控制交换。密钥充当用于与资源的一系列交互的状态的描述符,或充当用于此类描述符的选择器(即,所述描述符的直接或间接指示符)。每个放入和获取操作可以根据资源的以下行为接受和/或生成密钥值:
·传递用于放入/获取的空密钥可以用于启动新会话。尽管此类操作可以隐含地指代资源的内部状态,但它不被认为是指任何特定的先前放入/获取操作。
·根据放入/获取生成空密钥可以指示不应该或不需要为当前会话尝试稍后操作,从而终止交换。然而,取决于所述资源,它也许有可能是指再次传递至早先放入操作中的密钥。
·针对放入/获取而传递非空密钥可能是指现有会话,并且可以使操作与生成所述密钥的先前一个操作相关联。如果资源允许的话,多次使用所述密钥可以启动从第一会话分支出来的多个会话;然而,这种行为可能仅对于一些状况来说是适当的。
·根据放入/获取生成非空密钥可以指示稍后操作可能是指当前的一个操作。
·将密钥传递至未生成所述密钥的资源可能导致错误,并且密钥可以偶尔地被定域至运行时间环境中的具体场所。
图3示出可以由密钥传递支持的会话的三个种类。在图3中由“(a)”特指的会话可以是单操作会话。在这个会话中,空密钥被展示为操作输入,并且空密钥由所述操作生成。会话(b)可以被认为是顺序会话。在这个会话中,空密钥可以用作第一操作输入,响应于所述第一操作输入可以生成密钥1。密钥1然后可以作为输入用于第二操作,并且可以由所述第二操作生成密钥2。密钥2然后被输入至可以生成空密钥的第三操作。最后,在会话(c)中,空密钥可以作为输入用于可以生成密钥1的第一操作。密钥1还可以(以第一操作中的顺序或并行地)作为输入用于可以生成空密钥的其它操作。
本发明的实施方案可以支持高水平构造,所述高水平构造提取由codelet复合体上下文所使用的上下文的设置和拆除,并且当需要并行形式的传统LIFO请求应答行为时还可以辅助复合体。尽管本机函数调用的使用对于司空见惯的事或轻量级行动(如API调用或小计算)来说可能是优选地可接受的,但是就资源而言,通过利用“高水平规程”,可以实施程序中的较大函数。
可以像其它资源一样处理规程—一个可以将参数放进规程中和/或将相关联的返回值从规程取出。因为,根据本发明的实施方案,规程可以被认为是资源,每个规程存在于运行时间的视野中作为具有相关联的可执行代码的存储器中的小的资源描述符。
每个主动执行规程具有相关联的上下文,所述上下文存储由规程使用以记下其状况或状态(例如,变量和缓存值)的任何信息,如早先所提及。当在规程上启用“放入”时,可以在准备启动所述规程运行中创建新的规程上下文,在执行过程中,用参数输入使所述新的规程上下文的一部分初始化,为返回值保留一部分,并且为所述规程自己的使用而保留剩下部分。一旦已经创建上下文,可以调度规程的任何进入codelet以运行,并且可以另外地调度codelet以通知调用者放入已经完成。当调用者需要规程的输出值时(或,在没有输出值的情况下,当所述调用者需要规程的完成的通知时),所述调用者可以使用可能已经从原始“放入”返回的密钥向规程资源发出“获取”。一旦规程已经完成执行并且已经生成输出值(如果有的话),所述值就可以经由来自前面提及的获取操作的完成codelet而传递回到所述调用者。注意:当与规程资源进行交互时,事件排序是最低顺序的;规程上下文可以在初始放入操作之后的任何时间被初始化,放入完成codelet可以在已经启动进入codelet之后的任何时间执行,获取操作可以在放入完成codelet启动之后的任何时间启动,并且获取完成codelet可以在所述规程完成之后的任何时间启动。
此类运行时间和执行模型的扩展可以为充当高水平协同例程的规程提供支持。通过使用特定密钥控的放入操作,一个可以将逐次值推进至执行规程中,并且使用多个获取操作,一个可以将值取出。这可能尤其适用于可能被点检查的或其上下文可以被版本化的规程,或在可以用不同的输入值重新启动规程的执行的具体分支的情况;它还适用于在规程与它们的调用者之间确立请求应答交互范例。
在本发明的实施方案中,存储资源可以充当具体存储场所的管理器。当将对象推进至存储资源中时,可以分配用于对象的空间,所述对象可以被复制在所述空间中,并且可以生成用于所述对象的密钥。如果所需要的存储空间的量是难以获得的,那么放入可能不能立即满足请求,并且甚至可能彻底失败或回落至辅助存储器。
存储于存储资源中的数据可以使用根据将其放置在资源中的放入所生成的会话密钥可访问的同时,它也可以被“映射”至可寻址的存储器中,从而允许应用程序获得局部指示符,通过所述局部指示符可以访问所述数据。图7展示用于满足映射请求的存储资源、应用程序的局部地址空间以及存储-资源-私人地址空间之间的关系的概念图。如果不可能获得直接映射至所需要的资源中的地址,那么代替地,可以创建所存储的对象的局部复本。本发明的一些实施方案可以自动地使对映射所做出的变化(包括被复制的对象)同步;其它实施方案可能需要与存储资源的进行显式互动使变化同步。当不再需要所述映射时,所述映射可能被毁坏来释放地址范围或与其相关联的存储器。映射可以另外地允许用户指定将如何使用数据并且应该如何做出所需要的映射,这可能包括作为访问许可的此类选项和/或用于所述映射的缓存规则。应注意,也许不可能先验地做出关于所映射的数据是否可以在多个应用程序组件之中共享的任何保证;即使某个数据知道存储资源必须维持所映射的范围的局部复本,如果局部地做出多个映射,那么局部复本也可能仍被共享。
尽管存储资源可以提供用于处理非局部数据的便捷提取,但是必要时,用户代码可能仍需要保持对映射位置的跟踪。例如,在一个线程上运行时是局部的的映射,在另一个线程上运行可能不是局部的。这意味着,映射的用户可能需要在重新调度至不同的线程之间取消映射,或者确保任何调度都发生在同一线程上。
管理地址空间的存储资源可以确切地称为“分配器”,所述地址空间是执行codelet时可直接访问的,并且不需要codelet对所述codelet的数据进行映射和取消映射以便对所述地址空间进行访问。如上文所提及的,每个语言环境具有相关联的分配器,所述分配器管理附接至每个语言环境和其下级上的任何存储器,并且通过所述分配器而存储codelet、上下文、输入以及其它附带数据。用存储资源也可以保存线程的堆栈、堆阵、静态数据和/或代码。每个codelet的环境缓冲区可以用于为分配请求选择适当的分配器,尽管在一些情况下,一些实施方案可以将其它因素考虑在内或潜在地完全忽视所述环境缓冲区。
处理资源可以组成本发明的实施方案的其它组件。处理资源一般可以允许对获取完成codelet的调度。例如,当从空密钥进行获取时,只要所述资源接下来认为合适时,它就可以调度codelet。如果需要更精确的控制,那么处理资源可以接受通过放入而推进的作业说明,并且从那个放入所得的密钥可以通过获取而被使用一次或多次以调度具有更精确的参数的作业。在本发明的一些实施方案中,每个硬件线程可以创建一个处理资源,并且可以在上述层中创建一个或多个授权资源。
最常见类型的处理资源是codelet调度器(或仅仅“调度器”),尽管处理资源也可以提供与图形处理单元(GPU)、场可编程门阵列(FPGA)或其它处理器和协同处理器硬件的软件接口。虽然线程水平的调度器实际上可以运行已调度的codelet实例,但是更高水平(例如,处理器主机水平)的调度器可以在codelet实例和调度器变得可供使用时用于缓冲codelet实例并且将它们转发至所述线程水平的调度器。
枝叶语言环境的调度器(或“叶调度器”)可以管理已调度codelet的双端队列(deque(double-ended queue))。从其本身内调度至语言环境的codelet通常可以给予优先权和与其它codelet相比较快的调度/派遣路径;这不是要求,但却可以辅助速度优化。非枝叶调度器通常可以管理更简单的工作双端队列,而不存在较快或较慢路径。
在正常操作下,通过运行时间内核可以反复地使每个枝叶调度器跃阶,这可以引起在每个枝叶调度器的调度双端队列的头部处的codelet实例被弹出并且被执行。如果所述枝叶调度器具有空双端队列,那么咨询并且要求用于其父语言环境的调度器给予所述枝叶调度器一些工作。如果在父的调度双端队列中存在任何事物,那么那个双端队列的头部可以被弹出并且传递至所述枝叶调度器用于执行(图9a);如果没有,那么所述父可以尝试从所述枝叶调度器的同级调度器中的一个窃取工作,并且如果成功的话,所述父可以从所述同级调度器的尾部移除那个工作(图9b)。如果没有同级调度器具有任何工作要做,那么所述父可以咨询其父,并且所述过程可以这种方式继续。如果没有为枝叶调度器找到工作,那么所述枝叶子调度器及其相关联的线程可以放置在空闲(即,低功率)状态中直到更多工作到达。
取决于预期的行为,codelet可以调度至调度器双端队列的任一端。调度通常可以指向所述双端队列的尾部,以使得所调度的下一个事物将会是执行的最后一个事物,从而维持粗略的先进先出(FIFO)排序。然而,调度还可以指向所述双端队列的头部,以使得所调度的下一个事物将会是执行的下一个事物,从而维持粗略的LIFO排序。例如,当使用深度递归时,后一形式可用于避免利用分叉的调度请求来占据所有可供使用的存储器。应注意的是,本发明的不同实施方案中的调度器在内部可能不是基于双端队列的,并且在选择codelet来执行时,可以将相应因素而不是请求排序考虑在内。另外,一些实施方案的调度器可以将FIFO排序调度与LIFO排序调度之间基于应用的区分看作仅仅是一个暗示,或者可以完全忽略所述区分。(例如,调度器也许能够动态地做出关于程序的行为的预测,以使得很大程度上或完全地忽略程序请求的FIFO排序或LIFO排序的动态调度决策会产生与仔细地施行FIFO/LIFO排序的那些动态调度决策相比更好的性能)。
本发明的实施方案可以进一步包括通信资源和/或同步资源。通信资源可以用于使数据在程序的不同部分之间来回穿梭,并且可以允许比低水平的基于流或基于报文的通信接口更高水平的提取,所述通信接口可以参与运行时间提取,像codelet、nodelet等。同步资源可以提供对基于codelet的信号量、障碍等的实现方式的访问。
根据本发明实施方案的一个有用概念可以是nodelet。Nodelet是资源和/或codelet的集合,所述资源和/或codelet可以借助共享服务而被访问,并且可以在某种网络套接字上使得所述资源和/或codelet可供使用。这可以促进(例如)对可能需要共享的存储器和资源地址的管理,并且可以允许应用程序避免必须动态地管理主机与地址空间之间的地址映射。相比而言,通过用nodelet记录特定公开资源和codelet,所述nodelet可以允许一个应用程序允许对所述特定公开资源和codelet的更广泛的访问。Nodelet可以:(a)使服务资源初始化并且启动任何所需要的背景codelet复合体;(b)管理对输出资源的记录;(c)控制对服务资源的访问;(d)管理与nodelet的使用相关联的辅助状态;(e)控制访问模式的优化;和/或(f)当所述nodelet停止时对服务资源进行去初始化。Nodelet可以在运行时间环境内显式地创建并且启动,或所述nodelet可以主动地启动(例如,通过命名配置文件中的动态库)。Nodelet与网络服务一起还可以在显式地被访问时立即被启动。一旦已经用nodelet记录资源,就可以远程地发出放入/获取请求以与所述资源本机地进行交互。类似地,一旦已经用nodelet记录codelet,所述nodelet就可以本机地由远程请求来启动。在一些情况下,可能需要字节串行化以用于数据传送。
因为许多资源可以提供获取基元和放入基元以外的特征,所以nodelet还可以提供一些远程类型自省设施,以使得可以建立具有适当类型和功能性的代理资源,从而将本地请求转换成远程请求。例如,存储资源可以提供通过网络所不能提供的映射/取消映射功能。使用已转发的获取和放入来管理所述远程资源中的真实存储器,这些功能可以(例如)由代理资源在本地仿真,所述代理资源可以维持对已经插入所述代理资源或从所述代理资源重新取出的对象的本地缓存。
Nodelet的实施可以复用于外部资源和codelet的外部连接。Nodelet可以认为是在可能用(例如)整数识别的一个资源/codelet集的周围提供“包装器”,并且可以接受可以指导所述nodelet以具体的方式与那些资源/codelet进行互动的间接放入/获取请求报文。通过在本地确立代理项,nodelet可以提供对远程资源和codelet的透明访问,所述代理项充当代理但是看上去却类似于它们的远程对应物,并且允许与有待转发至远程nodelet的那些代理项进行本地互动。当nodelet从远程请求器接收获取请求报文时,所述nodelet可以将所述请求转发至本地资源,并且当所述获取操作完成时,所述获取的结果可以返回至所述请求器。当nodelet接收放入请求报文时,所述nodelet可以将参数拉出所述报文并且将所述参数放入可应用的代理项资源中,并且可以再次将所述放入完成转发至所述请求器。当nodelet接收请求以执行codelet时,所述nodelet在本地从所述请求报文取出上下文和输入参数并且运行所请求的codelet;当所述codelet运行其链对时,其输入可以转回到所述请求器。实施方案可以允许对用于另一个链对的识别进行转发,以使得请求器侧上的codelet可以触发另一个链式codelet回到nodelet的本地侧上。如果nodelet任一侧上的codelet继续双向地交换数据,那么这个过程可能潜在地无限期重复。
当启动nodelet时,通过所述nodelet可以记录本地codelet和资源,以使得远程请求器可以与所述本地codelet和资源进行互动。所述nodelet还可以确立远程资源/codelet与本地代理项之间的关联,从而提供与它们的互动;一些实施方案可以提供对本地资源/codelet的自动检测和记录,从而用于对远程资源/codelet的检测并且用于与其的关联,并且实施方案可以允许或需要应用程序记录资源/codelet并且与其相关联。
图6展示根据本发明各种实施方案的、具有三个资源映射的nodelet。所述nodelet可以为ID1、ID2以及ID3提供虚拟化资源,所述ID1、ID2以及ID3中的每一个ID可以使得所述nodelet的放入和获取操作连接至其它资源。
Programlet也可以用于本发明的一些实施方案中。Programlet可以被认为是以下程序:其组件以抽象形式呈现给运行时间软件,并且可以可以进行解释或动态地编译成源代码,并且可以在本发明的分布式运行时间环境的实施方案中运行。在没有所涉及的资源的位置的先验知识的情况下,programlet可以允许工作量在连接的运行时间上的自动分布。也就是说,抽象程序形式的programlet可以允许所述运行时间系统在结构上操纵所述程序,以便明智地对其数据和计算进行排序和分布。Programlet可以在所述运行时间中实现以下能力(a)使大块的数据破裂并且将它们推出到所述运行时间系统中的其它语言环境;(b)使较长的计算破裂,以便使得可以辨识并且利用内在并行性;(c)管理数据和代码位置(其可以包括例如使大块的数据破裂并且使它们在多个节点上传开;联合或统一已分解的数据;在节点上对长的计算进行调速和调度;重复、缓存并且共享数据;和/或传播数据的变化);(d)对资源使用量和开销的跟踪、限制和/或优先化;(e)垃圾收集;(f)解释、动态代码生成以及管理相关联的状态;和/或应用程序的高水平表达。
可能在创建分布式或多线程程序时遇到的问题是管理数据,尤其就布局、移植以及寿命而言。本运行时间系统的实施方案可以使用高水平面向对象的类型系统,来帮助解决这些有关的事并且以运行时间操作提供其它扩展来用辅助所述运行时间系统、编程人员以及用户。
类型可以用于识别并且描述存储器中对象的特定布置,那些类型归属于所述对象。如果类型归于对象,那么那个对象可以说是那个类型的一个实例。本发明的实施方案可以确立类型的不同种类,包括可以规定存储器中对象的布置和与那些对象的潜在互动的“基本类型”,和描述基本类型必须具有的类型要求的“合成类型”。基本类型可以进一步被分类为:“具体类型”,其可以完全地描述对象的布置和所有所允许的交互;“抽象类型”,其可以部分地描述所诉布置和所允许的交互(并且其因此不能被实例化,除非作为具体类型的一部分);以及“接口类型”,其可以指明仅所允许的交互并且可以需要较大的交互开销,但是在实例对象上却不需要另外的存储开销。实施方案可以支持类型上的另外变体(例如,具有更高的空间但是更低的时间开销的类型的具体级联、联集以及阵列、形式、接口类型等)。
在本发明的实施方案中,在“低层面”类型与“高层面”类型之间可以做出更基本的区别。低层面类型可以包括原始类型,如固定大小的整数和实数、体系结构指示符以及在阵列、记录以及联集类型中的这些的组合。相比之下,高层面类型描述存储器中具有一些定义明确的、可解读的并且有限的格式的对象。高层面类型可以超类型关系与一定数量的其它高层面类型直接有关,所述超类型关系可以扩展面向对象的超类别/子类别关系的传统概念。如果类型T是类型S的超类型(或等价地,S是T的子类型),那么与类型T相关联的所有存储器和交互也与S相关联;在实践中,这可能意味着类型S的每个实例包括可以在参考由S从T所继承的存储器时使用的类型T的一个实例。与超类型/子类型关系密切相关的是可转让性关系。如果类型T对于类型S来说是可转让的,那么参考类型T的对象的指示符值可以被赋值成指向类型S的变量,或换句话说,S是T的超类型或与T相同的类型。在下文中可以象征性地将陈述“S是T的子类型”表示为“ST”并且将陈述“S可转让至T”表示为“ST”。否定形式:“ST”和“ST”也可以用于分别指示S不是T的子类型或S不可转让至T。应注意,子类型关系是传递的;因此对于类型R、S以及T来说,如果RS并且ST,那么RT。
运行时间系统中的每个高层面对象可以具有相关联的高层面类型,并且本发明的运行时间系统的实施方案中的每个类型可以具有可以用于在运行时间时检查任意对象的类型的存储器中的相关联的类型描述符对象。自省为编程器提供命名并且导出类型的要素以用于稍后检验的能力。另外,可以动态地创建一级类型对象,这可以允许编译时间语言环境在运行时间上任意地延长,并且这可以简化程序组件的移植。(例如,如果主机A需要使用类型T将工作卸载至主机B,那么主机B可以动态地获得其自己类型T的复本并且执行那个工作,而无需重新编译或再启动。B甚至可以潜在地创建必要时转发回到A的代理类型,但是所述代理类型可能以其它方式显得与主机A的T版本相同)。
自省的另一层可以添加在基础类型对象层的顶部上:每个类型对象可以包括对类型成员的描述,以使得对象状态在运行时间上可以通过使用语言本机名称来访问。这可以允许按照比传统基于二进制图像的调试程序更高的层面调试多线程应用或分布式应用,能够处理并且可以帮助简化对象在地址空间与应用程序之间的功能性分布。
类型系统的实施方案可以支持多态性、虚拟继承和/或接口类型,这可以允许使用编程语言,如C++、C#以及Java的与现有系统的完全互操作性。本发明的运行时间系统的实施方案还可以支持类型分析,借此,使用类型联集、交集、否定和/或减法运算,多种类型可以结合在一个表达式中。不必要求本发明的实施方案包括允许创建合成类型的实例的能力,因为它们可以包括无限数量的组件类型,但是它们可以与其它类型竞争并且可以提供紧凑表达,所述紧凑表达可以例如允许远程连接的两侧对参数进行类型核对并且返回所述连接的另一侧的值范围而无需进行通信。
根据各种实施方案,两种特殊高层面类型可以呈现在运行时间系统中:“任意”和“无效”。“任意”可以作为接口类型由所述运行时间确立,并且可以充当所有其它高层面类型的超类型,以使得“任意”可以用作详尽的类型通配符并且作为全集参与合成类型表达式。“无效”可以充当所有其它类型的子类型并且可以用作详尽的通配符,并且作为空(零)集参与合成类型表达式。对于类型“无效”来说唯一有效的指示符可以是NULL,因为“无效”的实例必要地将会包括每个其它可能类型的实例。(应注意,这将NULL指示符值确立为可转让至任何类型的指示符。还应注意,运行时间软件的具体实施方案可以相对于具体硬件/软件语言环境而支持NULL指示符;例如,在小的局部存储器中运行的硬件处理器核可以针对其NULL使用地址0,但是从那个内核的外部,那个同一地址可以被映射为[例如]65,536的若干倍。这可以允许NULL用于可替代地是指根本没有对象,或是指与codelet的包括语言环境相关联的存储器的整体)。图8a中展示“任意”、“无效”和类型系统内的其它类型之间的关系。
在一些实施方案中,所述类型系统可以允许、放松或提高数据划分、复制、串行化和/或反串行化例程的实施。尽管可以容易复制并且转移原始数据类型,如固定宽度的整数或实数(不管字节顺序如何),但是更高层面类型可以具有与它们相关联的任何量的上下文,当对象在相干的地址空间之间移动时,所述更高层面类型中的任一个可能需要被传输、重建或丢弃。可复制和可传送接口类型可适用于这些目的,其中可复制接口可以适用于在同一地址空间内复印对象,而可传送接口可适用于将对象还原成字节流(串行化)或根据所生成的流重建对象(反串行化)。
另外,可能令人满意的是将诸如较大阵列、集或映射的一些对象划分成可以独立于彼此使用的片段。如果这类结构实施可划分并且被给予在指数与分区之间进行映射的函数,那么它们可以被分解,以使得它们的组件可以被转让至不同的资源或被推出至不同的主机。通过给予可划分对象以恒定指数-分区映射,它们还可以处于未被划分状态,以使得所有指数可以映射至同一分区。
根据各种实施方案的类型系统可以允许以集成类型的形式使用集合论并集、交集、差集和/或否定运算(例如,以指定资源的输入和输出约束),尽管所述类型系统自身可能不能直接地使这类类型实例化,因为可能未完全地描述它们的实施方式。可以用存储器中的数据结构描述合成类型,所述数据结构可以用于在运行时间时确定类型之间的关系。可以静态或动态地创建合成类型,并且可以在可能的情况下还原和缓存所述合成类型,这可以允许用于基本类型相等性核对的直接指示符比较,并且可以帮助避免未用的数据结构的增长。
如上文所论述的,为基于集合论表达式更进一步详尽阐述类型的确定,并集(∪)、交集(∩)、差集(-)以及否定(-)可以用于结合或过滤由类型所接受的对象集。例如,对于类型T和合成类型U和V来说,如在集合论中,当且仅当(iff)TU并且TV时,T(U∩V)。类似地,iff TU或TV或二者时,T(U∪V)。还可以从另一种类型减去一种类型;iff TU但是TV,T(U-V)。最后,类型否定(等价于与“任意”的差集)导致类型,以使得iff TU,T-U。同样,就集合论而言,T∪“任意”=“任意”、T∪“无效”=T、T∩“任意”=T、T∩“无效”=“无效”、T-“任意”=“无效”、T-“无效”=T、-“任意”=“无效”并且-“无效”=“任意”。使用这些规则,可以在合成类型上执行包括德摩根定律(-(S∪T)=(-S)∩(-T)并且-(S∪T)=(-S)∪(-T))的布尔代数变化式,以将所述类型还原成内部表达的具体形式。
用户构造的类型可以包括多种恒等的超类型。(例如,如图8c中所展示的,给定类型Q、R、S以及T,T的任何实例必须包括类型Q的两个实例,所述实例各自以其R和S的实例)。本发明的不同实施方案可以在这类类型内以不同的途径执行投射;例如,运行时间通过选择R的Q的实例可以实施从类型T到Q的所有投射,但是通过选择包括在R中的实例或各自的实例可以实施从R或S至Q的投射。然而,不管具体的实施方式,知道关于类型的数据的真实结构的程序仍可以直接访问所有超类型实例。
在一些实施方案中,使用在C++编程语言中所发现的“虚拟表(v-table)”途径的扩展,可以实施以上所描述的类型系统。以这种途径,任何高层面对象的存储器图像以表的指示符开始,所述表的指示符描述所述对象的类型,包括所述对象所具有的任何超类型。另外,虚拟表可以包括虚拟方法的指示符和codelet实施方式,连同其它类型相关的数据(例如,在类型的所有实例中共享的变量,所述变量的值是那个类型而不是其子类型所特有的)。每个高层面类型可以具有与其相关联的一个这样的类型数据表,并且那个类型的所有实例可以在它们的存储器图像中引用所述类型。此外,像这样的类型表可以用于本发明的一些实施方案中,来代表合成类型表达式以及具体类型信息。
当在类型层级内的指示符类型之间进行转变时,各种形式的投射可以用于确保使用正确的指示符。要生成的最简单的投射是从子类型的指示符投射至超类型的指示符的“向上投射”。使用来自图8c的类型为例,通过使R实例的地址偏移体系结构指示符的宽度或在编程语言内使R实例的地址偏移,通过取得适当的超类型实例的地址(例如,在C中&ptr->super),可以完成将类型R的指示符投射至类型Q的指示符。同样可以完成向上投射类型层级中的任何数量的水平—通过从T投射至R然后从R投射至Q,或可替代地,从T投射至S然后从S投射至Q,可以产生从T到Q的投射。通过使向上投射逆转(一般来说,减去偏移而不是添加偏移),可以完成从超类型至子类型的投射(例如,从Q至R,或从R或S至T),或“向下投射”。通过依次结合两种方法(例如,R至Q至S),可以完成投射至超类型的子类型或子类型的超类型(“交叉投射”;例如在T的实例内所执行的R至S)。这类投射可以由能够预测它们的结果的编译器静态地应用,或由使本发明具体化的软件动态地应用。动态投射可以利用存储在每个类型的类型数据表中的数据来确定应用到指示符的正确的偏移。如果当S T时尝试将类型S的对象投射成类型T,那么运行时间的实施方案可能生成差错(例如,经由函数返回值、本机异常处理机制或codelet的取消叉路)。
本发明的运行时间系统的实施方案中的高层面对象可以具有附接至其的任意数据,所述任意数据可以动态地添加、移除或修改并且可以与所述对象一起移植。通过创建可以充当对象上的边带注释的标签,上下文敏感数据和上下文不敏感数据可以动态地附接至所述对象。标签可以用于向运行时间提供暗示,如具体的对象应放置在哪里、可能预期codelet运行多久,或对环境的什么修改可能是优选的或对于所述codelet是有益的。所述标签还可以用于在使用对象的应用程序组件之间产生第三方通信通道,如记下所述对象的布局或使用历史。
本发明的运行时间系统实施方案的各种方面可以与监控和控制能力一起实现,在其它事物中,以便跟踪许多线程和/或节点上的程序状态。所述运行时间系统的组件可以装备有用高层面状态接口,以使得有可能近实时地抽取、计入、聚合并且显示信息。调度器也可以装备有集成控制接口,所述集成控制接口可以允许(例如)单线程、线程组或整个运行时间系统在多个节点上进行暂停和检查。还可以提供监控前端以用于与所述运行时间系统进行互动。
通过在所述运行时间时对公共接口定义的记录,可以使得运行时间系统的实施方案中的组件对于监控器来说是可见的。这可以用于使所述运行时间系统知道由所述组件所提供的状态输出,连同那些输出中的数据的格式以及如何可以聚合或收集所述数据(如果有的话)。状态接口可以取决于以上所描述的类型系统,来确定监控器系统可以如何与它进行互动。例如,通过所述类型接口可以提供这类参数,像更新频率、聚合的风格、收集的风格、格式化、标签和/或位置信息。可以提供适合的内置类型集,如计数器、计时器和/或枚举位组,从而允许状态接口进行快速和容易的添加,尽管也可以添加用户建成的状态类型。
本发明的运行时间系统实施方案中的对象也许能够记录控制对象,以便可以允许监控器动态地控制所述对象的执行。例如,调度器可以记录控制对象,以便可以允许在工作之间停止或启动调度,并且允许特定的工作免于调度。测试接口也可以加以实施,以便可以允许组件执行特定的任务(可以检验其结果)。
使用局部监控器接口可以促进控制输入,这可以使得应用程序制定代码(例如,经由回调函数)在特殊监控器线程中的执行。这可以包括回调与它们所产生对象之间的同步,尽管大多数控制回调可能仅设置标签或重写最终可以由受控制对象所看见的信息。
通过从所述运行时间系统内提供服务的套接字,监控前端可以连接至运行时间系统后端。所述后端可以允许直接访问所记录的类型、单独和聚合状态信息、和/或控制信息,以及潜在地允许基本运行时间任务,如连接至远程节点、对资源进行创建/销毁/互动,和/或中止准备好的工作。在一些实施方案中,所述后端可以提供允许在运行时间系统上启动调试器的“钩子”,这因此可以消除或减小对所述前端要这样做的需要,并且可以潜在地将初始化分布至多个远程节点(前端访问限制于所述远程节点)。
本发明的各种实施方案可以允许外来功能用适当的接口来包装,并且在系统资源上用作代码组件,所述外来功能具有与所述系统的给定实施方式的链接器层面/加载器层面二进制兼容性。运行时间系统自身可以具体化为静态或动态库,所述静态或动态库可以与用作API的代码进行链接,或所述运行时间系统可以具体化为链接至库的可执行文件。所述后一形式可以允许所述运行时间系统由操作系统应用至应用程序组件,并且所述后一形式可以允许所述运行时间系统作为nodelet和/或programlet的被动服务而加以启动。
本发明的各种实施方案可以并入如下的存储器分配规则。通过引用传递至运行时间接口功能中的值可以由调用者而不是所述运行时间接口管理。所述值可以保持存在至少直到所调用的接口功能返回,并且如果所述运行时间系统必须保留这类值,那么这类值可以由所述运行时间系统复制出来并且被保留/管理在内部。如果有可能,在不影响性能的情况下,可能需要直接应用非可复制对象而不是将所述非可复制对象复制出来。通过引用从所述运行时间接口传递至codelet的输入值被类似地视为传递至所述接口的值。如果必须显式地管理用于这类值的存储器,那么链对与其输入一起可以传递至所述codelet中;当链式codelet运行时,所引用值的责任可以被认为已经传递回到初始地以所述输入所传递的实体(如用于来自功能调用的返回)。如果在那个点之后需要所述值,那么接收所述输入的codelet必须将所述输入复制出来(例如,到其上下文中)。通过引用而从所述运行时间系统返回的值可以落至以下三种类别之一中:(1)静态或线程局部数据,其存储器在不再处于积极使用中时不需要释放;(2)与内含对象相关联的数据,只要所述内含对象落至这些类别之一中,并且那个数据的存储因为容器的剩余寿命而保持未被分配;或(3)显式管理的存储器和状态(例如,经由创建接口功能和销毁接口功能)。
本领域普通技术人员将会理解,本发明不受上文已经具体展示并且描述的事物所限制。相反地,本发明的范围包括上文所描述的各种特征的组合和子组合,以及本领域普通技术人员在阅读前文描述时将会想起的并且不处于现有领域中的修改和变化。
Claims (43)
1.一种分布式计算系统,其包括:
一个或多个资源,其被配置来使用硬件、软件或二者来促进一个或多个操作的执行;
两个或更多个处理设备,其被配置来由所述资源的至少一个子集加以操作;并且
其中所述一个或多个资源被配置来在一个或多个codelet的控制下执行操作。
2.根据权利要求1所述的系统,其中所述资源中的至少一个资源包括调度器,所述调度器被配置来在至少一个处理设备上调度一个或多个codelet的执行。
3.根据权利要求2所述的系统,其中至少一个调度器与一个或多个资源相关联,所述一个或多个资源与具体的语言环境相关联。
4.根据权利要求3所述的系统,其中至少一个调度器在语言环境的层级中不与语言环境相关联。
5.根据权利要求3所述的系统,其中所述系统内的语言环境被组织在一个层级中,并且其中在所述层级的给定层面上与语言环境相关联的调度器,被配置来从处于所述层级的更高层面上的父调度器请求工作。
6.根据权利要求3所述的系统,其中所述系统内的语言环境被组织在一个层级中,并且其中在所述层级的给定层面上与语言环境相关联的调度器,被配置来从所述层级中不同位置处的其它调度器请求工作。
7.根据权利要求3所述的系统,其中所述系统内的语言环境被组织在一个层级中,并且其中在所述层级的给定层面上与语言环境相关联的调度器,被配置来与处于所述层级的同一给定层面上的一个或多个同级调度器进行互动,来请求工作、提供工作或进行二者。
8.根据权利要求1所述的系统,其中为所述一个或多个codelet做出规定,以便通过使它们的状态屈服于存储器,或通过将它们的状态写入所述存储器并且终止它们的执行,来使它们自己的执行暂停,以使得它们稍后可以恢复。
9.根据权利要求1所述的系统,其中所述一个或多个codelet中的至少一个codelet引用另一个codelet。
10.根据权利要求1所述的系统,其中所述一个或多个codelet中的至少一个codelet能够在全异类型的处理设备上运行。
11.根据权利要求10所述的系统,其中所述一个或多个codelet中的至少一个codelet包括多种形式的运行叉路和/或多种形式的取消叉路,以便允许所述一个或多个codelet中的所述至少一个codelet在所述全异类型的处理设备上运行。
12.根据权利要求1所述的系统,其进一步包括被配置来对所述系统中的对象进行分类的分级类型系统。
13.根据权利要求1所述的系统,其中提供一个或多个nodelet,其中所述nodelet中的至少一个nodelet被配置来提供对多个资源的访问。
14.根据权利要求1所述的系统,其中所述系统被配置来支持一个或多个programlet的使用。
15.一种计算机可读介质,其包括相应指令,所述指令在由一个或多个处理设备执行时,会引起相应操作的实施,所述操作包括:
操作一个或多个资源,所述一个或多个资源被配置来使用硬件、软件或二者来促进一个或多个操作的执行,其中所述硬件包括两个或更多个处理设备,并且其中所述硬件、软件或二者是分布式计算系统的一部分;以及
配置所述一个或多个资源,从而在一个或多个codelet的控制下执行操作。
16.根据权利要求15所述的计算机可读介质,其中所述操作进一步包括:配置所述资源中的至少一个资源来作为调度器进行操作,从而在至少一个处理设备上调度一个或多个codelet的执行。
17.根据权利要求16所述的计算机可读介质,其中至少一个调度器与一个或多个资源相关联,所述一个或多个资源与具体的语言环境相关联。
18.根据权利要求17所述的计算机可读介质,其中至少一个调度器在语言环境的层级中不与语言环境相关联。
19.根据权利要求17所述的计算机可读介质,其中所述分布式计算系统内的语言环境被组织在一个层级中,并且其中在所述层级的给定层面上与语言环境相关联的调度器,被配置来从处于所述层级的更高层面上的父调度器请求工作。
20.根据权利要求17所述的计算机可读介质,其中所述分布式计算系统内的语言环境被组织在一个层级中,并且其中在所述层级的给定层面上与语言环境相关联的调度器,被配置来从所述层级中不同位置处的其它调度器请求工作。
21.根据权利要求17所述的计算机可读介质,其中所述分布式计算系统内的语言环境被组织在一个层级中,并且其中在所述层级的给定层面上与语言环境相关联的调度器,被配置来与处于所述层级的同一给定层面上的一个或多个同级调度器进行互动,来请求工作、提供工作或进行二者。
22.根据权利要求15所述的计算机可读介质,其中所述操作进一步包括:允许所述一个或多个codelet通过使它们的状态屈服于存储器,或通过将它们的状态写入所述存储器并且终止它们的执行,来使它们自己的执行暂停,以使得它们稍后可以恢复。
23.根据权利要求15所述的计算机可读介质,其中所述一个或多个codelet中的至少一个codelet引用另一个codelet。
24.根据权利要求15所述的计算机可读介质,其中所述操作进一步包括:支持被配置来对所述系统中的对象进行分类的分级类型系统。
25.根据权利要求15所述的计算机可读介质,其中所述操作进一步包括:支持一个或多个nodelet的使用,所述一个或多个nodelet被配置来提供对多个资源的访问。
26.根据权利要求15所述的计算机可读介质,其中所述操作进一步包括:支持一个或多个programlet的使用。
27.一种分布式计算的方法,其包括:
操作一个或多个资源,所述一个或多个资源被配置来使用硬件、软件或二者来促进一个或多个操作的执行,其中所述硬件包括两个或更多个处理设备,并且其中所述硬件、软件或二者是分布式计算系统的一部分;以及
配置所述一个或多个资源,从而在一个或多个codelet的控制下执行操作。
28.根据权利要求27所述的方法,其中所述资源中的至少一个资源包括调度器,并且其中所述方法进一步包括:通过所述调度器来在至少一个处理设备上调度一个或多个codelet的执行。
29.根据权利要求28所述的方法,其中至少一个调度器与一个或多个资源相关联,所述一个或多个资源与具体的语言环境相关联。
30.根据权利要求29所述的方法,其中至少一个调度器在语言环境的层级中不与语言环境相关联。
31.根据权利要求29所述的方法,其中所述系统内的语言环境被组织在一个层级中,并且其中所述方法进一步包括:通过在所述层级的给定层面上与语言环境相关联的调度器,从处于所述层级的更高层面上的父调度器请求工作。
32.根据权利要求29所述的方法,其中所述系统内的语言环境被组织在一个层级中,并且其中所述方法进一步包括:通过在所述层级的给定层面上与语言环境相关联的调度器,从所述层级中不同位置处的其它调度器请求工作。
33.根据权利要求29所述的方法,其中所述系统内的语言环境被组织在一个层级中,并且其中所述方法进一步包括:通过在所述层级的给定层面上与语言环境相关联的调度器,与处于所述层级的同一给定层面上的一个或多个同级调度器进行互动,来请求工作、提供工作或进行二者。
34.根据权利要求27所述的方法,其进一步包括:允许所述一个或多个codelet通过使它们的状态屈服于存储器,或通过将它们的状态写入所述存储器并且终止它们的执行,来使它们自己的执行暂停,以使得它们稍后可以恢复。
35.根据权利要求27所述的方法,其中所述一个或多个codelet中的至少一个codelet引用另一个codelet。
36.根据权利要求27所述的方法,其中允许所述一个或多个codelet中的至少一个codelet在全异类型的处理设备上运行。
37.根据权利要求36所述的方法,其中所述一个或多个codelet中的至少一个codelet包括多种形式的运行叉路和/或多种形式的取消叉路,以便允许所述一个或多个codelet中的所述至少一个codelet在所述全异类型的处理设备上运行。
38.根据权利要求27所述的方法,其进一步包括:实施被配置来对所述系统中的对象进行分类的分级类型系统。
39.根据权利要求27所述的方法,其进一步包括:提供一个或多个nodelet,其中所述nodelet中的至少一个nodelet被配置来提供对多个资源的访问。
40.根据权利要求27所述的方法,其进一步包括:支持一个或多个programlet的使用。
41.一种计算系统,其包括:
至少一个处理设备;以及
至少一个存储单元,其耦接至所述至少一个处理设备;
其中所述至少一个存储单元包括含有相应指令,所述指令可可以由所述至少一个处理设备执行,以来实施分级类型系统,所述分级类型系统被配置来支持多个继承、多个接口以及合成类型,并且其中所述类型系统进一步支持数据在具有全异体系结构、平台和/或二进制接口的系统中的传送。
42.一种计算机可读介质,其包括相应指令,所述指令可以由至少一个处理设备执行,从而使所述至少一个处理设备来实施分级类型系统,所述分级类型系统被配置来支持多个继承、多个接口以及合成类型,并且其中所述类型系统进一步支持数据在具有全异体系结构、平台和/或二进制接口的系统中传送。
43.一种实施分级类型系统的方法,其包括:
提供多种类型,所述类型根据分级结构加以组织;以及
允许所述类型支持多个继承、多个接口以及合成类型,
其中所述类型系统支持数据在具有全异体系结构、平台和/或二进制接口的系统中传送。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42405210P | 2010-12-16 | 2010-12-16 | |
US61/424,052 | 2010-12-16 | ||
PCT/US2011/065532 WO2012083188A1 (en) | 2010-12-16 | 2011-12-16 | Distributed computing architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103262064A true CN103262064A (zh) | 2013-08-21 |
Family
ID=46235825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800607428A Pending CN103262064A (zh) | 2010-12-16 | 2011-12-16 | 分布式计算体系结构 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10620988B2 (zh) |
EP (1) | EP2652634A1 (zh) |
JP (1) | JP2013546106A (zh) |
CN (1) | CN103262064A (zh) |
CA (1) | CA2820081A1 (zh) |
RU (1) | RU2013125719A (zh) |
WO (1) | WO2012083188A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8972746B2 (en) * | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
US9081893B2 (en) * | 2011-02-18 | 2015-07-14 | Microsoft Technology Licensing, Llc | Dynamic lazy type system |
US8910128B2 (en) * | 2011-07-19 | 2014-12-09 | Salesforce.Com, Inc. | Methods and apparatus for application performance and capacity analysis |
US20130132061A1 (en) * | 2011-11-18 | 2013-05-23 | Michael J. Rieschl | Just-in-time static translation system for emulated computing environments |
KR102086019B1 (ko) * | 2012-06-08 | 2020-04-14 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 이종 프로세서를 사용하여 애플리케이션에 낮은 레이턴시를 제공하는 시스템 및 방법 |
US8893155B2 (en) * | 2013-03-14 | 2014-11-18 | Microsoft Corporation | Providing distributed array containers for programming objects |
US9678787B2 (en) | 2014-05-23 | 2017-06-13 | Microsoft Technology Licensing, Llc | Framework for authoring data loaders and data savers |
US9342384B1 (en) | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US20160378471A1 (en) * | 2015-06-25 | 2016-12-29 | Intel IP Corporation | Instruction and logic for execution context groups for parallel processing |
US10387229B2 (en) * | 2015-11-23 | 2019-08-20 | International Business Machines Corporation | Reducing cost of deserialization by skipping unused array regions |
CN106444685A (zh) * | 2016-12-06 | 2017-02-22 | 中国船舶重工集团公司第七〇九研究所 | 分布式控制系统及其动态调度资源的方法 |
US11397610B2 (en) | 2018-12-28 | 2022-07-26 | Beijing Voyager Technology Co., Ltd. | Architecture for simulation clock-based simulation of distributed systems |
WO2020139961A1 (en) | 2018-12-28 | 2020-07-02 | Didi Research America, Llc | Distributed system task management using a simulated clock |
US11480964B2 (en) | 2018-12-28 | 2022-10-25 | Beijing Voyager Technology Co., Ltd. | Distributed system execution using a serial timeline |
US11704617B2 (en) * | 2019-06-20 | 2023-07-18 | Stripe, Inc. | Systems and methods for modeling and analysis of infrastructure services provided by cloud services provider systems |
US11429423B2 (en) * | 2020-01-07 | 2022-08-30 | Kyndryl, Inc. | Workload scheduling with localized virtual network resources |
US11658833B1 (en) * | 2022-12-06 | 2023-05-23 | Citibank, N.A. | Systems and methods for conducting cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs |
US11874934B1 (en) | 2023-01-19 | 2024-01-16 | Citibank, N.A. | Providing user-induced variable identification of end-to-end computing system security impact information systems and methods |
US11748491B1 (en) | 2023-01-19 | 2023-09-05 | Citibank, N.A. | Determining platform-specific end-to-end security vulnerabilities for a software application via a graphical user interface (GUI) systems and methods |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1159858A (zh) * | 1994-08-19 | 1997-09-17 | 皮尔罗杰克公司 | 规模可以改变的分布式计算环境 |
CN1303497A (zh) * | 1998-05-26 | 2001-07-11 | 陶氏化学公司 | 采用实时调度逻辑和时间确定结构的分布式计算环境 |
CN1551006A (zh) * | 2003-03-06 | 2004-12-01 | 微软公司 | 分布式计算系统架构及分布式应用的设计、部署和管理 |
US20080028095A1 (en) * | 2006-07-27 | 2008-01-31 | International Business Machines Corporation | Maximization of sustained throughput of distributed continuous queries |
US7360219B2 (en) * | 2002-12-13 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Systems and methods for facilitating fair and efficient scheduling of processes among multiple resources in a computer system |
US20080274755A1 (en) * | 2007-05-03 | 2008-11-06 | Sonus Networks, Inc. | Personal Service Integration on a Network |
US20090154459A1 (en) * | 2001-04-13 | 2009-06-18 | Freescale Semiconductor, Inc. | Manipulating data streams in data stream processors |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US384363A (en) * | 1888-06-12 | Corn-planter | ||
DE69429204T2 (de) * | 1993-03-26 | 2002-07-25 | Cabletron Systems Inc | Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk |
US6736325B1 (en) * | 1998-01-22 | 2004-05-18 | Mondex International Limited | Codelets |
US6061709A (en) | 1998-07-31 | 2000-05-09 | Integrated Systems Design Center, Inc. | Integrated hardware and software task control executive |
US6542991B1 (en) | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
DE60237433D1 (de) | 2001-02-24 | 2010-10-07 | Ibm | Neuartiger massivparalleler supercomputer |
US7921188B2 (en) * | 2001-08-16 | 2011-04-05 | Newisys, Inc. | Computer system partitioning using data transfer routing mechanism |
US7640547B2 (en) * | 2002-02-08 | 2009-12-29 | Jpmorgan Chase & Co. | System and method for allocating computing resources of a distributed computing system |
WO2003102758A1 (en) | 2002-05-31 | 2003-12-11 | University Of Delaware | Method and apparatus for real-time multithreading |
US8407451B2 (en) | 2007-02-06 | 2013-03-26 | International Business Machines Corporation | Method and apparatus for enabling resource allocation identification at the instruction level in a processor system |
US7996346B2 (en) | 2007-12-19 | 2011-08-09 | International Business Machines Corporation | Method for autonomic workload distribution on a multicore processor |
US8566830B2 (en) | 2008-05-16 | 2013-10-22 | Microsoft Corporation | Local collections of tasks in a scheduler |
CN101533417B (zh) | 2009-04-28 | 2012-04-18 | 阿里巴巴集团控股有限公司 | 一种实现etl调度的方法及系统 |
US20110191775A1 (en) * | 2010-01-29 | 2011-08-04 | Microsoft Corporation | Array-based thread countdown |
EP2558935A4 (en) | 2010-04-13 | 2014-12-17 | Int Inc | RUNSPACE PROCESS, SYSTEM AND DEVICE |
US8621446B2 (en) * | 2010-04-29 | 2013-12-31 | International Business Machines Corporation | Compiling software for a hierarchical distributed processing system |
-
2011
- 2011-12-16 CN CN2011800607428A patent/CN103262064A/zh active Pending
- 2011-12-16 CA CA2820081A patent/CA2820081A1/en not_active Abandoned
- 2011-12-16 US US13/328,570 patent/US10620988B2/en active Active
- 2011-12-16 RU RU2013125719/08A patent/RU2013125719A/ru unknown
- 2011-12-16 EP EP11848734.7A patent/EP2652634A1/en not_active Withdrawn
- 2011-12-16 JP JP2013544832A patent/JP2013546106A/ja active Pending
- 2011-12-16 WO PCT/US2011/065532 patent/WO2012083188A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1159858A (zh) * | 1994-08-19 | 1997-09-17 | 皮尔罗杰克公司 | 规模可以改变的分布式计算环境 |
CN1303497A (zh) * | 1998-05-26 | 2001-07-11 | 陶氏化学公司 | 采用实时调度逻辑和时间确定结构的分布式计算环境 |
US20090154459A1 (en) * | 2001-04-13 | 2009-06-18 | Freescale Semiconductor, Inc. | Manipulating data streams in data stream processors |
US7360219B2 (en) * | 2002-12-13 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Systems and methods for facilitating fair and efficient scheduling of processes among multiple resources in a computer system |
CN1551006A (zh) * | 2003-03-06 | 2004-12-01 | 微软公司 | 分布式计算系统架构及分布式应用的设计、部署和管理 |
US20080028095A1 (en) * | 2006-07-27 | 2008-01-31 | International Business Machines Corporation | Maximization of sustained throughput of distributed continuous queries |
US20080274755A1 (en) * | 2007-05-03 | 2008-11-06 | Sonus Networks, Inc. | Personal Service Integration on a Network |
Non-Patent Citations (1)
Title |
---|
CÉDRIC AUGONNET 等: "STARPU: A Unified Platform for Task Scheduling on Heterogeneous Multicore Architectures", 《EURO-PAR2009 PARALLEL PROCESSING》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2012083188A1 (en) | 2012-06-21 |
RU2013125719A (ru) | 2015-01-27 |
US10620988B2 (en) | 2020-04-14 |
CA2820081A1 (en) | 2012-06-21 |
JP2013546106A (ja) | 2013-12-26 |
US20120158817A1 (en) | 2012-06-21 |
EP2652634A1 (en) | 2013-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103262064A (zh) | 分布式计算体系结构 | |
Eckstein et al. | PICO: An object-oriented framework for parallel branch and bound | |
CN103930875B (zh) | 用于加速业务数据处理的软件虚拟机 | |
CN1989489B (zh) | 数据处理方法和装置 | |
CN1989488B (zh) | 运行时系统的鲁棒共享 | |
CN100418057C (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
CN101233489B (zh) | 自适应进程分派的方法和系统 | |
CN1906580B (zh) | 对于具有可移动对象的启用网格的虚拟机的方法和系统 | |
CN1965308B (zh) | 具有协作对象的修改后的计算机架构 | |
Posse et al. | An executable formal semantics for UML-RT | |
CN1989486A (zh) | 在运行时系统中共享对象 | |
Fohler | Flexibility in statically scheduled hard real-time systems | |
CN106663075A (zh) | 执行基于图的程序规范 | |
CN106687918A (zh) | 编译基于图的程序规范 | |
CN101710281B (zh) | 基于Agent的动态集成开发平台系统和方法 | |
JP2014525640A (ja) | 並列処理開発環境の拡張 | |
CN106687919A (zh) | 管理用于控制任务的状态 | |
CN106605209A (zh) | 控制数据处理任务 | |
US7444350B1 (en) | Method and apparatus for processing management information | |
Búr et al. | Distributed graph queries over models@ run. time for runtime monitoring of cyber-physical systems | |
CN113672240A (zh) | 一种基于容器的多机房批量自动化部署应用的方法及系统 | |
US9535678B2 (en) | Providing distributed array containers for programming objects | |
McDonald et al. | A flexible distributed testbed for real-time applications | |
Spiess et al. | Integrating sensor networks with business processes | |
CN103473032B (zh) | 独立主动构件和可运行主动构件组装模型及构件拆分方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130821 |