CN102934081A - 运行空间方法、系统和装置 - Google Patents
运行空间方法、系统和装置 Download PDFInfo
- Publication number
- CN102934081A CN102934081A CN2011800191164A CN201180019116A CN102934081A CN 102934081 A CN102934081 A CN 102934081A CN 2011800191164 A CN2011800191164 A CN 2011800191164A CN 201180019116 A CN201180019116 A CN 201180019116A CN 102934081 A CN102934081 A CN 102934081A
- Authority
- CN
- China
- Prior art keywords
- code
- little
- computer program
- data
- little code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/451—Code distribution
-
- 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/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明称为运行空间,涉及计算系统管理、数据处理和数据通信领域,并且具体涉及协作方法和系统,其通过使用代码和数据局部性的度量空间表示以引导代码和数据的分配和迁移,通过执行分析以标示提供改进运行时间机会的代码区,并且通过提供适于分布调用访问局部存储器的压缩代码段的低功耗、局部、安全存储器管理系统,来提供尤其用于可在多个处理元件上执行的可分解多部件任务的节约型计算。运行空间提供支持分层分配、优化、监测和控制,并且支持有弹性的、高效节能的,大规模的计算的机制。
Description
发明人:
Rishi L.Khan
相关申请案
本申请案请求以下申请案的权益:
[1]2010年4月13日提交的美国临时申请案No.61/323,362。
[2]2010年8月25日提交的美国临时申请案No.61/377,067。
[3]2010年9月25日提交的美国临时申请案No.61/386,472。
以上各申请案的全文以引用的方式并入本文。
技术领域
本发明称为运行空间(runspace),大体上涉及计算系统控制、数据处理和数据通信领域,并且具体涉及提供节约型计算的方法和系统,包括执行分布在多个处理元件上的大的多部件任务。
发明背景
现代高端计算机结构包含成千上万甚至数百万个处理元件、大量分布式存储器,以及各种级别的非局部存储器、网络组件和存储基础设施。这些系统为执行应用所消耗的资源的静态和动态优化提供了巨大挑战。传统上,计算机结构努力提供只有单个、简单的地址空间的应用,并且提供本身合理的语义以进行随后的代码执行和数据访问。产生的范式多年以来使用良好,但当通过平行处理而非通过更快的时钟率来分布计算和数据并且实际上实现所有硬件加速时,所述范式阻碍了优化资源分配。本发明预测了半导体制造商着手处理减小电路尺寸的物理或成本效率限制的阶段,认为平行性是性能改进的最有前景的途径。在最大性能至关重要的应用中,传统的通过中断和抢占的OS资源分配已经妨碍性能。因此,实现有效分布计算的主要挑战在于提供最优地使用物理系统的系统软件,同时为应用编码器提供计算的可用抽象模型。
发明内容
本发明提供编译并运行计算机程序从而达成寻求最节约型程序执行的目标的系统和方法。这些系统和方法涉及:在编译时,确定称为小码的给定程序段的最优效率执行环境;和在运行时间,相应地放置并调度小码到其最优效率执行环境进行执行。
本发明的实施方案包括用于高效地分配数据处理系统资源给应用程序任务的方法。所述方法涉及:获取一组实现某些数据处理任务的小码;确定这些小码间的依赖性;和基于小码间的依赖性并基于数据处理系统资源的可用性和各种资源的相关使用成本,使用辨识的资源在给定数据处理系统上,动态地放置并调度小码进行执行。
根据本发明的实施方案,用于寻求执行计算机程序的用户或系统定义目标的方法基于:将给定计算机程序分解成抽象模型集,所述抽象模型包括小码、合作小码集、合作抽象模型集和给定抽象模型成员间共享的数据。此外,在各种实施方案中,这些方法包括以下步骤:获取与程序相关的关于抽象模型、性能和资源利用的程序运行时间信息;和使用所述程序运行时间信息来指导计算机程序或部分计算机程序的正在进行的或随后的运行中抽象模型的随后的放置或执行调度。这些方法的另外的实施方案包括至少部分由运行时间系统实施的步骤:定义存储器空间或执行时间中抽象模型成员的邻近目标;最初放置数据并调度执行抽象模型中的小码,并且,当寻求给定用户或系统定义目标有益时,迁移抽象模型的成员,其中以协调方式进行放置和迁移,以根据其定义目标来最大化抽象模型成员间的实际邻近性。
本发明的其它方面包括一种用于最优平行放置执行软件程序的方法,所述方法涉及以下步骤:a)查询运行时间系统以发现执行程序可用的处理核的量;b)确定所述程序可分为的处理单元的最大量;c)基于步骤a)和b)中确定的量,将所述程序划分为最优数目和尺寸的处理单元,例如小码;和d)根据每个步骤c)的划分,管理程序的平行执行。
根据本发明的实施方案,系统最优地定位并调度小码集在给定数据处理硬件上的执行。这些系统包括基于数字硬件和软件的构件,所述构件用来:在处理资源集间交换与度量相关的信息,所述度量与处理资源间小码集的最优放置有关;确定将所述集中待执行的小码定位于处理资源中哪个处理资源;和根据所述确定使用处理资源来放置并调度小码的执行,其中在系统运行时间期间,动态地运用至少一些所述构件。本发明的另外方面涉及一种由多个核心构成的数据处理系统,其中所述系统包括:a)系统管理代理集,所述集包括以下一个或多个:数据渗滤管理器、小码调度器、小码迁移管理器、负载均衡器、调功器或性能管理器;和b)供所述代理集以协作方式异动来寻求系统范围目标的构件,在各种提供动态运行时间系统行为的实施方案中,所述目标为时变的。
本发明还包含用于实施本发明的方法的各种组合的应用和系统软件程序,以及运行这些程序的硬件系统和相关硬件和软件产品。
附图说明
图1示出示范性运行空间结构。
图2示出具有多个范围的示范性运行空间分配。
图3示出示范性运行空间运行时间系统。
图4示出运行时间性能监测和分配的示范性案例。
图5例示了运行空间系统中代码的运行时间行为。
图6示出示范性交互层次。
图7示出示范性自优化操作系统。
图8例示显式和隐式应用指令。
图9示出示范性微存储器管理单元。
图10示出示范性应用使用案例。
图11示出运行空间随时间的示范性分组。
图12示出使用小码集的计算系统。
图13示出小码集表示系统。
图14示出小码集转换的实例。
图15示出元级别小码集分布。
图16示出小码集执行和迁移。
图17示出双端队列并发访问机制:写入/入队。
图18示出出队并发访问机制:读出/出队。
图19示出通过原子加法数组(A)的并发访问:写入。
图20示出通过原子加法数组(B)的并发访问:写入。
图21示出通过原子加法数组(C)的并发访问:读出。
图22示出链表,具体是原子加法数组(A)。
图23示出链表,具体是原子加法数组(B)。
图24示出链表,具体是原子加法数组(C)。
图25示出链表,具体是原子加法数组(D)。
图26示出链表,具体是原子加法数组(E)。
图27示出通过具有转向的共享数组的并发访问。
图28示出组合网络分布增量。
图29示出通过原子加法数组(A)的单任务和多任务执行并发访问。
图30示出通过原子加法数组(B)的单任务和多任务执行并发访问。
图31示出通过原子加法数组(C)的单任务和多任务执行并发访问。
图32示出通过原子加法数组(D)的单任务和多任务执行并发访问。
图33示出通过原子加法数组(E)的单任务和多任务执行并发访问。
图34示出小码集计算系统场景。
图35示出芯片级通用示范性结构。
图36示出板级/系统级通用结构。
图37示出小码和小码集的指派
图38示出双缓冲计算(A)。
图39示出双缓冲计算(B)。
图40示出双缓冲计算(C)。
图41示出双缓冲计算(D)。
图42示出双缓冲计算(E)。
图43示出双缓冲计算(F)。
图44示出双缓冲计算(G)。
图45示出具有SRAM和DRAM的矩阵相乘。
图46示出矩阵相乘双缓冲/DRAM。
图47示出计算LINPACK DTRSM(线性代数函数)的实例。
图48示出DTRSM情况下小码集的运行时间初始化。
图49示出快速排序实例。
图50示出带有应用小码集的可扩展系统函数。
图51示出遗留代码转换为多任务。
图52示出与多任务代码一同运行的黑箱代码。
图53示出改进的与多任务代码一同运行的黑箱代码。
具体实施方式
本发明使用的术语表
·应用:包含用户希望执行的单个或多个相关特定任务的指令集
·应用程序编程接口(API):将系统功能供应用开发员所编写的程序操纵的编程器可访问程序集,所述应用开发员可能不能访问系统的内部组件,或者可能希望获得比可通过系统的基本功能获得的接口更简单或更一致的接口,或者可能希望获得符合互操作特定标准的接口。
·小码:一组在其输入可用之后大体上能被连续执行到完成为止的指令。
·小码集:相对于依赖性分析或执行可作为单元来处理的小码组。
·计算区域:按局部性或功能来分组的处理元件集。这些区域可分层地包括其它计算区域。分层区域实例可包括系统、节点、套接口、核心和/或硬件线程。
·并发系统:并发进程集和这些进程操纵的对象集。
·核心:计算设备的处理单元。这些处理单元包括但不限于CPU(中央处理单元)、GPU(图形处理单元)、FPGA(现场可编程数组)或前述各者的子集。
·依赖性:两个小码集之间的表示一个小码集结束另一个才能开始的有向弧。
·分形调整结构:在系统中多个量值上安全并可靠地提供资源的高效使用的机制,其中在每一级别使用类似策略。
·GACT/广义角色:一个用户或一组用户,或一组用户和软件代理,或充当用户以达成某个目标的计算实体。
·GCS/广义计算系统:包括可编程处理器、存储器、提供数据访问和计算服务的I/O设备的一个或多个计算机。
·CSIG/小码信号:小码之间或监测系统与至少一个小码之间的通信,所述通信使能依赖性得到满足的小码或传递状态和完成信息。
·分层执行模型:其中在若干级别应用被分解,包括在粒度基本级被分解为小码的多级别执行模型。
·可线性化:在并发处理系统中似乎同时发生的一个或多个操作。可线性化通常由连续(作为一个群)或被删除(卷回恢复)的指令达成,并且由通过特定指令提供“原子”操作或在临界区域周围提供加锁的系统来达成。
·无锁同步:为确保(至少)系统范围进展的共享资源的无阻塞同步。
·局域网(LAN):在相对较小距离,通常在单个组织内部,连接计算机和其它网络设备。
·节点:由一个或多个计算机处理器,且可选地存储器、网络接口和外围设备构成的设备。
·过量提供:提供超过最小数目的处理元件和局部存储器,以允许资源分配有较大余地。例如,将以高时钟率运行高度顺序任务的小数目处理元件替换成以低时钟率运行更分布式的代码和数据的更多的处理元件。
·多任务:相对于计算资源集可作为单元来处理的一组相关任务。通常,多任务具有类似的资源需求,并且可寻求一批资源的分配。多任务也可具有互补的资源需求,并且可借助于分布式请求来执行负载均衡。
·邻近:如存储器空间、计算空间中的局部性,或时间或依赖性上接近的状态。
·队列:可接受入队元素和删除并返回出队元素的数据结构。元素可在任何位置入队或出队,包括但不限于队列的开始处、末尾或中间。
·运行时间系统(RTS):被设计来支持计算机程序的执行的软件集合。
·可扩展性:计算机系统、结构、网络或过程的能力,所述能力允许它通过使用另外的处理器、存储器和连通性来高效地满足更大量处理的需要。
·自知控制系统:使用其自身性能和约束的模型,从而允许将高层目标相对于模型属性而陈述性地表示出来的系统。
·信号:使能小码集的事件。在执行期间,信号可由小码发出。
·任务:软件程序中的工作单元。
·线程:被限于特定处理元件的历时长久的运行时间处理目标。
·无等待同步:保证有系统范围进展和每个线程进展的共享资源的无阻塞同步。
·广域网(WAN):在可能较大的地理区域,连接计算机和其它网络设备。
本发明提供用于表示、操纵和执行小码集的方法和系统。小码是在其依赖性得到满足之后通常可连续执行到完成为止的一般非抢占式指令群。小码集是相对于依赖性分析或执行可作为单元来处理的小码组。小码集在显著方面不同于传统编程和执行模型。应用被分解成可在需要最少量的系统协调的情况下执行的独立的代码段。根据本发明的实施方案,不同于集中控制和资源分配,系统代码(其自身是通过小码集来实施)只初始化小码集的平台,以通过使能小码集的初始小码来运行。这些小码没有先验依赖性,因此一旦使能小码集就会使能这些小码。小码集应用在它们执行期间不必完全保持为文字码空间。事实上,即使不确定地,如果特定运行或执行期间提供的特定数据不需要一些不常使用的小码集元素,那么可推迟这些小码集元素的转换。
小码集方法的实施方案的特征包括:
·将计算任务分解成最小化模型间依赖性的抽象模型;
·指导初始小码使能和计算资源的初始及正在进行的分配的抽象依赖性映射的结构;
·使用具有至少与Petri网络相同表达能力的计算表示;
·迁移正在执行或即将执行小码集,以利用例如局部存储器、特定数据和中间结果的资源的局部性,和合作小码的局部性,从而最小化通信时延;
·迁移小码集以获取资源的更好全局分配,以允许衰减一些处理资源从而节能或保留容量,或者例如在异构系统中利用更适于给定处理任务的资源;
·使用多任务,即相对于计算资源集可作为单元来处理或可由表示代理任务来管理的相关任务,所述表示代理任务起作用以获取所需资源或所述群的另外的任务;
·使用原子加法数组,所述原子加法数组有效地调解在共享数据或其它处理输入或资源上工作的小码的并发访问,其中访问的顺序具有潜在重要性;
·使用链表原子加法数组,所述链表原子加法数组许可占优势局部访问的效率同时支持并发数据存储的实质上无限成长;
·使用多回转/多代原子加法数组,以维持严格局部存储的益处同时支持大量未决的操作;和
·组合网络,以提供级联型增量到存储器访问,从而避免单个全局下一个函数的瓶颈。
以下结合附图描述本发明的关键概念和方面。注意,在下面的描述中,步骤和步骤的顺序是为了说明的目的给定的,但是很多其它的顺序、子集和超集在描述本发明后对于实践者来说是显而易见的。简洁的目的防止了列举每一个属于本发明的合法范围中步骤的组合。
综述:
运行空间被建构来利用许多处理元件的高度平行的结构,其中数据和代码都分布在一致多级组织中。运行空间系统和方法通过维持其中将距离测量应用到代码和数据的度量空间模型来达成处理资源的最优使用。任务分配的良好级别是小码级别,所述小码是在输入条件得到满足后可非抢占性地执行到完成为止的指令群。
在本发明的实施方案中,运行空间方法和系统通过执行以下一个或多个步骤来分配计算资源给计算任务:获取实现任务集的小码集;获取小码请求的数据规格集;建构表示小码局部性和它们将访问的数据的度量空间;获取小码相对于度量空间距离的静态定义初始排列;使用度量空间表示来初始放置小码或数据;获取小码和数据的动态可用运行时间资源请求;和使用所述度量空间表示来动态地放置或移动小码或数据。
另外,在实施方案中,运行空间通过以下步骤来准备分配机会并在运行时间利用这些机会:在编译时,分析用于操作和指示合并或迁移小码和数据的机会的参照的潜在代码和数据分配;然后执行这些小码、合并小码或数据的运行时间迁移,以练习实际代码和数据分配所提供的机会。
另外,为了支持细粒度执行小码,运行空间的实施方案通过以下动作的一个或多个来提供安全和有效的局部存储器访问:将应用代码分解成小码;提供含有逻辑和物理地址的本地路由表;将确切相关小码群的物理地址映射到确切地址空间,其中每个确切地址空间的相关小码确切群可访问每个确切地址空间;和将给定确切小码群到其确切地址空间外部空间的任何访问处理为错误。
本发明还提供用于表示、操纵和执行小码集的方法和系统。小码集是相对于依赖性分析或执行可作为单元来处理的小码组。小码集提供用于开发和执行分布式应用的机制,和用于应用的可组合性的机制:小码集可含有小码集并且它们可被分层建构和重用。即使小码无需抢占也可运行到完成为止只要它们的依赖性得到满足,但是它们也可在抢占式系统上运行,任何一种情况都是为了模拟非抢占式多核心结构,或者因为对于小码集所表示的分布式应用而言抢占式计算的一些其它属性很理想。进一步地,可给抢占式OS提示以最小化抢占,例如核心紧密度和过程优先。这样,小码的运行空间可与当前计算机系统上的其它旧有应用共存。
根据本发明的实施方案,不同于集中控制和资源分配,系统代码(其自身是通过小码集来实施)只初始化小码集的平台,以通过使能小码集的初始程序来运行。根据本发明,应用程序被分解成可在最少量的系统协调的情况下执行的独立的代码段。
系统利用和管理综述:
在本发明的实施方案中,例如下面更详细研究的实例中,运行空间执行模型遍及所有级别的系统利用和监测。在细粒度级别,执行模型提供一系列的小码和它们各自的依赖性。小码细粒度本质允许运行时间系统有效并动态地分配资源,同时监测性能和能耗并且使调度改变能够符合应用的性能和功率需求。
运行空间系统分配可用资源给给定应用并提供API以访问芯片外资源,例如磁盘、外围设备、其它节点存储器等。应用区域(即应用可用的节点)由超管理器定义。小码细粒度本质允许运行时间系统有效并动态地分配资源,同时监测性能和能耗并且使调度改变能够符合应用和系统的性能和功率目标。
在根据本发明的实施方案的系统101中,如图1中所示,有5个用于在示范性运行空间结构101中系统利用和管理的组件:(1)共享长期文件系统和开始应用的传统操作系统(OS),(2)在初级控制系统资源分配的超管理器,(3)管理芯片外资源的微OS,(4)提供任务同步性并管理能量消耗和性能的运行时间系统,和(5)提供微OS便携性并允许访问新外围设备的硬件抽象层。根据这些实施方案,线程虚拟机(TVM)代替常规OS来提供到硬件的直接访问和小码之间的细粒度同步。TVM在这里不应理解为单独的组件,实际上,它由运行时间系统和微OS实施。
图1概述了组件之间的整体交互。
超管理器:
超管理器基于用户参数和可选地应用中指定的参数来分配全局资源给给定应用。这包括应使用多少节点,和在某些实施方案中,节点的连接度。超管理器设定应用区域并定义运行在每个节点上的微OS。然后超管理器载入应用特定参数(例如,命令行参数、环境变量等)并指导运行时间系统开始应用。运行时间系统通过开始核心上始于主程序开始指针的一个或多个小码来开始用户应用。用户应用可请求在运行时间繁衍更多小码。另外,用户应用直接与运行时间系统交互来进行任务同步。所有芯片外I/O由微OS调解,所述微OS串联化通过串联导线管(例如磁盘I/O、以太网、节点到节点通信等)通道的请求和响应。另外,微OS帮助运行时间系统在节点间到其它运行时间系统组件通信。硬件抽象层为获得微OS便携性提供公共API到其它平台来发现新外围设备。
下面的段落概述了系统利用和维护中涉及的不同组件的整体结构和功能性。
线程虚拟机(TVM):
TVM提供框架来将工作划分成称为小码的小的非抢占块并在运行时间有效地调度它们。TVM用一薄层能够直接与硬件对接的系统软件来替换OS,并且大体上使应用程序员免受结构复杂性的困扰。不同于常规OS,TVM能够公开对达成性能至关重要的资源。
图2示出了TVM的实施方案。TVM将任何控制流、数据依赖性或同步条件抽象化为统一数据非循环图(DAG),运行时间可将DAG分解成小码机制。在DAG顶部,TVM还重叠另一DAG,所述DAG使用范围概念表示程序的局部性。在本发明的实施方案中,小码可访问父级(例如,201)上建立的任何变量或状态,但同级(例如,202和203或204和205)不能访问彼此的存储器空间。使用这个范围,编译器和运行时间可确定给定图的合适的工作集和可用并发性,从而允许运行时间使用功率优化模型设定紧密度并载入平衡特征来调度资源到小码执行和系统状态或范围变量的渗滤。
不同于常规OS框架,TVM维持分形语义结构并对运行时间给出调度和渗滤控制,以最优地执行任务。通过遵循这个分形本质,使能的编程模型将能够提供实质信息给运行时间系统。因此,不同于具有不可预知和不复杂的缓存机制的单片线程,粒度和运行时间额外负担的静态和动态本质都被尽可能紧地管理,以提供更大的功率效率。
运行时间系统:
运行时间系统在软件中实施为用户库,且在硬件中被运行时间系统核心实施以服务若干执行核心。在实施方案中,所述运行时间系统核心可能与执行核心不同,或可能具有特定的硬件来帮助更有效地运行时间操作。在实施方案中,执行核心可执行运行时间系统任务,并且可能有或可能没有专用的核心来进行运行时间系统任务执行。
根据本发明的实施方案,配置并执行动态运行时间系统涉及最优地分配数据处理资源给数据处理任务的方法。所述方法涉及:在编译时,分析潜在代码和数据分配、放置和迁移;和在运行时,放置或迁移小码或数据以练习实际代码和数据分配所提供的机会;以及在某些实施方案中,将至少一些数据从一个场所复制到另一个场所,预期迁移一个或多个小码;和移动小码到其它未充分利用的处理器。
本发明的实施方案涉及一种数据处理系统,所述数据处理系统包括最优地定位系统中小码集的硬件和软件。所述系统的元件包括基于数字硬件和软件的构件,所述构件用来:(i)在系统中处理资源集间交换与度量相关的信息,所述度量与处理资源间小码集的最优放置有关;(ii)确定将所述集中一个或多个小码定位于处理资源中哪个处理资源;和(iii)根据所述确定将一个或多个小码映射到一个或多个处理资源。在各种实施方案中,所述映射可涉及次优数据局部性所触发的数据和/或小码迁移。在某些场景中,根据迁移的成本,迁移体积小码和数据。在实施方案中,迁移成本驱动程序包括以下一个或多个:将被迁移的数据或代码的量、迁移距离、同步的额外负担、存储器带宽利用和可用性。
运行时间系统可使用编译时注释或来自指定小码最优效率环境的当前或先前执行的注释。本发明的实施方案中的相关方法涉及:编译并运行计算机程序以寻求最大节约型程序执行。所述方法,在程序编译时,确定称为小码的程序部分的最优效率执行环境;并且相应地,在程序运行时间,定位小码以在它们最优效率执行环境执行。此外,在某些实施方案中,所述最优环境的确定是基于例如以下的程序源代码的指示来进行的:(i)编译器指令;(ii)函数调用,其中调用的一种类型的函数提供与所述函数的最优执行环境相关的信息;(iii)具有例如跨步、工作集、浮点使用的某些特征的循环体,其中最优执行环境已由类似数据处理平台上的类似循环的系统运行来预先确定。执行给定小码的最优效率执行环境可由例如以下的标准来定义:能耗、处理硬件资源使用、完成时间、给定能耗预算的最短完成时间。
内部硬件/软件运行时间堆栈:
在本发明的实施方案中,例如在图3示出的系统300中,运行时间系统核心301与事件池存储器302共置。在实施方案中,运行时间系统的任务可在专用运行时间系统核心上操作,或由执行核心操作。事件池302含有即将运行的细粒度小码、应用和系统目标(例如性能和功率目标)和数据可用性事件。事件池302可为例如列表的实际共享数据结构,或例如资源利用改变时(例如当队列具有自由空间;处理元件可用于工作;或互斥锁可用时)拨叫的回呼系统的分布式结构。运行时间系统核心301响应事件池302中的事件。根据本发明的实施方案,有5个在运行时间系统核心301上运行的管理器:(1)数据渗滤管理器;(2)小码调度器;(3)小码集迁移管理器;(4)负载均衡器和(5)运行时间性能监测器/调节器。在某些实施方案中,这些管理器通过在极其邻近状态操作并共享运行时间状态而协作工作。图4示出在一个示范性实施方案的运行时间系统核心301上运行的管理器的输入、输出和交互401。当合适时,数据渗滤管理器渗滤数据依赖性(即当可用时预取输入数据)和代码依赖性(即预取指令缓存)。当满足所有输入依赖性时,小码调度器将小码放置在工作队列中,从而在某些场景中重排队列中就绪小码的优先顺序。执行核心反复地从工作队列接受任务并运行它们到完成为止。在运行小码的过程中,执行核心可创建小码或线程,并把它们放置到事件池里。运行时间性能监测器/调节器监测执行核心的功率和性能,并且可作出调整来减小功率(例如,按比例降低核心的频率和/或电压;关掉核心;或将工作队列的一些或全部工作迁移到芯片上其它计算区域并关掉核心)或提高性能(例如,按比例提高频率和/或电压;打开核心;从其它计算区域招收更多工作或打开不同计算区域并把它们结合到应用)。负载均衡器分析工作队列和事件池并确定工作是否应局部地进行(即在这个计算区域中)或迁移到别处。小码迁移管理器与所述节点和远程节点上其它运行时间系统核心一起工作,以发现小码集的最优目的地并合适地迁移它们。小码迁移也可由不良数据局部性触发:如果小码集中许多小码请求定位在另一个节点上的数据,那么重新定位所述代码可能比重新定位所述数据更好。
这些管理器也以协作方式一起通信,以获取具有例如给定能耗预算的最小完成时间的共同利益的目标。例如,如果性能管理器想把功率调低而负载均衡器想局部迁移更多工作,那么将这两个管理器共置在RTS核心上意味着它们可同时传递它们目标的最好的动作过程并进行快速、确定性动作。因此,这些子系统提供基于广义角色(GACT)目标建构内部性能模型并获取设定点的控制结构。所述系统的目标是以由GACT约束的能量比例方式来提供最小能耗的最高性能。在本发明的实施方案中,这些功能依靠运行时间系统核心来通过发送载入和功率指示符并接收目标对象来非同步地与主运行时间系统核心通信。主运行时间系统核心的工作是监测芯片上给定应用的整体性能/功率分布,并合适地调整每个计算区域的性能(所述性能可包括个体核心的频率、电压和开/关状态)。
分配到应用的每个节点的主运行时间系统核心非同步地与所谓应用的头节点的主运行时间系统核心通信,并交换性能度量和目标对象,例如完成时间、能耗和最大资源约束(例如,存储器空间、节点、网络链路等)。运行时间系统硬件的分层和分形管理结构反映了执行模型的分层本质。全体地,运行应用的节点的主运行时间系统核心如下面在超管理器部分中描述的那样执行超管理器任务。运行时间系统彼此通信并提供反馈(例如,局部运行时间核心确定工作量很低,告诉主运行时间核心,并接收更多工作),使得整个系统就是自知的。
在自知操作系统的实施方案中,监测区域的分形分层网络实现数据处理系统的管理。例如,在基本簇,区域可以是:集群、节点、套接口、核心、硬件线程。每个叶域处的进程(可以是调度器)监测硬件和应用(例如,能耗、载入、程序完成的进展等)的健康状况。阶层中较高级别的监测器聚合来自它们子域的信息(且可能可选地添加在它们区域的信息——或要求所有监测都由子域进行)并把信息向上传递到它们的父域。当硬件组件失效时,被沿链接向上报告。阶层中任何级别可选来重新开始在失效的硬件上运行或沿链接向上传递的小码。一旦一个级别选择重新开始小码,那么它可向下委派任务到它的子级别执行。也可用这种方式迁移使能的小码。如果一个级别发现它的队列变得太满或消耗太大功率,那么它可用与上面描述的方式相同的方式来迁移使能小码。最终,如果一个级别发现它任务太少,那么它可从它父级别请求工作,且这个请求可沿链接向上直到能发现一个合适的施体为止。
运行时间系统用户API:
小码可通过调用运行时间库调用来创建另外的小码,以定义另外小码的数据依赖性、引数和程序计数器。可通过数据依赖性或控制依赖性来实现同步性。例如,通过繁衍依赖于具有参与屏障的角色的数目(看图5)的变量等式的小码来实施屏障。每个参与小码原子地添加一个到屏障变量。可用类似方式实施互斥:具有临界区域的小码把互斥锁捕获用做数据依赖性,并当完成时释放锁。然而,如果临界区域短,那么在某些场景中(在没有死锁并且当所述锁在空间局部存储器中时),核心只等待锁可能是富有成效的。最终,存储器中的原子操作()允许许多类型的隐式无阻塞同步,例如比较和交换队列入口和原子添加增量/减量。
微OS
微OS在节点边界提供非本地节点资源和安全。在本发明的实施方案中,微OS具有两个组件:(1)在执行核心上运行的特定小码;和(2)用户通过系统调用来调用的库函数。特定小码用于基于事件的中断驱动执行或串联设备的非同步轮询和将数据放置到队列中。典型设备包括以太网、将这个节点连接到其它节点的开关的端口,和主动提供的输入(可能是来自磁盘-I/O的非同步响应)的其它来源。另外,可为例如在诸如TCP/IP的可靠通信协议上的转发中继操作的时序事件保留小码。这些小码分析发送者和接收者,以保证允许属于具有节点的应用的特定来源访问节点上的资源或应用专用资源(例如,磁盘上的刮痕空间)。到共享资源(例如,全局文件系统)的访问是通过例如用户、群、作用或访问级别的能力的构件来认证的。
库函数允许用户应用直接访问硬件,而不需要介入或额外调度。这些函数中的一些可直接在硬件(例如,LAN、节点到节点或磁盘写入)中实施。其它函数使用低级别支持来直接发送并通过缓冲从非同步输入轮询线程接收数据,例如从另一个节点请求磁盘访问。库调用指导用户访问被分配到它应用的数据。用户或系统库可指定是否阻塞等待响应(例如,我们知道它很快回来)或调度小码以在结果上运行数据依赖性。
库函数被设计成能量有效并通过紧密地与运行时间系统耦合来隐藏延迟。例如,调用文件系统读的小码可使文件系统请求;创建小码来在文件系统响应上处理具有数据依赖性的响应;并离开。这样允许执行核心在其它小码上工作,同时数据在传输中(而不是保持在I/O等待状态)。如果没有足够的并发性,那么运行时间系统可关掉核心或调低核心的频率,来允许面对长时延读取操作的更慢计算。
本发明的实施方案用两种模式提供安全:高性能计算(HPC)模式,其中一个应用拥有全部节点;和非HPC模式,其中多个应用可在一个节点上共存。在HPC模式下,大体上在节点边界(即除了内核/用户存储器空间和只读存储器以外不检查芯片上访问)上执行安全是足够的。用户应用知道它们应用中节点(即节点0到N-1,其中N是应用中节点的数目)的逻辑映射也是足够的。微OS知道将节点ID物理映射到逻辑ID,并在适当时重写地址。另外,当微OS从节点边界外部获取输入时,它验证数据就是那个节点的。因此,芯片上安全包括保护内核代码与用户代码分开,并保护用户的只读存储器不写。在非HPC模式下,微OS允许节点与外部外围设备通信但大体上不与其它节点通信。用相同方式验证输入。由如超管理器部分描述的超管理器配置的硬件来执行另外的安全。可在粗粒度应用级别或细粒度小码级别执行安全。在小码级别,因为在运行时间已知数据依赖性和数据块的尺寸,所以可通过使用防护指针(像M机器上使用的指针)由硬件或由使用无效页面或金丝雀(用于ProPolice或堆栈保护中)的软件来在数据对象周围保证安全。
超管理器:
超管理器负责把资源分配给用户应用。在本发明的实施方案中,它物理上常驻在所有节点上且部分在主系统上。每个芯片上的一个或多个小码集可用于超管理器功能。它们常驻在运行时间系统核心和执行核心中,并且大体上遵循和系统中其它小码集相同的细粒度执行模型。主软件上超管理器的实施方案维持所有资源分配到系统中所有应用的状态。当开始一个应用时,广义角色(GACT)可指定一组执行环境变量,例如节点数目和功率和性能目标。超管理器把应用放置在系统中并分配资源,从而应用空间中的节点是连续的并很好地匹配GACT应用请求。一旦分配一组节点,主超管理器就与每个节点上的超管理器例子通信来分配所述节点,传递应用代码图像和用户环境(如果有就包括功率和性能目标),并用信号通知运行时间系统以开始应用。超管理器通知微OS和运行时间系统:资源被分配到应用。然后,节点上的超管理器例子监测应用性能并与分配到应用的其它节点上的其它超管理器例子和运行时间系统核心一起工作,以通过管理功率、性能、安全和韧性的关系来达成功率/性能目标,从而维持能量比例运行时间功率预算(见图6整体系统、超管理器和运行时间系统交互的阶层601)。微OS线程和库提供分配到应用的所有节点上的应用数据和环境的安全。
在多个应用可共存于一个节点的非HPC模式下,超管理器从核心集创建计算区域。每个应用的RAM都被分割,且用户应用不能写入彼此的DRAM或芯片上SRAM。这可由功率效率的基本存储器管理单元(MMU)或旧有机器上广义虚拟存储器管理器(VMM)实现。在应用启动阶段,超管理器确定每个分割的地址前缀和大小,并且MMU可立即重写应用地址。大体上,可用这种方式来访问映射到应用存储器空间的地址。
硬件抽象层:
硬件抽象层(HAL)允许微OS和用户应用询问硬件设备可用性并以统一的方式与硬件交互。设备可以是执行核心、磁盘、网络接口、其它节点等。系统的部分可被用户应用通过文件描述符访问。例如打开、读、写和关闭的微OS库函数调用向应用提供基本硬件抽象层。驱动程序与HAL交互,其中一系列存储器读并写。HAL实施例把这些请求转换成与硬件平台相关的总线事务。这样允许用户在不同的基本平台上再次使用驱动代码。
另外,应用可向硬件或运行时间系统询问可用于应用的节点的数目、芯片上执行核心的数目和存储器可用性,以帮助确定怎样划分所述问题。例如,如果存在一千个核心,那么应用可将一百万个迭代循环划分成一千个迭代小码;而如果只有四个核心,那么它会把工作划分成更粗粒度块,因为不能从硬件获得更多并发性并且更少小码的额外负担更低。在各种实施方案中,块的最优尺寸例如可以是(1)可平行进行的工作单元的最大数目除以可用于应用的处理元件的量的圆形整数商;(2)块之间的不同大小,从而最小块尺寸和最大块尺寸之间的最大差异被最小化;或(3)允许在提供的时间预算中完成应用分割,同时保持在提供的能耗预算内的最大尺寸。
自优化操作系统:
操作系统服务由微OS和运行时间系统执行,并由超管理器管理。这些组件一起组成了图7中示出实施方案中描述的示范性自知操作系统701。运行时间系统的自优化本质由以下来实现:(1)执行系统的自知特征;(2)OS的自知特征;和(3)在(1)和(2)之间的交互。如图7所示,OS、超管理器、运行时间系统和执行单元彼此通信,并和它们的邻近级别通信,以提供反馈观察-确定-控制循环。
这部分描述了自优化系统模型701的实施方案。
(1)嵌入执行系统中的自优化循环:执行模型的实施方案以两种小码为特征:非同步任务和数据流小码。在两种类型中,相应小码活动的引起是事件驱动的。至少在非同步任务的情况下,小码的调用可另外取决于计算载入、能量消耗、错误率或在任务可分配到的特定物理区域上的其它条件。自优化也可应用到性能自知监测和自适应。
(2)嵌入操作系统中的自优化循环:自优化OS观察本身、反映它的行为并适应。它是目标定向型;理想地,系统客户指定目标是足够的,且系统的工作是想出怎样实现目标。为了支持这些自优化功能性,实施方案中的OS观察器代理(即运行时间系统核心和超管理器)配备有能被编程来观察程序执行和系统资源利用的所有方面的性能监测设施,和可在不同时间间隙或特定位置/区域请求OS时观察系统功率消耗的能量效率监测设施。
在实施方案中,OS确定代理(在运行时间系统核心上运行的代码)配备有合适的模型建构器和学习能力,这样它可采取及时有效地动作来进行自校正和自适应,从而实现目标。在一些实施方案中,OS自优化循环可使控制理论方法实现它的目标。图7示出(1)和(2)之间的交互:连接OS中的控制循环和每个执行系统中的控制循环。OS控制循环可向执行系统询问关于它们运行状态、资源使用、能量效率和错误状态的情况,以做出有根据的确定来执行系统级别全局控制和调整。同时,每个个体执行系统可向OS寻求帮助,来解决它自身控制中可更好地在OS级别解决的问题。
为了有效地使用运行空间系统和方法,应用开发者可提供指令,在编译时系统对所述指令注解,并且所述指令产生更好的初始静态分配、更好的运行时间(动态)分配或两者。图8示出C语言中的显式语言元素(801),其中应用程序员报警:系统为“资源拖延”,这可指示可迁移代码到低功耗、慢的执行单元。参考数字802表示隐式指令:使用低保真度浮点计算的特定API调用。这些计算可在浮点处理单元上用很小的尾数位来便宜地进行,从而允许更大的专门化,且在系统的计算区域内更好地匹配能力和需求。这些是运行时间可用来做出动态确定的用户特定指令的一些例子。另外,可用指令来剖绘和注释应用,这样运行时间可基于注释提供的提示在随后的运行中做出更好的动态确定。
图9示出示范性微存储器管理单元。参考数字901是具有局部代码执行和四个局部物理存储器块的处理单元。参考数字902和903是同一控制任务-拥有者X-所拥有的两个存储器块,且所述两个存储器块可访问与所述任务相关的小码。902具有逻辑地址00和物理地址00,而903具有物理地址10和逻辑地址L01。参考数字904显示L01以外的存储器访问对于X拥有的小码怎样显示。即L02以外的任何局部逻辑地址对于X拥有的小码来说都是错误的。参考数字905显示常驻在物理位置01上的存储器部分,所述位置对于Y拥有的小码逻辑性地显示为L00。所有其它局部物理存储器都不能访问Y小码。参考数字906显示常驻在物理位置11上的存储器部分,所述位置对于Z拥有的小码逻辑性地显示为L00。所有其它局部物理存储器都不能访问Z小码。
图10示出包括运行空间系统的简单使用例子,其中广义代理1001指示任务(一般通过编译源代码);开始应用1003并获取结果1004。并发地,另一GACT 1005执行监测和系统维护1006。在典型环境中,运行空间系统可通过局域网(LAN)和/或广域网(WAN)1007使用,并且由与常规前端服务器1008的交互来进行,所述常规前端服务器1008与高端计算机(HEC)1009通信。
图11示出运行空间中观察到的具有小码和数据随时间分配的代码和数据局部性的例子。运行空间的另外属性可包括外围设备资源需求或分配、处理器操作包封和约束、任务紧迫性或可迟性等。运行空间系统使用度量空间距离模型来最初分配代码和数据到合适的局部处理元件,并当认为相对于当前目标优化系统性能有利时可动态地迁移代码和数据。系统可使用政策驱动优化技术来动态分配并在编译时使用详尽优化方法。另外,系统可从之前的性能数据中学习,以改进特定小码、子程序、任务和应用的未来分配。
横切交互:
执行模型:运行时间系统和微OS管理、迁移和繁衍小码。它们根据运行时间目标选择运行小码版本。如上面所述,运行时间系统核心管理小码之间的数据依赖性,从而一起迁移数据和小码,并基于运行时间约束繁衍正确的小码版本。
可依赖性是安全和弹性的组合。根据实施方案,本发明的安全方面包括向小码提供安全标示,其中所述标示指示分配所述小码和它们相关数据时将考虑的限制或权限。数据绑定或规定的权限之外的存储器访问将增加运行时间系统需处理的安全例外。在HPC模式下,应用完全拥有节点。在核心级别安全由用户/内核空间存储器和指令集实施提供。在应用级别安全由主系统和超管理器提供,所述主系统定义应用在上面运行的节点集,所述超管理器中继信息到在分配节点上运行的微OS。在系统级别安全由主系统上的工作管理器提供,所述工作管理器以互相排斥的方式调度并分配节点到应用。在非HPC模式下,系统被进一步子划分为互相排斥的芯片区域和存储器部分,并且存储器和资源被映射从而防止应用访问彼此在相同芯片上的数据。
弹性是通过分形监测系统的健康状况并重新执行失效的小码来维持的。计算区域中局部运行时间核心监测执行核心健康状况。节点级别运行时间核心监测运行时间核心。节点级别运行时间核心被主系统监测。当一个组件失效时,在核心上运行的小码被重新开始(如果它们没有在程序中创建状态改变)或者应用被从检查点重新开始(如果程序的状态是非确定的)。
效率目标在给定应用和系统目标集的情况下寻求最大化性能并最小化能耗。这是基于代码的依赖性和工作的可用性通过在执行核心级别频率和电压缩放来实现的。另外,小码和数据被迁移到它们能最有效地彼此通信(例如,通过更紧密保持交互小码在一起)并消耗最小量功率(例如,把小码移到一起以允许未使用簇的功率区域关机并消除闲置能耗)的地方。
自优化:通过分形监测网络(的健康状态和性能)和运行时间系统重新调度来维持自优化,从而实现应用和系统的目标同时维持可依赖性和效率。
实施方案描述:
下面进一步查看附图描述本发明的实施方案的操作例子和应用场景。
图12示出使用小码集的计算系统。重要的表示步骤包括:1201在GCS上提供小码集表示系统;1202从GACT获取小码集表示;1203把小码集转换成可执行或可判读的指令和依赖性表示;1204在GCS上使用指令来进行元级别分布和小码集分配;1205执行小码集可执行例子的动态具体分布和迁移;1206执行小码集和1207至少部分基于依赖性使能新的小码集。
图13示出包括以下步骤的小码集表示系统:1301提供规格系统来指派小码集;1302向GACT提供机制来建构并修改小码集并获取小码集的初始分析;1303向GACT提供机制来在实际或模拟资源上执行小码集;1304向GACT提供机制来监测运行小码集或查看小码集的历史轨迹;1305向GACT提供机制来动态地操纵小码集;和1306向GACT提供机制来剖绘小码集性能和资源利用。
图14示出包括以下步骤的小码集转换的例子:1401从表示中抽取小码集描述符;1402转换可执行指令;1403应用资源不变优化;1404建构、分组并分布指令以指导运行时间分配、分布和迁移;1405应用资源特定优化;和1406产生可执行文字并使能初始小码。
图15示出元级别小码集分布的例子,所述例子包括以下步骤:1501使用指令来初始分配小码集到计算和数据资源;1502监测具体级别小码集执行和资源利用;1503收集修改小码集分布的机会;1504建构改进初始(编译时)小码集分布的指令;和1505提供资源信息和仲裁来支持小码集的动态(运行时间)迁移。
图16示出小码集执行和迁移并包括以下步骤:1601使用小码集分布指令来分布小码集文字到通信资源或到模拟计算资源;1602提供小码集执行文字和分布指令之间的映射;1603配置小码集来传回资源和结果到系统只到完成为止;1604监测资源利用和使能的小码队列载入;1605使用小码信号来获取或传递状态信息,或监测小码系统;1606监测以识别并提交资源或把请求向上串接到更高级别监测器;和1607在适当时从使能队列移去小码集并和数据一起迁移它们。
图17示出双端队列并发访问机制:1702写和1703列队。队列的其它状态在1701是空的且在1704是内务处理。
图18示出出队并发访问机制,这次执行1801一致性检查,1802空队列,1803非空队列和1804读和出队。注意这种系统的一个优势是使用系统的过程具有处理清除任务的整体性,所以队列很强健。
图19示出通过原子加法数组(A)的并发访问:写。所述状态包括1901初始状态和1902原子更新写指针。
图20示出通过原子加法数组(B)的并发访问:写。所述状态包括2001数据写和2002标记更新和识读器可见数据。
图21示出通过原子加法数组(C)的并发访问:读。所述状态包括2101数据就绪可被读且读指针更新和2102读开始和2103读完成和标记更新。
图22示出链表,特别是原子加法数组(A)。
图23示出链表,特别是原子加法数组(B)。
图24示出链表,特别是原子加法数组(C)。
图25示出链表,特别是原子加法数组(D)。
图26示出链表,特别是原子加法数组(E)。
图27示出通过具有转向的共享数组的并发访问。
图28示出组合网络分布增量。
图29示出通过原子加法数组(A)的单任务和多任务执行并发访问。
图30示出通过原子加法数组(B)的单任务和多任务执行并发访问。
图31示出通过原子加法数组(C)的单任务和多任务执行并发访问。
图32示出通过原子加法数组(D)的单任务和多任务执行并发访问。
图33示出通过原子加法数组(E)的单任务和多任务执行并发访问。
图34示出小码集计算系统场景,显示不同用户相对于系统的角色。
图35示出微芯片级通用示范性结构。注意存储器级别是非特定的,且想要传送局部存储器(具有快速访问)对非局部存储器的阶层。例如,LI可实施为寄存器文件、SRAM等。
图36示出板级/系统级通用结构;同样,又示出性能和全局性的范围。
图37示出小码和小码集的指派。有许多等效的方式来指定小码集。规格通常通过特定元语言的使用由本机语言结构,或甚至由非执行注释或通过整合的开发环境进行的选择来发出信号。小码集是可编写的,并可被定义来激发其它小码或小码集。GACT通过从基本小码建构小码集,然后通过组合所述集成为包括全部应用的大的集合来建构功能性。函数setDependency允许表示一个小码集的两个元素或不同小码集的两个元素之间的依赖性。在一个实施方案中,在运行时间调用函数implementSet,以建构依赖性图并把它们转换成指针。另外,在实施方案中,修改编译器来从代码产生依赖性信息,即使所述依赖性信息不是由GACT提供的。
图38示出双缓冲计算(A)。注意每个小码集具有初始化和清理程序,以开始系统并清理和激发出口依赖性。在一些实施方案中,初始化和清理任务可在编译时被静态地优化或在运行时间动态地优化。运行时间系统当被表示成Petri网时是同构的,Petri网是位置和转换的图。位置扩展数据流模型并允许表示数据依赖性、控制流依赖性和资源依赖性。在一个实施方案中,系统首先执行高优先顺序任务,然后进行高优先顺序任务。这允许调度某些系统关键小码,例如维持系统的并发资源访问的任务。如果所有的执行核心在Compl然后在Comp2上工作,那么突然大多数核心会没有工作直到copyl和copy2完成。因此,产生更多小码的小码被给予更高的优先顺序,这样运行队列永远不会空。在下面的说明中,一旦开始系统,它会连续执行至少一些计算小码,因为当复制小码可用时它们具有高的优先顺序。
另外,在双缓冲计算例子中,示范性索引1024界限指示当Init结束时,它使能1024Compl小码。类似地,在复制小码集中激发示范性索引界限8复制小码。注意使用数字8是因为系统可具有许多要求DRAM带宽在其间仲裁的处理器。因此,尽管额外负担(上下文切换)很小,但是小码系统可使用很少的执行核心来实现同样持久的带宽,从而实现改进的应用程序处理通量。在另一实施方案中,系统可动态地提供进入copyl并从copyl回传的位置,其中所述位置中始终有8个符记。类似地,可对copy2进行相同的优化。最终,在另一实施方案中,两个位置可融合成同一位置,且复制函数可使用DRAM带宽符记的同一池。在这种情况下,如果计算比复制长,那么系统可保证copyl和copy2不同时发生。这是petri网的资源约束的表达能力的例子,例如存储器带宽、执行单元、功率、网络、锁等;并说明小码集可利用所述表达能力来使能高平行、高可扩展性应用的建构。注意,在2702,deltaT暗示SignalSet(buffer_set[0])在SignalSet(buffer_set[1])前执行。
图39示出双缓冲计算(B)。在3901,用信号通知Init Set 1,而在3902,用信号通知Init Set 2,且开始计算1024小码的示范性数目。
图40示出双缓冲计算(C)。在4001,任务Comp2在队列中,但当系统在先来先服务模式下操作时执行核心将继续在Compl上工作,除非有优先顺序差别。在4002,Compl完成,且放置高优先顺序任务“清除”。Comp2现在继续。在其它实施方案中,工作可用先进先出以外的方式进行,例如后进先出以给出堆栈类语义。这个实施方案适用于共享递推应用的工作。
图41示出双缓冲计算(D)。在4101,Comp2可继续,但至少一个执行单元用于高优先顺序任务copy(8)。在4102,Comp2仍在继续,但已向复制函数分配更多执行单元。系统在复制之后清除资源。
图42示出双缓冲计算(E)。在4201,系统将检查完成标记是否在缓冲1中。在4202,初始化Compl小码。
图43示出双缓冲计算(F)。在4301中,Compl小码排在现有Comp2小码后。在4302中,Comp2完成而Comp1继续。
图44示出双缓冲计算(G)。最终,在4401,初始化复制集2的高优先顺序小码,而Compl继续。注意小码可在任何时候接收信号,甚至在它们执行期间。这样使代码和数据的迁移能更好地利用计算资源。总而言之,一些显著的方面可包括:(a)优先顺序;(b)平衡并发性与队列空间;和(c)数据流外的扩展,它可包括例如早期信号、事件流和/或使编程器能影响调度。
图45示出具有SRAM和DRAM的矩阵相乘。在4501,系统把矩阵A和B的块从DRAM复制SRAM,并计算SRAM中的矩阵C。在4502,C的每块被复制回DRAM中适当位置。
图46示出矩阵相乘双缓冲/DRAM。在这种情况下,小码用来双缓冲DRAM访问,从而减小访问的时延;这在括号中代码4602的部分中说明。
图47示出计算LINPACK DTRSM(双三角正解倍数)的例子。4701显示初始依赖性。一旦矩阵相乘进行第一行和列,那么系统可转到下一数据集。
图48示出DTRSM情况下小码集的运行时间初始化。注意用指示将产生多少小码的参数来调用Init()。4802显示一些可在DTRSM的小码集实施上执行的优化。
图49示出快速排序例子。在4901,控制流路径依赖于数据。如果所述依赖性先前得到解决/满足,那么可基于小码输出或中间状态来有条件地设定所述依赖性。4902示出了快速排序图的Petri网表示。在这种表示下,线程将在上半部分工作直到交换小码没有输入数据(因为没有数据或因为所有脏数据都在一边)。当执行单元没有高优先顺序小码时,它用低优先顺序小码,例如,在屏障处等待。这时,“移动”小码清除并把枢移到正确的位置。
图50示出带有应用小码集的可扩展系统函数。因为系统功能性能流动地与小码集应用整合,所以系统设计师在平衡系统额外负担与系统服务时具有很大的弹性。对于一些使用和应用,可几乎没有系统软件,但在其它情况下,扩展监测和除错可产生比在给定时间运行的应用任务更多的系统任务。
图51示出将现有程序码转换为多任务,显示可怎样将多任务输入输出表用来通过小码集开发代码的并发评估。建构优先顺序,这样使能一个或多个随后的并发任务所必需的顺序任务就具有高优先顺序。输入变量集的特定元素到输出变量集的映射允许接收函数在第一例子可用之后即可开始处理。可分离例子的数目的计数允许系统软件分布小码执行,从而来允许高CPU利用并利用数据的局部性。
图52示出“黑箱”代码与多任务代码一起运行的情况,它示出了场景5201,其中库代码已被转换成小码集,但黑箱用户代码5202仍是固有的顺序。在其它实施方案中,假设随后的处理需要所有黑箱值,那么优先顺序可以是保守的;或者基于先前运行的性能评估或所述同一运行的先前周期,优先顺序可以是统计的;或两者都可以。
图53示出改进的与多任务代码一同运行的黑箱代码。在这种情况下,黑箱代码的部分可由用户标示,所以它可用于并发执行。原始黑箱任务之前的多任务5302对应于函数F25303。黑箱任务5304的初始部分对应于重构函数BB1a,且当5302的结果可用时使用所述结果来转换所述初始部分以当前地运行。黑箱函数的下一部分仍是固有的顺序,且依然是将在随后的操作之前完成的黑箱。注意在实施方案中,可执行随后的函数的推测执行,从而提供一种方式来在5306的执行期间获取并发性。参考数字5308是重构黑箱函数的第三部分,它对应于函数BB1c,并允许对应于MP25311的库调用5310的并发执行。
另外说明:
本发明的各种实施方案可解决应用程序相对于一些性能测量或相对于一些资源约束的性能优化。示范性性能测量或约束可涉及但不限于程序的总运行时间、特定部分中程序的运行时间、执行特定指令前的最大延时、所用处理单元的量;所用存储器的量;寄存器文件的使用;高速缓存存储器的使用;一级高速缓存的使用;二级高速缓存的使用;三级高速缓存的使用;N级高速缓存的使用,其中N为正数;静态随机存取存储器的使用;动态随机存取存储器的使用;全局存储器的使用;虚拟存储器的使用;可用于使用而非用于执行程序的量处理器;可用于使用而非用于执行程序的存储器的量;能量消耗;高峰能量消耗;计算系统的寿命成本;所需寄存器更新的量;所需存储器清除的量;安全强制的效能和安全强制的成本。
结论:
此详细描述提供先前讨论的本发明实施方案的例示系统操作场景和应用例子的说明。为描述本发明概念的可能实施例子以及相关发明利用场景,本专利申请案和相关专利申请案中提供了特定应用、结构和逻辑实施例子。当然,有多种替代性的方式来整体或部分地实施或利用上面阐述的本发明的原理。例如,本文中明确描述或示出的元素或过程步骤在各种实施方案中可相互组合或与另外的元素或步骤组合。还可再划分所述元素,而不会偏离本发明的精神和范围。另外,在各种实施方案中,本发明的方面可使用应用和系统软件、通用和专用微处理器、定制硬件逻辑和以上的各种组合来实施。大体上,本领域的技术人员能够开发所述实施方案的不同版本和各种修改,即使本文中没有个别地描述所述版本和修改,但是根据本发明的原理,它们都包括在本发明的精神和范围里。因此,本说明书和附图旨在仅作为例示性而不是限制性,本发明的真正范围由上面的权利要求书指定。
Claims (37)
1.一种用于分配数据处理系统资源给一个或多个应用程序的任务的方法,所述方法包括:
a)获取一组被配置来实现至少一个任务的小码;
b)确定所述组中所述小码间的依赖性;
c)至少部分基于所述小码间的所述依赖性并基于数据处理系统资源的可用性,动态地映射所述组中的给定小码到数据处理系统资源集以执行所述给定小码。
2.如权利要求1所述的方法,其中所述映射包括选自由以下组成的群组的函数:放置、定位、重新定位、移动和迁移。
3.如权利要求1所述的方法,其中所述映射包括选自由以下组成的群组的函数:确定执行所述给定小码的开始时间,和确定执行所述给定小码的位置。
4.如权利要求1所述的方法,其中所述映射包括基于至少一个选自由以下组成的群组的标准来执行映射:1)改进应用程序的性能度量,2)改进所述数据处理系统资源的利用,和3)最大化应用程序的性能度量,同时遵守给定资源消耗目标集。
5.如权利要求1所述的方法,其中执行所述映射以相对于选自由以下组成的群组的测量来优化应用程序的性能:
所述程序的总运行时间;特定部分中所述程序的运行时间;执行特定指令前的最大延时;所用处理单元的量;所用存储器的量;寄存器文件的使用;高速缓存存储器的使用;一级高速缓存的使用;二级高速缓存的使用;三级高速缓存的使用;N级高速缓存的使用,其中N为正数;静态随机存取存储器的使用;动态随机存取存储器的使用;全局存储器的使用;虚拟存储器的使用;可用于使用而非用于执行所述程序的量处理器;可用于使用而非用于执行所述程序的存储器的量;能量消耗;高峰能量消耗;计算系统的寿命成本;所需寄存器更新的量;所需存储器清除的量;安全强制的效能和安全强制的成本。
6.如权利要求1所述的方法,其中执行所述映射以在选自由以下组成的群组的资源约束内操作:
所述程序的总运行时间;特定部分中所述程序的运行时间;执行特定指令前的最大延时;所用处理单元的量;所用存储器的量;寄存器文件的使用;高速缓存存储器的使用;一级高速缓存的使用;二级高速缓存的使用;三级高速缓存的使用;N级高速缓存的使用,其中N为正数;静态随机存取存储器的使用;动态随机存取存储器的使用;全局存储器的使用;虚拟存储器的使用;可用于使用而非用于执行所述程序的量处理器;可用于使用而非用于执行程序的存储器的量;能量消耗;高峰能量消耗;计算系统的寿命成本;所需寄存器更新的量;所需存储器清除的量;安全强制的效能和安全强制的成本。
7.如权利要求1所述的方法,其中执行所述映射以寻求目标的时变混合,其中所述混合由于选自由以下组成的群组的因素而随时间改变:预定改变和动态地出现的改变。
8.如权利要求1所述的方法,还包括应用编译时指令集,以助于实行所述获取、所述确定或所述动态地映射中的一个或多个。
9.如权利要求8所述的方法,其中所述编译时指令选自由以下组成的群组:所需浮点单元、所需浮点精度、访问的频率、访问的局部性、停滞访问、只读数据类型、最初只读数据类型、最终只读数据类型和有条件只读数据类型。
10.一种用于寻求计算机程序执行的用户或系统定义目标的方法,包括:
a)将计算机程序分解成抽象模型集,其中抽象模型包括以下成员中的一个或多个:小码、合作小码集、合作抽象模型集,或抽象模型的至少一些其它成员共享的数据;
b)定义邻近的关系以寻求最大化存储器空间或执行时间中所述抽象模型的所述成员的邻近性;
c)通过运行时间系统,执行以下至少一个:i)最初放置数据或以协调方式开始执行抽象模型中的小码,或ii)当寻求用户或系统定义目标有益时,以协调方式迁移抽象模型的成员,
a)其中所述放置或所述迁移至少部分基于所述邻近的关系来进行。
11.如权利要求10所述的方法,其中所述分解包括分解所述计算机程序以最小化所述抽象模型间的依赖性。
12.如权利要求10所述的方法,还包括确定所述抽象模型间的依赖性集。
13.一种用于寻求计算机程序的用户或系统定义目标的方法,包括:
b)将所述计算机程序分解成抽象模型集,其中抽象模型包括以下中的一个或多个:小码、合作小码集、合作抽象模型集,或抽象模型的至少一些其它成员共享的数据;
c)获取与所述程序相关的关于所述抽象模型、性能和资源利用的程序运行时间信息;和
d)使用所述程序运行时间信息来指导至少部分所述计算机程序的正在进行的或随后的运行中所述抽象模型的随后的放置或执行调度。
14.如权利要求13所述的方法,其中所述分解包括分解所述计算机程序以最小化所述抽象模型间的依赖性。
15.如权利要求13所述的方法,还包括确定所述抽象模型间的依赖性集。
16.如权利要求13所述的方法,还包括至少部分基于改进抽象模型的元件的局部性的标准,迁移含有正在执行或即将执行小码的所述抽象模型的所述元件。
17.如权利要求13所述的方法,还包括基于选自由以下组成的群组的标准来迁移抽象模型的元件:改进资源的全局分配;允许衰减处理资源以节能;允许切断处理资源的电源;和使用更适于给定处理任务的处理资源。
18.一种用于分配数据处理资源给数据处理任务的方法,包括:
a)在编译时,分析潜在代码和数据分配以识别选自由以下组成的群组的动作的一个或多个机会:小码迁移和数据迁移;和
b)在运行时,迁移小码或数据以练习实际代码和数据分配所提供的机会。
19.如权利要求18所述的方法,其中所述迁移包括移动小码到未充分利用的处理器。
20.如权利要求18所述的方法,还包括将至少一些数据从一个场所复制到另一个场所,预期迁移至少一个小码。
21.如权利要求18所述的方法,还包括向小码提供安全标示,其中所述标示指示所述方法处理所述小码时将考虑的限制或权限。
22.一种用于划分至少一个软件应用段的执行的方法,包括:
a)查询运行时间系统以发现所述应用段可用的处理核的量;
b)确定所述段可分为的处理单元的最大量;和
c)基于a)和b)中确定的所述量,将所述段划分为最优数目的处理单元。
23.一种用于编译并运行计算机程序以改进节约型程序执行的方法,所述方法包括:
a)在程序编译时,确定所述程序的小码的最优效率执行环境;和
b)在程序运行时间,至少部分基于所述确定,根据小码的最优效率执行环境来放置并调度小码。
24.一种由多个核心构成的数据处理系统,包括:
a)多系统管理代理集,所述集包括以下一个或多个:数据渗滤管理器、小码调度器、小码迁移管理器、负载均衡器、调功器或性能管理器;和
b)供所述系统管理代理集以协作方式交互来优化所述多个核心中程序执行的构件。
25.一种用于最优定位数据处理系统中小码集的系统,包括:
a)用于在所述系统中处理资源集间交换与度量相关的信息的构件,所述度量与所述处理资源间所述小码集的最优放置有关;
b)用于确定将所述集中一个或多个小码定位于所述处理资源中哪个处理资源的构件;和
c)用于根据所述确定将所述一个或多个小码映射到一个或多个处理资源的构件。
26.一种包括多个节点的计算机系统中的计算机程序产品,所述计算机程序产品包括在其上存储有计算机程序码的存储媒介,所述计算机程序码被设计来在至少一个所述节点上执行,此取决于实施根据权利要求1所述的方法的操作的执行结果。
27.一种包括多个节点的计算机系统中的计算机程序产品,所述计算机程序产品包括在其上存储有计算机程序码的存储媒介,所述计算机程序码被设计来在至少一个所述节点上执行,此取决于实施根据权利要求10所述的方法的操作的执行结果。
28.一种包括多个节点的计算机系统中的计算机程序产品,所述计算机程序产品包括在其上存储有计算机程序码的存储媒介,所述计算机程序码被设计来在至少一个所述节点上执行,此取决于实施根据权利要求13所述的方法的操作的执行结果。
29.一种包括多个节点的计算机系统中的计算机程序产品,所述计算机程序产品包括在其上存储有计算机程序码的存储媒介,所述计算机程序码被设计来在至少一个所述节点上执行,此取决于实施根据权利要求18所述的方法的操作的执行结果。
30.一种包括多个节点的计算机系统中的计算机程序产品,所述计算机程序产品包括在其上存储有计算机程序码的存储媒介,所述计算机程序码被设计来在至少一个所述节点上执行,此取决于实施根据权利要求22所述的方法的操作的执行结果。
31.一种包括多个节点的计算机系统中的计算机程序产品,所述计算机程序产品包括在其上存储有计算机程序码的存储媒介,所述计算机程序码被设计来在至少一个所述节点上执行,此取决于实施根据权利要求23所述的方法的操作的执行结果。
32.一种在其上存储有可执行程序码的计算机可用存储媒介或网络可访问存储媒介,其中至少一部分所述程序码在执行后实施根据权利要求1所述的方法的操作。
33.一种计算机程序产品,包括计算机可用存储媒介或网络可访问存储媒介,且在其上存储有可执行程序码,其中至少一部分所述程序码在执行后实施根据权利要求10所述的方法的操作。
34.一种在其上存储有可执行程序码的计算机可用存储媒介或网络可访问存储媒介,其中至少一部分所述程序码在执行后实施根据权利要求13所述的方法的操作。
35.一种在其上存储有可执行程序码的计算机可用存储媒介或网络可访问存储媒介,其中至少一部分所述程序码在执行后实施根据权利要求18所述的方法的操作。
36.一种在其上存储有可执行程序码的计算机可用存储媒介或网络可访问存储媒介,其中至少一部分所述程序码在执行后实施根据权利要求22所述的方法的操作。
37.一种在其上存储有可执行程序码的计算机可用存储媒介或网络可访问存储媒介,其中至少一部分所述程序码在执行后实施根据权利要求23所述的方法的操作。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32336210P | 2010-04-13 | 2010-04-13 | |
US61/323,362 | 2010-04-13 | ||
US37706710P | 2010-08-25 | 2010-08-25 | |
US61/377,067 | 2010-08-25 | ||
US38647210P | 2010-09-25 | 2010-09-25 | |
US61/386,472 | 2010-09-25 | ||
PCT/US2011/032316 WO2011130406A1 (en) | 2010-04-13 | 2011-04-13 | Runspace method, system and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102934081A true CN102934081A (zh) | 2013-02-13 |
CN102934081B CN102934081B (zh) | 2016-11-30 |
Family
ID=
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412919A (zh) * | 2013-08-09 | 2013-11-27 | 杭州华为数字技术有限公司 | 一种分布式文件系统的调度方法及设备 |
CN104598288A (zh) * | 2013-10-30 | 2015-05-06 | 华为技术有限公司 | Java程序执行方法和装置 |
CN106155876A (zh) * | 2016-07-26 | 2016-11-23 | 北京蓝海讯通科技股份有限公司 | 一种金丝雀分析方法、应用和计算设备 |
CN106155632A (zh) * | 2016-08-02 | 2016-11-23 | 合肥奇也信息科技有限公司 | 一种用于计算机最优定位数据处理中小码集的系统 |
CN106155757A (zh) * | 2016-08-02 | 2016-11-23 | 合肥奇也信息科技有限公司 | 一种基于计算机编译并运行程序执行的方法 |
CN106250241A (zh) * | 2016-08-02 | 2016-12-21 | 合肥奇也信息科技有限公司 | 一种多方向分配数据处理系统资源到应用程序的方法 |
CN106250200A (zh) * | 2016-08-02 | 2016-12-21 | 合肥奇也信息科技有限公司 | 一种用于计算机划分至少一个软件应用段的执行方法 |
CN106250227A (zh) * | 2016-08-02 | 2016-12-21 | 合肥奇也信息科技有限公司 | 一种寻求计算机程序执行定义目标的方法 |
CN106293937A (zh) * | 2016-08-02 | 2017-01-04 | 合肥奇也信息科技有限公司 | 一种用于分配数据处理资源给数据处理的方法 |
CN107360235A (zh) * | 2017-07-17 | 2017-11-17 | 广东工业大学 | 一种基于可靠性分级的任务迁移方法 |
CN110632901A (zh) * | 2019-08-09 | 2019-12-31 | 西安电子科技大学 | 基于析取型广义互斥约束Petri网控制器简化及设计方法 |
WO2020015636A1 (en) * | 2018-07-19 | 2020-01-23 | Huawei Technologies Co., Ltd. | Basic runtime environment |
CN111897810A (zh) * | 2020-07-29 | 2020-11-06 | 上海大学 | 建立定量化不同尺度区域间大气污染联防联控方案的方法 |
CN112230757A (zh) * | 2015-05-08 | 2021-01-15 | 微软技术许可有限责任公司 | 用于通过腾空cpu和存储器的子集来降低功率的方法和系统 |
CN113010131A (zh) * | 2021-03-15 | 2021-06-22 | 京东数字科技控股股份有限公司 | 显示内容更新方法、装置、终端、服务器和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030191927A1 (en) * | 1999-05-11 | 2003-10-09 | Sun Microsystems, Inc. | Multiple-thread processor with in-pipeline, thread selectable storage |
US20090164399A1 (en) * | 2007-12-19 | 2009-06-25 | International Business Machines Corporation | Method for Autonomic Workload Distribution on a Multicore Processor |
CN101533417A (zh) * | 2009-04-28 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种实现etl调度的方法及系统 |
US20090259713A1 (en) * | 2001-02-24 | 2009-10-15 | International Business Machines Corporation | Novel massively parallel supercomputer |
US20090288086A1 (en) * | 2008-05-16 | 2009-11-19 | Microsoft Corporation | Local collections of tasks in a scheduler |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030191927A1 (en) * | 1999-05-11 | 2003-10-09 | Sun Microsystems, Inc. | Multiple-thread processor with in-pipeline, thread selectable storage |
US20090259713A1 (en) * | 2001-02-24 | 2009-10-15 | International Business Machines Corporation | Novel massively parallel supercomputer |
US20090164399A1 (en) * | 2007-12-19 | 2009-06-25 | International Business Machines Corporation | Method for Autonomic Workload Distribution on a Multicore Processor |
US20090288086A1 (en) * | 2008-05-16 | 2009-11-19 | Microsoft Corporation | Local collections of tasks in a scheduler |
CN101533417A (zh) * | 2009-04-28 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种实现etl调度的方法及系统 |
Non-Patent Citations (3)
Title |
---|
AMIR H. HORMATI等: "Flextream: Adaptive Compilation of Streaming Applications for Heterogeneous Architectures", 《PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES, 2009. PACT 09. 18TH INTERNATIONAL CONFERENCE ON》 * |
CÉDRIC AUGONNET等: "Automatic Calibration of Performance Models on Heterogeneous Multicore Architectures", 《EURO-PAR 2009 – PARALLEL PROCESSING WORKSHOPS》 * |
M. MAHESWARAN等: "A dynamic matching and scheduling algorithm for heterogeneous computing systems", 《HETEROGENEOUS COMPUTING WORKSHOP, 1998. (HCW 98) PROCEEDINGS. 1998 SEVENTH》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412919B (zh) * | 2013-08-09 | 2016-12-28 | 杭州华为数字技术有限公司 | 一种分布式文件系统的调度方法及设备 |
CN103412919A (zh) * | 2013-08-09 | 2013-11-27 | 杭州华为数字技术有限公司 | 一种分布式文件系统的调度方法及设备 |
CN104598288A (zh) * | 2013-10-30 | 2015-05-06 | 华为技术有限公司 | Java程序执行方法和装置 |
CN104598288B (zh) * | 2013-10-30 | 2018-05-11 | 华为技术有限公司 | Java程序执行方法和装置 |
CN112230757A (zh) * | 2015-05-08 | 2021-01-15 | 微软技术许可有限责任公司 | 用于通过腾空cpu和存储器的子集来降低功率的方法和系统 |
CN106155876A (zh) * | 2016-07-26 | 2016-11-23 | 北京蓝海讯通科技股份有限公司 | 一种金丝雀分析方法、应用和计算设备 |
CN106155876B (zh) * | 2016-07-26 | 2018-07-06 | 北京蓝海讯通科技股份有限公司 | 一种金丝雀分析方法、应用和计算设备 |
CN106250200A (zh) * | 2016-08-02 | 2016-12-21 | 合肥奇也信息科技有限公司 | 一种用于计算机划分至少一个软件应用段的执行方法 |
CN106250227A (zh) * | 2016-08-02 | 2016-12-21 | 合肥奇也信息科技有限公司 | 一种寻求计算机程序执行定义目标的方法 |
CN106293937A (zh) * | 2016-08-02 | 2017-01-04 | 合肥奇也信息科技有限公司 | 一种用于分配数据处理资源给数据处理的方法 |
CN106250241A (zh) * | 2016-08-02 | 2016-12-21 | 合肥奇也信息科技有限公司 | 一种多方向分配数据处理系统资源到应用程序的方法 |
CN106155757A (zh) * | 2016-08-02 | 2016-11-23 | 合肥奇也信息科技有限公司 | 一种基于计算机编译并运行程序执行的方法 |
CN106155632A (zh) * | 2016-08-02 | 2016-11-23 | 合肥奇也信息科技有限公司 | 一种用于计算机最优定位数据处理中小码集的系统 |
CN107360235A (zh) * | 2017-07-17 | 2017-11-17 | 广东工业大学 | 一种基于可靠性分级的任务迁移方法 |
CN107360235B (zh) * | 2017-07-17 | 2020-10-27 | 广东工业大学 | 一种基于可靠性分级的任务迁移方法 |
WO2020015636A1 (en) * | 2018-07-19 | 2020-01-23 | Huawei Technologies Co., Ltd. | Basic runtime environment |
US10956226B2 (en) | 2018-07-19 | 2021-03-23 | Futurewei Technologies, Inc. | Basic runtime environment |
CN110632901A (zh) * | 2019-08-09 | 2019-12-31 | 西安电子科技大学 | 基于析取型广义互斥约束Petri网控制器简化及设计方法 |
CN110632901B (zh) * | 2019-08-09 | 2022-06-07 | 西安电子科技大学 | 基于析取型广义互斥约束Petri网控制器简化及设计方法 |
CN111897810A (zh) * | 2020-07-29 | 2020-11-06 | 上海大学 | 建立定量化不同尺度区域间大气污染联防联控方案的方法 |
CN111897810B (zh) * | 2020-07-29 | 2024-03-29 | 上海地听信息科技有限公司 | 建立定量化不同尺度区域间大气污染联防联控方案的方法 |
CN113010131A (zh) * | 2021-03-15 | 2021-06-22 | 京东数字科技控股股份有限公司 | 显示内容更新方法、装置、终端、服务器和存储介质 |
CN113010131B (zh) * | 2021-03-15 | 2024-04-05 | 京东科技控股股份有限公司 | 显示内容更新方法、装置、终端、服务器和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
RU2012138911A (ru) | 2014-05-20 |
WO2011130406A1 (en) | 2011-10-20 |
US20170123857A1 (en) | 2017-05-04 |
EP2558935A1 (en) | 2013-02-20 |
JP2013524386A (ja) | 2013-06-17 |
US9542231B2 (en) | 2017-01-10 |
US20110289507A1 (en) | 2011-11-24 |
CA2793537A1 (en) | 2011-10-20 |
EP2558935A4 (en) | 2014-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9542231B2 (en) | Efficient execution of parallel computer programs | |
US20140115596A1 (en) | Codeletset representation, manipulatoin, and execution - method, system and apparatus | |
Denning | Third generation computer systems | |
Treichler et al. | Realm: An event-based low-level runtime for distributed memory architectures | |
Martin et al. | WARPED: A time warp simulation kernel for analysis and application development | |
CN101702134B (zh) | 无操作系统干预情况下调度os隔离定序器上的线程的机制 | |
Orr et al. | Fine-grain task aggregation and coordination on GPUs | |
Giorgi et al. | An introduction to DF-Threads and their execution model | |
Han et al. | Experimental evaluation and selection of data consistency mechanisms for hard real-time applications on multicore platforms | |
Yu et al. | Colab: a collaborative multi-factor scheduler for asymmetric multicore processors | |
Henzinger et al. | Scheduling large jobs by abstraction refinement | |
Shekarisaz et al. | MASTER: Reclamation of hybrid scratchpad memory to maximize energy saving in multi-core edge systems | |
Boyer | Improving Resource Utilization in Heterogeneous CPU-GPU Systems | |
Pellegrini | Techniques for Transparent Parallelization of Discrete Event Simulation Models | |
CN102934081B (zh) | 运行空间方法、系统和装置 | |
Muthalagu | Threaded WARPED: An Optimistic Parallel Discrete Event Simulator for Cluster of Multi-Core Machines | |
Mascarenhas | A system for multithreaded parallel simulation and computation with migrant threads and objects | |
Meng | Large-scale distributed runtime system for DAG-based computational framework | |
Uhlig | The mechanics of in-kernel synchronization for a scalable microkernel | |
Ukidave | Architectural and Runtime Enhancements for Dynamically Controlled Multi-Level Concurrency on GPUs | |
Subramanian | Architectural techniques to unlock ordered and nested speculative parallelism. | |
Qin | Arachne: Improving Latency and Efficiency Through Core Aware Thread Management | |
Wasly | Scratchpad Memory Management For Multicore Real-Time Embedded Systems | |
Galleguillos Miccono | Constraint Programming-based Job Dispatching for Modern HPC Applications | |
Yu | Heterogeneity-aware scheduling and data partitioning for system performance acceleration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161130 Termination date: 20180413 |
|
CF01 | Termination of patent right due to non-payment of annual fee |