CN117157620A - 多加速器计算调度 - Google Patents
多加速器计算调度 Download PDFInfo
- Publication number
- CN117157620A CN117157620A CN202280024267.7A CN202280024267A CN117157620A CN 117157620 A CN117157620 A CN 117157620A CN 202280024267 A CN202280024267 A CN 202280024267A CN 117157620 A CN117157620 A CN 117157620A
- Authority
- CN
- China
- Prior art keywords
- chiplet
- chiplets
- assigned
- packet
- kernel scheduling
- 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 24
- 230000008569 process Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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/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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明提供了用于由多个小芯片执行计算工作的技术。该技术包括:将内核调度分组的工作组分配给该小芯片;由每个小芯片执行分配给该小芯片的该工作组;针对每个小芯片,在该内核调度分组的分配给该小芯片的所有工作组完成时,通知其他小芯片此类完成;以及在该内核调度分组的所有工作组完成时,通知客户端此类完成并且继续进行后续内核调度分组。
Description
相关申请的交叉引用
本申请要求2021年3月31日提交的名称为″MULTI-ACCELERATOR COMPUTEDISPATCH″的待审美国非临时专利申请号17/218,421的权益,其全部内容据此以引用方式并入本文。
背景技术
通用计算着色器是执行高度可并行化工作负载的一种日益流行的方式。对通用计算着色器的改进正在持续进行。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是可实现本公开的一个或多个特征的示例设备的框图;
图2是图1的设备的框图,示出了附加的细节;
图3是根据示例的加速处理设备的各方面的框图,示出了由多个小芯片执行命令队列中的命令;
图4是示出用于跨小芯片协作地执行内核的示例性操作集合的框图;以及
图5是根据示例的用于跨多个小芯片执行内核的方法的流程图。
具体实施方式
本发明提供了用于由多个小芯片执行计算工作的技术。该技术包括:将内核调度分组的工作组分配给该小芯片;由每个小芯片执行分配给该小芯片的该工作组;针对每个小芯片,在该内核调度分组的分配给该小芯片的所有工作组完成时,通知其他小芯片此类完成;以及在该内核调度分组的所有工作组完成时,通知客户端此类完成并且继续进行后续内核调度分组。
图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100可包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的另外部件。
在各种另选方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。在各种另选方案中,存储器104位于与处理器102相同的管芯上,或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。输出驱动器116包括联接到显示设备118的加速处理设备(″APD″)116。APD从处理器102接受计算命令和在一些具体实施中的图形渲染命令,处理这些命令,并且将像素输出提供给显示设备118进行显示。如下文所详述,APD 116包括根据单指令多数据(″SIMD″)范式来执行计算的一个或多个并行处理单元。因此,尽管这里将各种功能描述为由APD 116执行或与其结合执行,但在各种另选方案中,被描述为由APD 116执行的功能另外地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且向显示设备118提供图形输出。例如,可以设想根据SIMD范式执行处理任务的任何处理系统都可执行本文所述的功能。另选地,设想不根据SIMD范式执行处理任务的计算系统执行本文所述的功能。
图2是设备100的框图,示出了涉及在APD 116上执行处理任务的附加细节。处理器102在系统存储器104中保持一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、驱动程序122和应用程序126。这些控制逻辑模块控制处理器102和APD116的操作的各种特征。例如,操作系统120直接与硬件通信并为在处理器102上执行的其他软件提供到硬件的接口。驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用编程接口(″API″)来控制APD 116的操作,以访问APD 116的各种功能。驱动器122还包括即时编译器,该即时编译器编译程序以供APD 116的处理部件(诸如下文所详述的SIMD单元138)执行。
APD 116执行用于所选功能的命令和程序,诸如可适于并行处理的图形操作和非图形操作。APD 116可用于执行图形流水线操作,诸如像素操作、几何计算和基于从处理器102接收的命令将图像呈现给显示设备118。APD 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括多个小芯片201。每个小芯片201是如图所示的处理硬件的实例。在一些具体实施中,APD 116是多个小芯片201驻留在其中的处理设备。
每个小芯片201包括一个或多个计算单元132,该一个或多个计算单元包括根据SIMD范式以并行方式在处理器102的请求下执行操作的一个或多个SIMD单元138。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并由此执行相同的程序,但能够执行具有不同数据的该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。
计算单元132中的基本执行单元是工作项。每个工作项表示要在特定通道中并行执行的程序的单个实例化。可在单个SIMD处理单元138上作为″波前″同时执行工作项。一个或多个波前包括在一个″工作组″中,该″工作组″包括被指定执行相同程序的工作项的集合。可通过执行构成工作组的波前中的每一者来执行工作组。在另选方案中,波前在单个SIMD单元138上顺序地执行,或在不同SIMD单元138上部分地或完全地并行执行。波前可被视为可在单个SIMD单元138上同时执行的工作项的最大集合。因此,如果从处理器102接收的命令指示特定程序要被并行化到该程序不能在单个SIMD单元138上同时执行的程度,则该程序被划分成在两个或多个SIMD单元138上并行化或在同一SIMD单元138上串行化(或根据需要并行化和串行化)的波前。命令处理器136执行涉及调度不同计算单元132和SIMD单元138上的各种工作组的操作。一般来讲,命令处理器136从实体诸如处理器102接收命令,其中这些命令指示小芯片201执行任务,诸如图形渲染、执行通用着色器等。
由计算单元132提供的并行性适合图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,接受来自处理器102的图形处理命令的图形流水线134将计算任务提供给计算单元132以供并行执行。
计算单元132还用于执行不涉及图形或不作为图形流水线134的″正常″操作(例如,所执行的用以补充针对图形流水线134的操作执行的处理的自定义操作)的一部分而执行的计算任务。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序发送到APD 116以供执行。
尽管APD 116已经被描述为包括能够执行图形操作的图形处理流水线134,但是本公开设想了其中APD 116不包括图形处理流水线134的具体实施。在此类具体实施中,APD116至少包括计算单元132和命令处理器136。命令处理器136指示计算单元132执行通用计算着色器程序,但不通过图形处理流水线来控制处理。
每个小芯片201包括存储来自主机诸如处理器102的命令(有时被称为″分组″)的一个或多个硬件命令队列137。在示例中,处理器102将命令写入到软件命令队列(未示出)中,并且向APD 116指示这些命令已经被写入。响应于该指示,APD 116将命令加载到一个或多个硬件命令队列137中并且执行这些命令。
一些命令包括执行计算着色器的指令。计算着色器是在一个或多个计算单元132上执行的通用着色器程序。计算着色器在本文中有时被称为″内核″、″计算内核″或″计算着色器内核″。执行计算着色器内核的命令在本文中有时被称为″内核分组″或″计算着色器分组″。计算着色器程序响应于内核分组而执行在本文中有时被称为″计算着色器调度″或″内核调度″。
计算着色器分组指定内核调度的″大小″。大小是指内核调度的工作项目的数量。在一些示例中,计算着色器分组还指示内核调度的工作组的数量,而在其他示例中,计算着色器分组以外的信息指示内核调度的工作组的数量。内核调度的执行包括执行内核调度的所有工作项目(以及因此工作组)。
APD 116依次执行硬件命令队列137的命令。因此,APD 116执行第一命令,然后执行第二命令,等等。小芯片201各自遍历特定软件命令队列中的相同命令中的至少一些命令。更具体地,针对任何特定软件命令队列,一起协作以执行该软件命令队列中的命令的小芯片201中的每个小芯片将命令放置到小芯片201的不同硬件命令队列137中。小芯片201协作以执行硬件命令队列137的命令。更具体地,小芯片201划分内核分组的工作组以供执行。每个小芯片201执行分配给该小芯片201的工作组,但不执行分配给其他小芯片201的工作组。在完成特定内核分组的分配给小芯片201的所有工作组时,认为该小芯片201″完成″该特定内核分组。
图3是根据示例的APD 116的各方面的框图,示出了由多个小芯片201执行命令队列中的命令。示出了硬件命令队列137。硬件命令队列137存储内核调度分组302以供执行。如本文别处所述,多个小芯片201将单个软件队列″镜像″(存储相同的内容)到其相应硬件命令队列137中。因此,这些不同的小芯片201将相同的内核调度分组302存储在其相应硬件命令队列137中。
小芯片201协作以通过在小芯片201之间划分工作组来执行内核调度分组302。更具体地,在确定要执行特定内核调度分组302时,多个小芯片201中的命令处理器136确定要将哪些工作组306分配给不同的小芯片201以供执行。不同的小芯片201然后执行分配给这些小芯片的工作组306。针对任何特定的小芯片201,当从内核调度分配给该小芯片201的所有工作组306由该小芯片201完成时,该内核调度完成。针对APD 116,当内核调度的所有工作组306完成时,也即是当已经被分配工作组306的所有小芯片201已经完成这些分配的工作组的执行时,该内核调度完成。
以这种方式将内核调度的工作划分到不同的小芯片201允许容易地缩放专用于工作组的执行的处理资源,而不要求程序员(诸如编写用于在处理器102上执行的软件的程序员)知道或解决该缩放。更具体地,如本文别处所述,在处理器102(或另一处理器)上执行的软件将内核调度分组302放置到软件队列中,并且通知APD 116(例如,通过驱动器122)此类内核调度分组302已准备好用于执行。由于小芯片201自身划分每个内核调度分组302的工作组,因此可以如同仅单个动作者——APD 116正在处理软件命令队列的内核调度分组302一样来编写软件。
小芯片201能够以任何技术上合理的方式划分工作组306。在示例中,小芯片201各自被预先配置为执行特定工作组编号。又如,小芯片201被配置为以循环法方式分配工作组。又如,小芯片201被配置为分配多个工作组的集合中的工作组编号连续的工作组。应当理解,内核调度的工作组306具有工作组标识,其在本文中也被称为工作组编号。在其他示例中,用于在小芯片201之间划分工作组306的任何其他技术上可行的方式是可能的。
在图3中所示的示例中,内核调度303(其表示内核调度分组302的执行)包括多个工作组306。工作组306在小芯片201之间划分的这些方式与工作组集合304一起示出。存在三个此类工作组集合304。工作组集合1304(1)包括工作组306(1)至306(N)。工作组集合2304(2)包括工作组306(N+1)至306(2N)。工作组集合3 304(3)包括工作组306(2N+1)至306(3N)。工作组集合1 304(1)被分配给小芯片1 201(1)。工作组集合2 304(2)被分配给小芯片2 201(2)。工作组集合3 304(3)被分配给小芯片3 201(3)。尽管示出了以某种方式划分(例如,在小芯片201之间均等地划分),但应当理解,划分内核调度302的工作组306的任何方式都落入本公开的范围内。
如所描述的,APD 116的小芯片201协作以执行内核调度分组302的多个工作组306。一旦内核调度分组302已经完成,APD 116就通知请求执行内核调度分组302的实体(″客户端″,例如,处理器102)内核调度分组302已经完成执行。在一些示例中,为了执行该通知,单个小芯片201被指定为客户端通知器201。每个小芯片201在分配给该小芯片的工作组306已经完成时通知客户端通知器小芯片。当客户端通知器小芯片201确定所有工作组306已经完成执行时,客户端通知器小芯片201通知客户端内核调度分组302已经完成。
在一些示例中,小芯片201同步硬件命令队列137中的内核调度分组302的执行。在示例中,该同步以如下方式发生。当小芯片201完成内核调度分组302的所有工作组306的执行时,小芯片201通知参与同步的所有其他小芯片201该完成。在一些示例中,没有小芯片201继续进行后续内核调度分组302,直到参与同步的所有小芯片已经从参与同步的所有其他小芯片接收到指示,即所有此类小芯片201已经完成当前内核调度分组302的工作组306的执行。在一些具体实施中,在没有从其他小芯片201接收到这些其他小芯片201的工作组306已经完成的通知的情况下,一些小芯片201被允许继续进行″当前″内核调度分组302。在一些此类具体实施中,至少一些小芯片201在继续进行后续内核调度分组302之前等待所有其他小芯片201完成特定内核调度分组302的所有工作组306。
在一些示例中,上述同步经由计数器机制发生。根据计数器机制,每个小芯片201保持计数器。当一组小芯片201开始处理新的软件命令队列时,该一组小芯片201重置该计数器。每当小芯片201完成针对内核调度分组302的处理时,小芯片201递增其自己的计数器并且向每个其他小芯片201广播新值。为了同步操作,一旦小芯片已经完成针对内核调度分组302的处理,小芯片201就等待直到从所有其他小芯片201接收到的计数器值至少等于该小芯片201的计数器值。一旦该情况发生,小芯片201就继续进行后续内核调度分组302。
在其中使用计数器的具体实施中,通知器小芯片201在从参与处理内核调度分组302的所有其他小芯片201接收到与该内核调度分组302相对应的计数器值时,通知客户端该内核调度分组302完成。
单个APD 116可以包括被分组成多个组以服务于不同客户端或不同软件命令队列的多个小芯片201。小芯片201的每个此类组对客户端″表现″为单个APD 116。换句话讲,使用在不同的小芯片201之间分配工作组的本文别处所述的技术,小芯片201的每个此类组一起协作以执行软件命令队列的内容。因此,包括多个小芯片201的单个设备能够服务于许多不同的客户端。此外,可以组合多个设备,每个设备包括一个或多个小芯片201,以利用本文所述的技术来执行一个或多个软件命令队列的内容。因此,通过以任何组合对这些管芯的小芯片201进行分组,此类管芯的组合能够服务于一个或多个不同的客户端。在各种示例中,任何技术上可行的实体(诸如操作系统或管理程序)是将小芯片201分配给组并且将组分配给客户端的实体。
在一些示例中,每个小芯片201具有多个硬件命令队列137。每个硬件命令队列137由标识号来标识。在一些此类示例中,作为组的一部分的每个小芯片201将给定的软件命令队列分配给具有相同标识号的硬件命令队列137。该操作简化了关于同步的通信所需的数据。更具体地,如本文别处所述,同步涉及在完成特定内核调度分组302的执行时进行通信的作为组的一部分的小芯片201。通过将软件命令队列分配给相同硬件命令队列编号,当关于此类完成进行通信时,通信不需要明确地指示软件命令队列标识。硬件命令队列的指示隐含地指示同步通信针对哪个软件命令队列。因此,在一些具体实施中,小芯片201将硬件命令队列137编号与内核调度分组302完成的指示一起传送。
图4是示出用于跨小芯片201协作地执行内核的示例性操作集合的框图。操作开始于具有内核调度分组302(1)至302(N)的硬件命令队列137。应当理解,该硬件命令队列137表示不同的小芯片201(即,小芯片201(1)、201(2)和201(3))的硬件命令队列的内容。然而,还应当理解,不同的小芯片201可以不必在任何给定的时间点存储相同的内容。例如,不同的小芯片201可以具有不同大小的硬件命令队列137,或者可以存储在任何给定的时间点″返回″硬件命令队列137的软件命令队列的不同部分。然而,应当理解,图4示出了执行相同软件命令队列的内容的协作。
图4中所示的操作开始于硬件命令队列137存储内核调度分组302,如图所示。应当理解,处理器102已经将这些内核调度分组302写入到对应的软件命令队列中,这已经使得小芯片201将所示的内核调度分组302加载到其相应硬件命令队列137中。还应当理解,所示的硬件命令队列137表示小芯片201中的每个小芯片的硬件命令队列137的内容,但应当理解,在操作中,不同的此类硬件命令队列137的内容可以不同。此外,图4示出了时间点的序列。这些时间点示出了工作的渐进式处理。
内核调度分组302(1)包括工作组1至9。这些工作组306如下被分配给小芯片201:小芯片201(1)被分配工作组1至3,小芯片201(2)被分配工作组4至6,小芯片201(3)被分配工作组7至9。在时间1之前,小芯片201处理内核调度分组302(1)的工作组。在时间1处,小芯片1 201(1)已经处理工作组306(1)和306(2),小芯片201(2)尚未处理任何工作组,并且小芯片201(3)已经处理工作组7 306(7)。此时,没有小芯片201已经完成其来自内核调度分组302(1)的工作组306的全部分派。
在时间2处,小芯片201(2)完成工作组4 306(4)、工作组5 306(5)和工作组6 306(6)的处理。此时,小芯片201(2)已经完成内核调度分组302(1)的所有分配的工作组306的处理。因此,小芯片201(2)通知小芯片201(1)以及在一些具体实施中小芯片201(3):小芯片201(2)完成了内核调度分组302(1)。在图4的示例中,小芯片201(1)是通知处理器102内核调度分组302完成的小芯片201。
在时间3处,小芯片201(3)完成内核调度分组302(1)的所有工作组306,并且通知小芯片201(1)以及在一些具体实施中小芯片201(2)此类完成。在时间4处,小芯片201(1)完成内核调度分组302(1)的所有工作组306。小芯片201(1)向所有其他小芯片201发送指示,即所有小芯片201已经完成内核调度分组302(1)的所有工作组306。此外,因为完成了内核调度分组302(1)的分配给所有小芯片201的所有工作组306,所以小芯片201(1)(即通知小芯片)通知客户端——处理器102内核调度分组302(1)完成。在时间5处,因为内核调度分组302(1)完成,所以小芯片201开始处理内核调度分组302(2)。需注意,在时间5处,每个小芯片201都知道内核调度分组302(1)完成。在一些示例中,小芯片201获得该知识,因为当每个小芯片201完成内核调度分组302时,该小芯片201向每个其他小芯片201广播。因此,当第一小芯片201已经从每个其他小芯片201接收到该小芯片201已经完成内核调度分组302的处理的指示时,第一小芯片201知道继续进行后续内核调度分组302。
图5是根据示例的用于跨多个小芯片执行内核的方法500的流程图。尽管相对于图1至图4的系统进行了描述,但本领域技术人员将理解,被配置为按任何技术上可行的次序执行方法5的步骤的任何系统。
在步骤502处,一组小芯片201在小芯片201之间分配内核调度分组的工作组。在各种示例中,每个小芯片201具有命令处理器136,该命令处理器从客户端诸如处理器102接收内核调度分组302已经被添加到软件命令队列的指示,小芯片201正在从该软件命令队列执行内核调度分组302。随后,小芯片201将所添加的内核调度分组302加载到与软件命令队列相关联的小芯片201的硬件命令队列137中。小芯片201从其相应硬件命令队列137选择内核调度分组302以供执行。小芯片201以任何技术上可行的方式分配这些内核调度分组302的工作组。在示例中,每个小芯片201的命令处理器136迭代通过内核调度分组302的所有工作组的列表,并且忽略未被分配给该小芯片201的工作组编号。在各种示例中,基于被称为″工作组块大小″的数量以及特定小芯片201的小芯片ID 201来将工作组分配给小芯片201,该数量指示将多少个连续编号的工作组分配给特定小芯片201。在一个示例中,小芯片201各自是这些工作组的预先指定的不同编号的集合。在一个示例中,工作组按工作组标识以循环法方式分配给不同的小芯片201。例如,如果存在三个小芯片201,则第一小芯片201将得到工作组编号1、4、7等等,第二小芯片201将得到工作组编号2、5、8等等,并且第三小芯片201将得到工作组编号3、6、9等等。在其他示例中,小芯片201在运行时间期间通信以确定哪些工作组306被分配给哪些小芯片201。同样,用于细分工作组306的任何技术上可行的方式是可能的。步骤502的″分配″是指针对任何给定的小芯片201,识别要执行哪些工作组的操作。
在步骤504处,小芯片201完成给定的内核调度分组302的分配给该小芯片201的工作组的执行,并且通知一个或多个其他小芯片此类完成。在一个示例中,此类通知包括计数器的广播,该计数器对所完成的内核调度分组302的数量进行计数。换句话讲,每当小芯片201完成给定的内核调度分组302的分配给该小芯片201的所有工作组时,小芯片201递增计数器并且向其他小芯片201广播该计数器。该计数器识别小芯片201在硬件命令队列137中所处的位置。该计数器值的广播用作通知其他小芯片201广播小芯片201已经完成内核调度分组302的通知。
在步骤506处,在所有小芯片201完成内核调度分组201的所有工作组时,通知器小芯片201通知客户端(例如,处理器102)此类完成。在一些示例中,协作执行软件命令队列的内容的该一组小芯片201中的单个小芯片201被指定为通知器小芯片201。当通知器小芯片201确定所有小芯片201已经完成给定内核调度分组302的工作组时,通知器小芯片201通知客户端此类完成。在一些示例中,通过通知器小芯片确定通知器小芯片201已经从参与给定内核调度分组302的执行的每个其他小芯片201接收到与该内核调度分组302相对应的计数器值来做出该确定。此外,每个小芯片201在确定每个其他参与小芯片201已经完成内核调度分组302时,继续进行下一个内核调度分组201。同样,在一些示例中,通过确定小芯片201已经接收到与所讨论的内核调度分组302相对应的计数器值来做出该确定。
在各种示例中,参与内核调度分组302的执行的每个小芯片201具有命令处理器136,并且该命令处理器为每个小芯片201执行方法500的步骤。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
图中和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、加速处理设备116、命令处理器136、图形处理管线134、计算单元132、SIMD单元138或硬件命令队列137)可被实现为通用计算机、处理器或处理器核,或者实现为存储在非暂态计算机可读介质或另一介质中的可由通用计算机、处理器或处理器核执行的程序、软件或固件。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
***
Claims (20)
1.一种用于由多个小芯片执行计算工作的方法,所述方法包括:
将内核调度分组的工作组分配给所述小芯片;
由每个小芯片执行分配给所述小芯片的所述工作组;
在所述内核调度分组的分配给所述小芯片的所有工作组完成时,由每个小芯片通知其他小芯片此类完成;以及
在所述内核调度分组的所有工作组完成时,由所述多个小芯片中的小芯片通知客户端此类完成,并且继续进行后续内核调度分组。
2.根据权利要求1所述的方法,其中每个小芯片被分配所述内核调度分组的不同的互相排斥的工作组集合。
3.根据权利要求1所述的方法,其中分配给每个小芯片的所述工作组以预先指定的方式分配。
4.根据权利要求1所述的方法,其中通知所述其他小芯片此类完成包括广播计数器。
5.根据权利要求4所述的方法,其中所述计数器是对通过硬件命令队列的进展的指示。
6.根据权利要求1所述的方法,其中通知所述客户端由所述多个小芯片中被指定为通知器小芯片的一个小芯片执行。
7.根据权利要求1所述的方法,其中所述内核调度分组和所述后续内核调度分组存储在所述多个小芯片中的每个小芯片的硬件命令队列中。
8.根据权利要求1所述的方法,其中将内核调度分组的工作组分配给所述小芯片以及通知所述其他小芯片此类完成由所述多个小芯片中的每个小芯片的命令处理器执行。
9.根据权利要求1所述的方法,还包括:通过确定已经从所述多个小芯片中的每个小芯片接收到通知来确定所述内核调度分组的所有工作组都已完成,其中所述通知指示小芯片已经完成所述内核调度分组的所有工作组。
10.一种小芯片,包括:
计算单元,所述计算单元被配置为执行工作组;以及
命令处理器,所述命令处理器被配置为:
识别分配给所述小芯片的内核调度分组的工作组;
使得所述计算单元执行分配给所述小芯片的所述工作组;
在所述内核调度分组的分配给所述小芯片的所有工作组完成时,通知多个小芯片中的其他小芯片此类完成;以及
在所述内核调度分组的分配给所述多个小芯片中的所有小芯片的所有工作组完成时,通知客户端此类完成并且继续处理后续内核调度分组的工作组。
11.根据权利要求10所述的小芯片,其中所述多个小芯片中的每个小芯片被分配所述内核调度分组的不同的互相排斥的工作组集合。
12.根据权利要求10所述的小芯片,其中分配给每个小芯片的所述工作组以预先指定的方式分配。
13.根据权利要求10所述的小芯片,其中通知所述其他小芯片此类完成包括广播计数器。
14.根据权利要求13所述的小芯片,其中所述计数器是对通过硬件命令队列的进展的指示。
15.根据权利要求10所述的小芯片,还包括:
硬件命令队列,所述硬件命令队列被配置为存储所述内核调度分组和所述后续内核调度分组。
16.根据权利要求10所述的小芯片,其中所述命令处理器被进一步配置为:
通过确定已经从所述多个小芯片中的每个小芯片接收到通知来确定所述内核调度分组的所有工作组都已完成,其中所述通知指示小芯片已经完成所述内核调度分组的所有工作组。
17.一种设备,包括:
多个小芯片,其中所述多个小芯片中的每个小芯片包括:
计算单元,所述计算单元被配置为执行工作组;以及
命令处理器,所述命令处理器被配置为:
识别分配给所述小芯片的内核调度分组的工作组;
使得所述计算单元执行分配给所述小芯片的所述工作组;以及
在所述内核调度分组的分配给所述小芯片的所有工作组完成时,通知多个小芯片中的其他小芯片此类完成,
其中所述多个小芯片中的小芯片被配置为:在所述内核调度分组的分配给所述多个小芯片中的所有小芯片的所有工作组完成时,通知客户端此类完成并且继续处理后续内核调度分组的工作组。
18.根据权利要求17所述的设备,其中所述多个小芯片中的每个小芯片被分配所述内核调度分组的不同的互相排斥的工作组集合。
19.根据权利要求17所述的设备,其中分配给每个小芯片的所述工作组以预先指定的方式分配。
20.根据权利要求17所述的设备,其中通知所述其他小芯片此类完成包括广播计数器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/218,421 US11790590B2 (en) | 2021-03-31 | 2021-03-31 | Multi-accelerator compute dispatch |
US17/218,421 | 2021-03-31 | ||
PCT/US2022/019396 WO2022211993A1 (en) | 2021-03-31 | 2022-03-08 | Multi-accelerator compute dispatch |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117157620A true CN117157620A (zh) | 2023-12-01 |
Family
ID=83448248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280024267.7A Pending CN117157620A (zh) | 2021-03-31 | 2022-03-08 | 多加速器计算调度 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11790590B2 (zh) |
EP (1) | EP4315046A1 (zh) |
JP (1) | JP2024511765A (zh) |
KR (1) | KR20230160844A (zh) |
CN (1) | CN117157620A (zh) |
WO (1) | WO2022211993A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790590B2 (en) * | 2021-03-31 | 2023-10-17 | Advanced Micro Devices, Inc. | Multi-accelerator compute dispatch |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8645959B2 (en) | 2005-03-30 | 2014-02-04 | Intel Corporaiton | Method and apparatus for communication between two or more processing elements |
US20070113229A1 (en) | 2005-11-16 | 2007-05-17 | Alcatel | Thread aware distributed software system for a multi-processor |
US8675739B2 (en) | 2007-12-17 | 2014-03-18 | Samsung Electronics Co., Ltd. | Method and apparatus for video decoding based on a multi-core processor |
KR101425620B1 (ko) | 2007-12-17 | 2014-07-31 | 삼성전자주식회사 | 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치 |
US8572622B2 (en) * | 2009-12-30 | 2013-10-29 | International Business Machines Corporation | Reducing queue synchronization of multiple work items in a system with high memory latency between processing nodes |
US20150145871A1 (en) * | 2013-11-22 | 2015-05-28 | Nvidia Corporation | System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor |
US11061742B2 (en) | 2018-06-27 | 2021-07-13 | Intel Corporation | System, apparatus and method for barrier synchronization in a multi-threaded processor |
US10593094B1 (en) | 2018-09-26 | 2020-03-17 | Apple Inc. | Distributed compute work parser circuitry using communications fabric |
US20190317802A1 (en) * | 2019-06-21 | 2019-10-17 | Intel Corporation | Architecture for offload of linked work assignments |
US11340942B2 (en) * | 2020-03-19 | 2022-05-24 | Raytheon Company | Cooperative work-stealing scheduler |
US11790590B2 (en) * | 2021-03-31 | 2023-10-17 | Advanced Micro Devices, Inc. | Multi-accelerator compute dispatch |
-
2021
- 2021-03-31 US US17/218,421 patent/US11790590B2/en active Active
-
2022
- 2022-03-08 JP JP2023557715A patent/JP2024511765A/ja active Pending
- 2022-03-08 CN CN202280024267.7A patent/CN117157620A/zh active Pending
- 2022-03-08 EP EP22781838.2A patent/EP4315046A1/en active Pending
- 2022-03-08 WO PCT/US2022/019396 patent/WO2022211993A1/en active Application Filing
- 2022-03-08 KR KR1020237034857A patent/KR20230160844A/ko unknown
-
2023
- 2023-10-03 US US18/480,466 patent/US20240029336A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220319089A1 (en) | 2022-10-06 |
WO2022211993A1 (en) | 2022-10-06 |
KR20230160844A (ko) | 2023-11-24 |
US11790590B2 (en) | 2023-10-17 |
EP4315046A1 (en) | 2024-02-07 |
US20240029336A1 (en) | 2024-01-25 |
JP2024511765A (ja) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10026145B2 (en) | Resource sharing on shader processor of GPU | |
KR101590734B1 (ko) | 그래픽 프로세싱 유닛에서의 메모리 공유 | |
KR20160138878A (ko) | 워프 클러스터링을 수행하는 방법 | |
CN110832457B (zh) | 用于虚拟化加速处理装置的提前虚拟化上下文切换 | |
US11003429B1 (en) | Compile-time scheduling | |
US11847507B1 (en) | DMA synchronization using alternating semaphores | |
US20240029336A1 (en) | Multi-accelerator compute dispatch | |
US20210097396A1 (en) | Neural network training in a distributed system | |
US11221979B1 (en) | Synchronization of DMA transfers for large number of queues | |
US9898333B2 (en) | Method and apparatus for selecting preemption technique | |
CN115775199B (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
US20190318229A1 (en) | Method and system for hardware mapping inference pipelines | |
CN117859114A (zh) | 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法 | |
US20220100543A1 (en) | Feedback mechanism for improved bandwidth and performance in virtual environment usecases | |
US11809902B2 (en) | Fine-grained conditional dispatching | |
US20220309606A1 (en) | Dynamically reconfigurable register file | |
US20220197696A1 (en) | Condensed command packet for high throughput and low overhead kernel launch | |
US20120246656A1 (en) | Scheduling of tasks to be performed by a non-coherent device | |
US20200019530A1 (en) | Method and system for partial wavefront merger | |
US20220206851A1 (en) | Regenerative work-groups | |
US20230145253A1 (en) | Reducing latency in highly scalable hpc applications via accelerator-resident runtime management | |
KR20200096767A (ko) | 가속 처리 디바이스를 위한 대역폭을 증가시키기 위한 병렬 데이터 전송 | |
US11288095B2 (en) | Enhanced atomics for workgroup synchronization | |
US20230102767A1 (en) | System and methods for efficient execution of a collaborative task in a shader system | |
KR20220132796A (ko) | 기계학습 워크로드 처리 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |