CN118235116A - 经由加速器驻留运行时管理减少高度可扩展的hpc应用程序中的延迟 - Google Patents
经由加速器驻留运行时管理减少高度可扩展的hpc应用程序中的延迟 Download PDFInfo
- Publication number
- CN118235116A CN118235116A CN202280075096.0A CN202280075096A CN118235116A CN 118235116 A CN118235116 A CN 118235116A CN 202280075096 A CN202280075096 A CN 202280075096A CN 118235116 A CN118235116 A CN 118235116A
- Authority
- CN
- China
- Prior art keywords
- kernel
- manager
- dependencies
- apu
- iteration
- 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
- 238000000034 method Methods 0.000 claims abstract description 55
- 230000015654 memory Effects 0.000 claims description 23
- 230000000977 initiatory effect Effects 0.000 claims 4
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000005192 partition Methods 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 230000001934 delay Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 235000019161 pantothenic acid Nutrition 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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]
-
- 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
-
- 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
-
- 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/5038—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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
用于由加速器驻留管理器进行运行时管理的方法和***。技术包括由该管理器接收应用程序的处理流的表示,该表示包括多个内核和相应的依赖关系。然后,该管理器将该多个内核指派给其管理的一个或多个APU,以及在该多个内核的被指派的APU上启动该多个内核,以根据该相应的依赖关系在迭代中运行。
Description
相关申请的交叉引用
本申请要求2021年11月11日提交的美国非临时专利申请17/454,607号的权益,该非临时专利申请的内容据此以引用方式并入本文。
背景技术
加速处理单元(APU)被设计为有效地并行执行数千个进程(计算任务或内核)。典型的应用程序可涉及必须按顺序执行的进程以及可被并行化的进程。因此,应用程序软件架构可包括可被设计成在中央处理单元(CPU)上运行的顺序零件以及可被设计成在加速器(包括APU或APU群集)上运行的能够并行的零件,以实现由群集提供的高性能。然而,由于在CPU上执行的进程对在APU上执行的工作(诸如内核的同步和启动)进行管理,所以CPU-APU通信带来了显著的延迟。此类延迟对于大规模高性能计算(HPC)应用程序尤其重要,其中具有小工作负载的大量内核由CPU进行管理。在此类情况下,CPU在同步和启动内核中所花费的时间可比得上或甚至超过内核自身的执行时间。此外,在运行时期间发生的内核之间的依赖关系的变化可进一步造成与CPU-APU通信有关的延迟,因为这需要CPU中断运行时操作以便调整同步方案。需要减少CPU-APU通信有关的延迟的技术。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1A是基于其可以实现本公开的一个或多个特征的示例性设备的框图;
图1B是基于其可以实现本公开的一个或多个特征的示例性***的框图,展示了能够由图1A的设备采用的加速单元;
图2是基于其可以实现本公开的一个或多个特征的示例性***的框图,展示了应用程序运行时的集中管理;
图3示出了基于其可以实现本公开的一个或多个特征的示例性图形;
图4是基于其可以实现本公开的一个或多个特征的示例性***的框图,展示了应用程序运行时的分布管理;
图5是基于其可以实现本公开的一个或多个特征的示例性***的框图,展示了应用程序运行时的跨网络边界的分布管理;并且
图6是基于其可以实现本公开的一个或多个特征的用于加速器驻留运行时管理的示例性方法的流程图。
具体实施方式
HPC应用程序通常受益于可对大量数据元素独立执行的并行化计算。性能缩放可通过包括多个APU群集的***来实现,内核可在该APU群集上并行运行,且其中每一内核可执行关于一个或一个以上数据元素的计算。在此类状况下,***的各个部件(例如,网络接口控制器(NIC)、CPU或APU)可能会增加延迟。通常,这些部件之间的通信是关键的性能限制。
在本申请中公开了减少由CPU和加速器(例如,一个或多个APU群集)之间的通信造成的延迟的***和方法。此类通信是CPU在管理加速器上的内核的执行方面的角色所必需的。本文描述了其中应用程序执行流的管理由加速器驻留管理器执行的技术,即,由驻留在相应的加速器中的模块执行管理功能。例如,所公开的加速器驻留管理器在运行时期间控制内核启动和同步,即,使加速器与CPU的控制解耦。
本文公开了用于由加速器驻留管理器进行运行时管理的方法。该方法包括由该管理器接收应用程序的处理流的表示,该表示包括多个内核和相应的依赖关系;由该管理器将该多个内核指派给由该管理器管理的一个或多个APU;以及由该管理器在该多个内核的被指派的APU上启动该多个内核,以根据该相应的依赖关系在迭代中运行。
还公开了用于由加速器驻留管理器进行运行时管理的***。该***包括至少一个处理器和存储指令的存储器。该指令在由该至少一个处理器执行时,使得该***由该管理器接收应用程序的处理流的表示,该表示包括多个内核和相应的依赖关系;由该管理器将该多个内核指派给由该管理器管理的一个或多个APU;以及由该管理器在该多个内核的被指派的APU上启动该多个内核,以根据该相应的依赖关系在迭代中运行。
进一步地,本文公开了一种非暂态计算机可读介质,该非暂态计算机可读介质包括能够由至少一个处理器执行以执行用于由加速器驻留管理器进行运行时管理的方法。该方法包括由该管理器接收应用程序的处理流的表示,该表示包括多个内核和相应的依赖关系;由该管理器将该多个内核指派给由该管理器管理的一个或多个APU;以及由该管理器在该多个内核的被指派的APU上启动该多个内核,以根据该相应的依赖关系在迭代中运行。
图1A是基于其可以实现本公开的一个或多个特征的示例性设备100A的框图。设备100A可以是例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100A包括处理器102、APU 106、存储器104、存储装置116、输入设备108和输出设备110。设备100A还可以包括输入驱动器112和输出驱动器114。在一方面中,设备100A可包括图1A中未示出的附加部件。
处理器102可包括CPU或CPU的一个或多个核心。APU 106可表示高度并行的处理单元、图形处理单元(GPU)或它们的组合。处理器102和APU 106可位于同一管芯上或位于分开的管芯上。存储器104可以位于与处理器102相同的管芯上,或者可以与处理器102分开定位。存储器104可包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM(DRAM)、高速缓存或它们的组合。
存储装置116可包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108可表示一个或多个输入设备,诸如键盘、小键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于接收无线IEEE802信号的无线局域网卡)。输出设备110可表示一个或多个输出设备,诸如显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并且促进从输入设备108到处理器102的输入的接收。输出驱动器114与处理器102和输出设备110通信,并且促进从处理器102到输出设备110的输出的发送。在一方面中,输入驱动器112和输出驱动器114是任选的部件,并且当输入驱动器112和输出驱动器114不存在时,设备100A将以相同方式操作。
APU 106可被配置为从处理器102接收计算命令和图形渲染命令,以处理那些计算和图形渲染命令,并且/或者将输出提供给显示器(输出设备110)。如下文进一步详述的,APU 106可包括一个或多个并行处理单元,该一个或多个并行处理单元被配置为例如根据单指令多数据(SIMD)范式来执行计算。因此,尽管本文将各种功能描述为由APU 106执行或与其结合执行,但在各种另选方案中,被描述为由APU 106执行的功能可附加地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且可被配置为例如向显示器提供图形输出。无论处理***是否可以根据SIMD范式执行处理任务,该处理***都可以被配置为执行本文描述的功能。
图1B是基于其可以实现本公开的一个或多个特征的示例性***100B的框图,展示了能够由图1A的设备采用的加速***。图1B进一步详细地示出了处理任务在APU 106上的执行。处理器102可以在存储器104中保持一个或多个模块以供处理器102执行。模块包括操作***120、内核模式驱动器122和应用程序126。这些模块可控制处理器102和APU 106的操作的各种特征。例如,操作***120可以提供***调用,即应用程序编程接口(API),该API可以由应用程序126用来直接与硬件对接。内核模式驱动器122可通过例如向在处理器102上执行的应用程序126提供API来访问APU 106的各种功能,以控制APU 106的操作。
APU 106可执行与图形操作和非图形操作相关的命令,包括并行处理或顺序处理以及有序或无序处理。APU 106可用于基于从处理器102接收的命令来执行图形流水线操作,诸如处理像素和/或几何计算的操作(例如,将图像渲染到显示器(输出设备110))。APU106还可基于从处理器102接收的命令来执行与图形操作不相关的处理操作,诸如与多维数据、物理模拟、计算流体动力学或其他计算任务相关的操作。
APU 106可包括WGP 132.1至132.M;每个WGP(例如,132.1)可具有一个或多个SIMD单元(例如,138.1.1至138.1.N),该一个或多个SIMD单元可根据SIMD范式以并行方式执行操作。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并因此可以执行相同的程序,但对不同数据执行。在一个示例中,每个SIMD单元(例如,138.1.1)可以运行64个通道(即,线程),其中每个通道与SIMD单元中的其他通道同时执行相同的指令,但对不同数据执行该指令。可以通过预测来关闭通道,诸如当执行给定指令不需要所有通道时。还可以使用预测来执行具有发散控制流的程序。具体地,对于具有条件分支(或其中控制流基于由单个通道执行的计算的其他指令)的程序,预测对应于当前未被执行的控制流路径的通道,以及串行执行不同控制流路径可实现任意控制流。在一方面中,WGP 132.1-M中的每一者可以具有本地高速缓存。在另一个方面中,多个WGP可共享高速缓存。
WGP(例如,132.1)中的基本执行单元是工作项。通常,每个工作项表示可以特定通道中并行执行的程序的单个实例化。可以在单个SIMD单元(例如,138.1.1)上作为“波前”(或“波”)同时执行工作项。一个或多个波可以在一个工作组中运行,每个波包括被指定用于执行相同程序的工作项的集合。通过执行构成工作组的波中的每一者来执行工作组。波还可以在单个SIMD单元上顺序地执行,或者在不同的SIMD单元138.1-N上部分或完全并行地执行。因此,波可以被认为是可以在单个SIMD单元(例如,138.1.1)上同时执行的工作项目的集合。因此,如果从处理器102接收的命令指示特定程序要被并行化到该程序不能在单个SIMD单元上同时执行的程度,则该程序可以被划分成在两个或多个SIMD单元(例如,138.1.1-N)上并行化、在同一SIMD单元(例如,138.1.1)上串行化或根据需要并行化和串行化的波。调度器136可以被配置为执行与在不同WGP 132.1-M和它们相应的SIMD单元上启动各种波有关的操作。
由WGP 132.1-M提供的并行性适合于例如图形相关操作,诸如对像素值的操作(例如,滤波操作)、对几何数据的操作(例如,顶点变换)和其他图形相关操作。例如,在处理器102上执行的应用程序126可涉及要由APU 106执行的计算。应用程序126可使用由内核模式驱动器122提供的API来向APU 106发出处理命令。然后将处理命令提供给调度器136。调度器136将处理命令转变成指派给WGP 132.1-M以供并行执行的计算任务。例如,调度器136可以接收包括要对数据(例如,图像的1024个像素)执行的指令的处理命令。作为响应,调度器136可以将数据分成组(例如,每个组含有处理64个像素所需的数据)并且在一个或多个WGP中启动波,每个波与一组数据和对数据执行的指令相关联。例如,调度器136可以启动要在一个或多个WGP 132的SIMD 138中执行的16个波(例如,每个波负责处理64个像素)。
图2是基于其可以实现本公开的一个或多个特征的示例性***200的框图,展示了应用程序运行时的集中管理。***200包括加速器210、存储器250和处理器270。加速器210可包括管理器220和一个或多个APU(例如,图1B的APU 106),诸如APU-1 230和APU-2 240。处理器270(例如,图1A的处理器102)可利用由管理器220暴露的API,发起定义了要由加速器210执行的应用程序的处理流的表示。
应用程序的处理流的表示可由定义了应用程序的内核及内核之间的依赖关系的图形260(如图3进一步阐释)来表达。此类图形260可被存储在存储器250中并从其被访问。一旦该表示已被启动,管理器220就可将每个内核指派给加速器210的APU,并且可根据由该表示定义的处理流在内核的被指派的APU上启动内核,以在一次或多次迭代中运行。例如,当应用程序的处理流的表示由图形260表示时,一旦该图形已被启动,管理器220就可在加速器210的APU之间对该图形进行分区,使得与一个图形的分区相关联的内核被指派给一个APU,例如APU-1 230,并且与另一个图形的分区相关联的内核被指派给另一个APU,例如APU-2 240。然后,管理器210可通过根据由图形260定义的依赖关系启动内核以在该内核的被指派的APU上运行,根据该图形执行应用程序。管理器220可由专用硬件(例如,嵌入式RISC处理器、专用APU)实现,可由在APU 230、240中的一个APU上运行的进程实现,或者可由硬件和软件的组合实现。
图3示出了基于其可以实现本公开的一个或多个特征的示例性图形300。图形300的节点310表示内核。例如,每个内核是处理存储在存储器250中的一个或多个数据元素的任务。因此,每个内核接收输入数据且递送输出数据(例如,输入数据的经处理的版本)。图形300的边320表示数据依赖关系。例如,边320.1.2表示内核B 310.2依赖于内核A 310.1,意指内核B310.2必须对由内核A 310.1产生的数据进行操作(或到内核B 310.2的输入为内核A 310.1的输出),并且因此在内核A 310.1首先完成其自身的执行之前,内核B 310.2不能开始执行。
因此,管理器220可使用图形300,基于如该图形所描述的内核的依赖关系,确定要启动的内核以及以何种次序启动内核。另外,根据由管理器确定的分区,将每个节点指派给APU。如图3所示,图形300可由图形边界350被分区成两个子图形330和340,其中图形边界350左侧的子图形330可被指派为由图2的APU-1 230执行,并且图形边界350右侧的子图形340可被指派为由图2的APU-2 240执行。
因此,除了内核及该内核的被指派的APU之外,图形的节点(例如,310.1至310.8)还可有可有助于由管理器220管理应用程序运行时的其它数据实体与其相关联。每个节点可有一个或多个邮箱(例如,存储在存储器250中)与其相关联。节点处的邮箱可由另一个内核(与该节点相关联的内核依赖于该另一内核)使用,以留下指示该另一个内核完成其执行的消息(即,完成消息),并且因此该节点的相关联的内核可开始其自身的执行,除非其仍等待更多其它内核完成其执行。例如,节点310.7可有两个邮箱与其相关联,一个邮箱要由内核B(与节点310.2相关联)使用,而另一个邮箱要由内核C(与节点310.3相关联)使用。当内核B和内核C完成它们相应的执行时,它们向节点310.7处的它们相应的邮箱发送该效果的消息。在这些邮箱上等待的任务G一旦接收到这些完成消息,就可开始其自身的执行。
在一方面中,图形300的每个节点可与同其相关联的内核所具有的依赖关系的数目一样多的邮箱相关联。当内核在其被指派的APU上完成操作时,该内核可向该内核注册的邮箱发送完成消息。这些邮箱专用于位于从该内核的节点分支出来的节点处的内核。一旦节点处的所有邮箱都接收到指示内核完成这些邮箱的注册的消息,则与该节点相关联的内核可立即由其被指派的APU执行。同时,管理器可例如基于图形的邮箱的状态来异步地更新该图形。
在一方面中,该图形可在运行时在应用程序的迭代的执行期间,随着依赖关系的变化而动态地改变其结构。例如,该图形可表示被设计成解决物理问题的内核,其中每个内核参与处理与某一物理实体相关联的数据,并且其中内核之间的依赖关系源于对应实体之间的空间距离。因此,如果第一内核被设计成处理与实体Q相关联的数据并且第二内核被设计成处理与实体P相关联的数据,则只要实体Q和P在空间上彼此靠近,第二内核就可依赖于第一内核。然而,如果实体Q和P远离彼此移动(如在物理***的模拟中可能发生的),则第一内核和第二内核之间的依赖关系终止。在此类情况下,为了响应此类变化而不中断运行时操作,第一内核可将指示第二内核不再依赖于第一内核的消息,发送到与第二内核相关联的节点处的其专用邮箱。因此,第二内核(除非依赖于尚未完成的其他内核)可在其被指派的APU上开始其自身的执行。因此,例如,可注册节点310.7(其与内核G相关联)处的邮箱,以从内核C(其与节点310.3相关联)接收消息。该邮箱可接收指示内核C已完成的消息(即,完成消息),或者指示对内核C的依赖关系不再存在的消息(即,终止消息)。两个消息都可提示内核G的执行。独立于直接经由邮箱通信来阻断(或终止)依赖关系,管理器220可基于存储在图形的邮箱中的消息,异步地更新该图形,以反映依赖关系的变化。例如,在迭代结束时,管理器可基于依赖关系的变化,更新图形的分区(内核到APU的指派)。
如上所述,依赖关系的变化除了导致现有依赖关系的终止之外,还可创建新的依赖关系。考虑上述示例,其中图形表示被设计成解决物理问题的内核,并且其中这些内核之间的依赖关系源自对应的实体之间的空间距离。如果第一内核被设计成处理与实体Q相关联的数据并且第二内核被设计成处理与实体P相关联的数据,则只要实体Q和P在空间上彼此远离,第二内核就不依赖于第一内核。然而,如果实体Q和P移动得彼此更靠近(如在物理***的模拟中可能发生的),则可创建第一内核和第二内核之间的依赖关系。在此类情况下,为了响应此类变化而不中断运行时操作,第一内核可创建注册到其(或其专用)的将与第二内核的节点相关联的新邮箱。然后,在完成其操作后,第一内核可在该邮箱处留下完成消息。因此,例如,节点310.7的内核G被显示为不依赖于内核D。然而,当创建依赖关系时,内核D可在节点310.7处创建专用于其的新邮箱。一旦内核D完成其操作,其便可将完成消息发送到该新邮箱。在接收到该完成消息后,内核G(除非仍等待从内核B和C接收完成消息)可开始其自身的执行。独立于经由邮箱通信直接创建新的依赖关系,如上所述,管理器220可基于存储在图形的邮箱中的消息,异步地更新该图形,以反映依赖关系的变化。例如,在迭代结束时,管理器可基于依赖关系的变化,更新图形的分区(内核到APU的指派)。
在另一个方面中,管理器220可在每次迭代结束时,通过监测每个APU完成指派给其的内核所花费的时间来执行负载平衡,并且然后,管理器220可对该图形进行重新分区,以改进跨所有APU的负载平衡。因此,图形的节点(例如,310.1至310.8)可有计时器与其相关联。节点的计时器可被设定为测量与该节点相关联的内核的执行时间。因此,在图形300的每次迭代结束时,管理器220可对该图形进行重新分区,以便基于对计时器的读数的分析,对其操作进行负载平衡。例如,在执行迭代结束时,基于对计时器的读数的分析,管理器220可发现,与APU-1 230执行与其自身被指派的子图形340相关联的内核所花费的时间相比,APU-2 240执行与其自身被指派的子图形330相关联的内核所花费的时间多得多。在此类情况下,管理器220可决定通过对图形进行重新分区来对该图形进行负载平衡,使得例如节点310.5成为子图形330的一部分,并且因此与节点310.5相关联的内核E将在该图形的下一次迭代中由APU-1 230执行。
图4是基于其可以实现本公开的一个或多个特征的示例性***400的框图,展示了应用程序运行时的分布管理。***400可包括多个加速器410.1至410.M、共享存储器440和处理器460。每个加速器(例如410.1)可包括管理器420.1和APU群集430.1.1至430.1.N。处理器460可利用由管理器中的一个管理器暴露的API,发起定义了要由***400执行的应用程序的处理流的图形450。所发起的图形450可被存储在共享存储器440中,能够由管理器420.1至420.M、APU 430.1.1至430.1.N、430.2.1至430.2.N、430.M.1至430.M.N的群集以及***400的处理器460访问。一旦已发起图形450,管理器中的一个管理器(例如,420.1)可负责在加速器410.1至410.M之间对该图形进行分区,从而产生加速器级子图形。然后,每个加速器的图形管理器(例如,420.m)可继续进一步将图形的其相应的部分(其相应的加速器级子图形)分区为APU级子图形。每个此类APU级子图形(或子图形)被指派给加速器420.m的一个APU。当完成将图形450分区成子图形时,每个管理器420.m可根据由图形450的其部分定义的依赖关系,通过在相应的APU 420.m.1至420.m.N中启动内核,在一次或多次迭代中开始执行图形450的该管理器的自身部分。每个管理器420.m可由专用硬件(例如,嵌入式RISC处理器、专用APU)实现,或者可由在其加速器的APU中的一个PAU上运行的进程实现。在一方面中,每一管理器420.m可以与图2的管理器220可关于图2的图形260操作的方式类似的方式,关于其自身的加速器层级子图形进行操作。
因此,如上所述,图形450的每个节点是为加速器级子图形内的APU级子图形的子图形的一部分。图形450具有连接节点的结构;每个节点可有数据或对象实体与其相关联,诸如内核、指派的APU、邮箱或计时器,如参考图3所述。因此,图形450中的每个节点与可被执行为处理例如存储在共享存储器440中的数据的内核相关联。图形450中的每条边连接两个节点,并且表示与这两个节点相关联的内核之间的依赖关系,如参考图3所解释的。进一步地,图形450中的每个节点可有一个或多个邮箱(例如,存储在存储器440中)与其相关联。与第一内核相关联的第一节点处的邮箱可由第二内核(第一内核所依赖的第二内核)使用,以留下指示第二内核已完成的完成消息,并且因此第一内核可开始其自身的执行,除非其仍等待其它内核完成其执行。
参考图3,子图形330可以是加速器410.1的加速器级子图形内的APU级子图形,并且子图形340可以是加速器410.2的加速器级子图形内的APU级子图形。在该情况下,管理器420.1可被配置为根据其自身的加速器层级子图形,对内核B、F及G的执行进行管理,并且管理器420.2可被配置为根据其自身的加速器层级子图形,对内核A、C、D、E及H的操作的进行管理。在一方面中,节点310.7有内核G正等待的两个邮箱与其相关联,一个邮箱注册到节点310.2而另一个邮箱注册到节点310.3。当(节点310.2的)内核B完成其执行时,其在节点310.7处的注册到其的邮箱中留下完成消息。同样,当(节点310.3的)内核C完成其执行时,其在节点310.7处的注册到其的邮箱中留下完成消息。一旦接收到这两个完成消息,(节点310.7的)内核G可立即开始其自身的执行。管理器420.1和420.2可独立地更新图形的它们相应的部分(相应的加速器级子图形),以反映操作的当前状态。
如前所述,图形450可在应用程序运行时期间,随着依赖关系的变化而动态地改变其结构。例如,在内核C的执行期间,内核可感知或可以其它方式被告知内核G不再依赖于该内核。在此类情况下,内核C可将对此效果的消息发送到节点310.7处的注册到其的邮箱。然后,当前在两个邮箱(一个注册到内核B而另一个注册到内核C)上等待的内核G可在一旦内核B完成其执行时开始其自身的执行。在另一个方面,在内核C的执行期间,内核可感知到或可以其它方式被通知内核F现在应变得依赖于它。在此类情况下,内核C可在节点310.6处创建将注册到其的新邮箱。然后,内核F将等待除了注册到内核B的邮箱之外的新邮箱,并且仅当从内核B和内核C两者接收到完成消息时,内核F才将开始其自身的执行。管理器可独立地更新图形中它们相应的部分,以反映依赖关系的变化。例如,监督子图形330的管理器420.1可在节点310.3与节点310.6之间添加边,以反映现在内核F依赖于内核C;并且监督子图形340的管理器420.2可去除节点310.3与节点310.7之间的边,以反映内核G不再依赖于内核C。
管理器420.1至420.M可独立地并且关于图形的每个正在管理的部分、或者协同地关于所有图形450,执行负载平衡。这可通过监测与图形450的节点相关联的计时器来完成,该计时器被设定为测量相应内核的执行时间。因此,在图形450的每次执行迭代结束时,基于对计时器的读数的分析,每个管理器可对其自己的加速器级子图形进行重新分区,以便对其操作进行负载平衡。例如,参考图3,假设图形300由一个管理器420.1管理,其中与子图形330相关联的内核被指派给APU-1 430.1.1,而与子图形340相关联的内核被指派给APU-2430.1.2。在迭代结束时,基于对计时器的读数的分析,管理器420.1可发现,与APU-1执行与其被指派的子图形330相关联的内核所花费的时间相比,APU-2执行与其被指派的子图形340相关联的内核所花费的时间多得多。在此类情况下,管理器420.1可决定通过对图形进行重新分区,对该图形进行负载平衡。例如,重新分区可导致节点310.5成为子图形330的一部分,并且因此,与节点310.5相关联的内核将在该图形的下一次执行迭代中由APU-1 230执行。
在一方面中,对操作的负载平衡可在管理器之间协同地完成(可能在如上所述的独立负载平衡发生之后)。例如,在每次迭代结束时,每个管理器可计算每个APU在其控制中(在图形的其自身的部分内)的可用性的度量,并且可将这些APU的可用性度量公布给其他管理器(例如,通过将可用性度量存储在共享存储器440中)。可用性度量可以是APU在迭代期间一直空闲的时间。例如,在迭代结束时,管理器420.1和420.2可分别计算APU 430.1.1至430.1.N和430.2.1至430.2.N的可用性度量。在APU 430.1.1的可用性度量足够高并且APU 430.2.1至430.2.N的可用性度量足够低的情况下,管理器420.1可锁定图形450,然后对该图形进行重新分区,以改变在APU 430.2.1至430.2.N上运行的一个或多个内核到可用的APU 430.1.1的指派。管理器420.2可指示管理器420.1是否具有执行该重新分区的许可。可使用其他机制来协同地对图形450进行负载平衡。在一方面中,管理器对图形的其自身的部分中的APU的可用性度量的计算,可在对该图形的其自身的部分进行独立负载平衡之后(并且在将其考虑在内的同时)完成。
图5是基于其可以实现本公开的一个或多个特征的示例性***500的框图,展示了应用程序运行时的跨网络边界的分布管理。***500可包括多个加速器510.1至510.M,其操作类似于图4的***400的多个加速器410.1至410.M。然而,在***500中,加速器510.1至510.M彼此远离,并且各自连接到其本地的相应存储器510.1至510.M和相应处理器560.1至560.M。如图所示,加速器510.1至510.M、存储器510.1至510.M和处理器560.1至560.M经由网络570通信地连接。处理器中的一个处理器(例如,560.1)可利用由管理器中的一个管理器(例如520.1)暴露的API,发起定义了要由***500执行的应用程序的处理流的图形。然后,所发起的图形可被存储在能够由加速器510.1访问的存储器540.1中,并且该图形的副本可经由网络570发送,以存储在能够由加速器510.2至510.M访问的存储器560.2至560.M中。
在一方面中,***500的操作类似于***400的操作。然而,***500还必须通过其副本550.1至550.M来维持图形的一致表示。例如,在每次迭代结束时,图形550.1至550.M的副本可由其相应的管理器520.1至520.M进行更新(例如,每个管理器可更新其所拥有的图形的部分),然后,可协调这些副本。在一方面中,一个处理器(例如,560.1)可负责该图形的协调。为此,处理器560.2至560.M可被配置为将其图形的副本发送到处理器560.1,该处理器将协调副本550.1至550.M并且发回一个经协调的图形,以存储在相应的存储器540.1至540.M中。在***500中,由彼此远离的APU进行的此类通信(例如,当在一个APU上运行的内核向与在另一个APU上运行的内核相关联的邮箱发送消息时)可能会导致延迟。然而,此类延迟受到网络570的带宽的限制,并且与由CPU-APU通信造成的延迟不同。
图6是基于其可以实现本公开的一个或多个特征的用于加速器驻留运行时管理的示例性方法600的流程图。方法600可由加速器驻留管理器(例如,图2的管理器220)、或者图4的管理器420.1至420.M或图5的管理器520.1至520.M中的一个管理器来执行。在步骤610中,方法600可接收应用程序的处理流的表示,该表示包括内核及其相应的依赖关系。如上所述,表示可由图形(例如,图3的图形300)来表达。在步骤620中,方法600可将内核指派给由管理器管理的APU。然后,在步骤630中,方法600可在内核的被指派的APU上启动该内核,以根据相应的依赖关系在迭代中运行。在迭代期间,如果存在依赖关系的变化(依赖关系的终止或新的依赖关系的创建),则方法600可在步骤640中通知受影响的内核。例如,当在迭代期间终止第一内核对第二内核的依赖关系时,可由第二内核向第一内核发送消息,该消息指示所终止的依赖关系。在接收到该消息后,第一内核可立即开始执行(除非其仍在等待其它内核完成)。又如,当在迭代期间创建第一内核对第二内核的新的依赖关系时,可由第二内核创建要由第一内核等待的邮箱;当第二内核将完成其自身的执行时,其将向该邮箱发送完成消息。在迭代结束时,在步骤650中,方法600可对表示进行更新。例如,如果依赖关系的变化在迭代期间发生(依赖关系的终止或新的依赖关系的创建),则方法600可基于该变化,改变内核到APU的指派。因此,在图形表示300中,方法600可对图形进行重新分区,改变子图形330、340的结构,实际上是改变内核A至H 310到APU-1 230或APU-2 240的指派中的一些指派。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。此类处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现实施方案的方面的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实施,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (20)
1.一种用于由加速器驻留管理器进行运行时管理的方法,所述方法包括:
由所述管理器接收应用程序的处理流的表示,所述表示包括多个内核和相应的依赖关系;
由所述管理器将所述多个内核指派给由所述管理器管理的加速器的一个或多个APU;以及
由所述管理器在所述多个内核的被指派的APU上启动所述多个内核,以根据所述相应的依赖关系在迭代中运行。
2.根据权利要求1所述的方法,所述方法进一步包括:
当在所述迭代期间终止第一内核对第二内核的依赖关系时,由所述第二内核向所述第一内核发送消息,所述消息指示所终止的依赖关系。
3.根据权利要求2所述的方法,所述方法进一步包括:
在所述迭代结束时,由所述管理器基于所终止的依赖关系将所述内核重新指派给所述APU。
4.根据权利要求1所述的方法,所述方法进一步包括:
当在所述迭代期间创建第一内核对第二内核的依赖关系时,由所述第二内核创建邮箱,所述邮箱将由所述第一内核用来从所述第二内核接收完成消息。
5.根据权利要求4所述的方法,所述方法进一步包括:
在所述迭代结束时,由所述管理器基于所创建的依赖关系将所述内核重新指派给所述APU。
6.根据权利要求1所述的方法,所述方法进一步包括:
由所述管理器通过基于所述内核在所述迭代期间在所述内核的被指派的APU上的执行时间,将所述内核的子集重新指派给另一个APU,对所述内核的执行进行负载平衡。
7.根据权利要求1所述的方法,其中:
所述指派包括将所述多个内核的一部分指派给第二加速器驻留管理器,其中所述第二管理器进一步将所述多个内核的所述部分指派给由所述第二管理器管理的第二加速器的一个或多个APU;并且
所述启动包括由所述第二管理器在所述多个内核的被指派的APU上启动所述多个内核的所述部分,以根据所述相应的依赖关系在所述迭代中运行。
8.根据权利要求7所述的方法,其中:
所述管理器和所述第二管理器彼此远离,并且
由所述管理器进行的所述启动和由所述第二管理器进行的所述启动是根据包括在所述表示的相应副本中的依赖关系来执行的,并且包括对所述表示的所述副本进行协调。
9.根据权利要求1所述的方法,其中所述表示为图形,并且其中:
所述图形的每个节点与所述多个内核中的一个内核以及所述APU中的一个APU相关联,并且
所述图形的每条边表示所述相应的依赖关系中的一种依赖关系。
10.根据权利要求9所述的方法,其中所述图形的每个节点与计时器相关联,所述计时器测量与所述节点相关联的内核的执行时间。
11.一种用于由加速器驻留管理器进行运行时管理的***,所述***包括:
至少一个处理器;和
存储指令的存储器,所述指令在由所述至少一个处理器执行时使得所述***:
由所述管理器接收应用程序的处理流的表示,所述表示包括多个内核和相应的依赖关系;
由所述管理器将所述多个内核指派给由所述管理器管理的加速器的一个或多个APU;以及
由所述管理器在所述多个内核的被指派的APU上启动所述多个内核,以根据所述相应的依赖关系在迭代中运行。
12.根据权利要求11所述的***,其中所述指令进一步使得所述***:
当在所述迭代期间终止第一内核对第二内核的依赖关系时,由所述第二内核向所述第一内核发送消息,所述消息指示所终止的依赖关系;以及
在所述迭代结束时,由所述管理器基于所终止的依赖关系将所述内核重新指派给所述APU。
13.根据权利要求11所述的***,其中所述指令进一步使得所述***:
当在所述迭代期间创建第一内核对第二内核的依赖关系时,由所述第二内核创建邮箱,所述邮箱将由所述第一内核用来从所述第二内核接收完成消息;以及
在所述迭代结束时,由所述管理器基于所创建的依赖关系将所述内核重新指派给所述APU。
14.根据权利要求11所述的***,其中所述指令进一步使得所述***:
由所述管理器通过基于所述内核在所述迭代期间在所述内核的被指派的APU上的执行时间,将所述内核的子集重新指派给另一个APU,对所述内核的执行进行负载平衡。
15.根据权利要求11所述的***,其中:
所述指派包括将所述多个内核的一部分指派给第二加速器驻留管理器,其中所述第二管理器进一步将所述多个内核的所述部分指派给由所述第二管理器管理的第二加速器的一个或多个APU;并且
所述启动包括由所述第二管理器在所述多个内核的被指派的APU上启动所述多个内核的所述部分,以根据所述相应的依赖关系在所述迭代中运行。
16.根据权利要求15所述的***,
其中:
所述管理器和所述第二管理器彼此远离,并且
由所述管理器进行的所述启动和由所述第二管理器进行的所述启动是根据包括在所述表示的相应副本中的依赖关系来执行的,并且包括对所述表示的所述副本进行协调。
17.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括能够由至少一个处理器执行以执行用于由加速器驻留管理器进行运行时管理的方法,所述方法包括:
由所述管理器接收应用程序的处理流的表示,所述表示包括多个内核和相应的依赖关系;
由所述管理器将所述多个内核指派给由所述管理器管理的一个或多个APU;以及
由所述管理器在所述多个内核的被指派的APU上启动所述多个内核,以根据所述相应的依赖关系在迭代中运行。
18.根据权利要求17所述的介质,所述介质进一步包括:
当在所述迭代期间终止第一内核对第二内核的依赖关系时,由所述第二内核向所述第一内核发送消息,所述消息指示所终止的依赖关系;以及
在所述迭代结束时,由所述管理器基于所终止的依赖关系将所述内核重新指派给所述APU。
19.根据权利要求17所述的介质,所述介质进一步包括:
当在所述迭代期间创建第一内核对第二内核的依赖关系时,由所述第二内核创建邮箱,所述邮箱将由所述第一内核用来从所述第二内核接收完成消息;以及
在所述迭代结束时,由所述管理器基于所创建的依赖关系将所述内核重新指派给所述APU。
20.根据权利要求17所述的介质,所述介质进一步包括:
由所述管理器通过基于所述内核在所述迭代期间在所述内核的被指派的APU上的执行时间,将所述内核的子集重新指派给另一个APU,对所述内核的执行进行负载平衡。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/454,607 | 2021-11-11 | ||
US17/454,607 US20230145253A1 (en) | 2021-11-11 | 2021-11-11 | Reducing latency in highly scalable hpc applications via accelerator-resident runtime management |
PCT/US2022/047900 WO2023086204A1 (en) | 2021-11-11 | 2022-10-26 | Reducing latency in highly scalable hpc applications via accelerator-resident runtime management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118235116A true CN118235116A (zh) | 2024-06-21 |
Family
ID=86229182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280075096.0A Pending CN118235116A (zh) | 2021-11-11 | 2022-10-26 | 经由加速器驻留运行时管理减少高度可扩展的hpc应用程序中的延迟 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230145253A1 (zh) |
CN (1) | CN118235116A (zh) |
WO (1) | WO2023086204A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US7873869B2 (en) * | 2008-10-09 | 2011-01-18 | International Business Machines Corporation | Checkpointing a hybrid architecture computing system |
US9317341B2 (en) * | 2011-05-24 | 2016-04-19 | Microsoft Technology Licensing, Llc. | Dynamic attribute resolution for orchestrated management |
US9996394B2 (en) * | 2012-03-01 | 2018-06-12 | Microsoft Technology Licensing, Llc | Scheduling accelerator tasks on accelerators using graphs |
WO2015058216A1 (en) * | 2013-10-20 | 2015-04-23 | Pneuron Corp. | Event-driven data processing system |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US11429450B2 (en) * | 2019-04-25 | 2022-08-30 | Vmware, Inc. | Aggregated virtualized compute accelerators for assignment of compute kernels |
US11288765B2 (en) * | 2020-04-28 | 2022-03-29 | Sony Interactive Entertainment LLC | System and method for efficient multi-GPU execution of kernels by region based dependencies |
-
2021
- 2021-11-11 US US17/454,607 patent/US20230145253A1/en active Pending
-
2022
- 2022-10-26 CN CN202280075096.0A patent/CN118235116A/zh active Pending
- 2022-10-26 WO PCT/US2022/047900 patent/WO2023086204A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20230145253A1 (en) | 2023-05-11 |
WO2023086204A1 (en) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488205B (zh) | 面向异构硬件架构的调度方法和调度*** | |
US8099584B2 (en) | Methods for scalably exploiting parallelism in a parallel processing system | |
CN110832457B (zh) | 用于虚拟化加速处理装置的提前虚拟化上下文切换 | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
CN114968559A (zh) | 基于lsf的多主机多gpu分布式布置深度学习模型的方法 | |
US11941528B2 (en) | Neural network training in a distributed system | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
US20240029336A1 (en) | Multi-accelerator compute dispatch | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
JP2022510805A (ja) | レイトレーシングにおけるトライアングル及びボックスの交差テストのための統合されたデータパス | |
US20190318229A1 (en) | Method and system for hardware mapping inference pipelines | |
JP6368452B2 (ja) | 非同期のデバイスによって実行されるタスクのスケジューリングの向上 | |
CN118235116A (zh) | 经由加速器驻留运行时管理减少高度可扩展的hpc应用程序中的延迟 | |
US11809902B2 (en) | Fine-grained conditional dispatching | |
CN117859114A (zh) | 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法 | |
US10877926B2 (en) | Method and system for partial wavefront merger | |
KR20230017212A (ko) | 워크로드 처리를 위한 작업 그래프 스케줄링 | |
KR20240095437A (ko) | 가속기 상주 런타임 관리를 통한 높은 확장성의 hpc 애플리케이션들의 대기 시간 단축 | |
KR20200096767A (ko) | 가속 처리 디바이스를 위한 대역폭을 증가시키기 위한 병렬 데이터 전송 | |
US20220318137A1 (en) | Method and system for sharing memory | |
US20220206851A1 (en) | Regenerative work-groups | |
CN118043834A (zh) | 用于在着色器***中高效执行协作任务的***和方法 | |
KR20230015943A (ko) | 워크로드 처리를 위한 작업 그래프 생성 | |
JP2023505460A (ja) | Nisq時代のコンピュータのための変動認識キュービット移動スキーム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |