CN110716750A - 用于部分波前合并的方法和系统 - Google Patents
用于部分波前合并的方法和系统 Download PDFInfo
- Publication number
- CN110716750A CN110716750A CN201810758486.3A CN201810758486A CN110716750A CN 110716750 A CN110716750 A CN 110716750A CN 201810758486 A CN201810758486 A CN 201810758486A CN 110716750 A CN110716750 A CN 110716750A
- Authority
- CN
- China
- Prior art keywords
- wavefront
- partial
- wavefronts
- processing
- work items
- 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 title claims abstract description 32
- 108091006146 Channels Proteins 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 102100031174 C-C chemokine receptor type 10 Human genes 0.000 description 1
- 102100021198 Chemerin-like receptor 2 Human genes 0.000 description 1
- 101000777558 Homo sapiens C-C chemokine receptor type 10 Proteins 0.000 description 1
- 101000750094 Homo sapiens Chemerin-like receptor 2 Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Abstract
描述了用于部分波前合并的方法和系统。向量处理机器采用所述部分波前合并将部分波前合并成一个或多个波前。所述系统包括部分波前管理器和统一寄存器。所述部分波前管理器检测在不同的单指令多数据(“SIMD”)单元中的包含不活动工作项和活动工作项的波前(以下称为“部分波前”),将所述部分波前移动到一个或多个SIMD单元中并将所述部分波前合并成一个或多个波前。所述统一寄存器允许在所述一个或多个合并的波前中的每个活动工作项访问原始SIMD单元中的先前分配的寄存器。因此,所述统一寄存器的内容不必被复制到执行所述一个或多个合并的波前的所述SIMD单元。
Description
背景技术
向量处理机器,诸如图形处理单元(GPU)、通用图形处理单元 (GPGPU)和类似机器,使用或包括被配置为根据单指令多数据 (“SIMD“)范式执行计算的一个或多个并行处理单元。在这些类型的机器中,某一数量的工作项构成波前(wavefront),该波前在一个SIMD 单元中运行。
部分波前是包括一些不活动工作项的波前。部分波前在应用中常见,并导致构成SIMD单元的资源的利用率降低。例如,OpenCl内核可以具有复杂的分支模式。在一些情况下,一些工作项在一个分支下执行,同时剩余工作项不活动。在另一情况下,一些工作项在一个分支下执行,而其他一些工作项在另一分支下执行。分支可以具有不同的执行时间,这导致具有更短执行时间的工作项不活动,同时具有更长执行时间的工作项正在执行。
附图说明
可从结合附图以举例的方式给出的以下描述中获得更详细的了解,在附图中:
图1是根据某些实现方式的示例装置的框图;
图2是根据某些实现方式的图1的装置的框图;
图3是根据某些实现方式的具有统一寄存器和部分波前管理器的系统的框图;
图4是根据某些实现方式的用于图3中所示的系统的部分波前合并的流程图;和
图5是根据某些实现方式的具有统一寄存器和部分波前管理器 的另一系统的框图;和
图6是根据某些实现方式执行部分波前合并的系统600的框图。
具体实现方式
本文描述的是用于部分波前合并的方法和系统。向量处理机器采用部分波前合并将部分波前合并成一个波前,其中部分波前包括一些不活动工作项。这导致在单指令多数据(“SIMD”)单元中的计算资源的更高利用率,诸如算术逻辑单元(ALU)利用率。系统包括部分波前管理器和统一寄存器结构。在实现方式中,统一寄存器结构是单一寄存器结构。在实现方式中,单一寄存器结构由多个寄存器组成。在实现方式中,统一寄存器结构包括多个寄存器,其中每个寄存器与ALU 或SIMD相关联。在实现方式中,每个这样的寄存器由多个寄存器组成。例如但不限于,统一寄存器结构可以是通用寄存器(GPR)。部分波前管理器检测在不同的单指令多数据(“SIMD”)单元中的包含不活动工作项和活动工作项的波前(以下称为“部分波前”),将部分波前移动到适当数量的SIMD中并将部分波前合并成一个或多个波前。统一寄存器结构允许合并的波前的部分波前中的每个活动工作项访问原始SIMD单元中先前分配的寄存器。因此,先前分配的寄存器的内容不必被复制到执行合并的波前的SIMD。这与软件解决方案形成对比,在软件解决方案中,活动工作的状态必须从一个线程移动到另一线程。
图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 将以相同方式操作。输出驱动器114包括耦合到显示装置118的加速处理装置(“APD”)116。APD 116被配置为接受来自处理器102的计算命令和图形渲染命令,处理那些计算和图形渲染命令,并向显示装置 118提供像素输出以进行显示。如下面进一步详细描述的,APD 116 包括被配置为根据单指令多数据(“SIMD”)范式执行计算的一个或多个并行处理单元。因此,尽管在本文中将各种功能描述为由APD 116 执行或结合APD 116执行,但是在各种替代方案中,被描述为由APD116执行的功能另外或替代地由具有类似能力的其他计算装置执行,该其他计算装置在一些情况下不是由主机处理器(例如,处理器102) 驱动,并且在一些实现方式中被配置为向显示装置118提供(图形)输出。例如,可以设想,根据SIMD范式执行处理任务的任何处理系统可被配置为执行本文描述的功能。或者,可以设想,不根据SIMD范式执行处理任务的计算系统执行本文描述的功能。
图2是装置100的框图,示出了与APD 116上处理任务的执行有关的附加细节。处理器102在系统存储器104中维护用于由处理器 102执行的一个或多个控制逻辑模块。控制逻辑模块包括操作系统 120、内核模式驱动器122和应用126。这些控制逻辑模块控制处理器102和APD 116的操作的各种特征。例如,操作系统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包括计算单元132,该计算单元132包括被配置为根据 SIMD范式以并行方式在处理器102的请求下执行操作的一个或多个 SIMD单元138。SIMD范式是其中多个处理元件共享单个程序控制流单元和程序计数器并由此执行相同程序但能够用不同数据执行该程序的范式。尽管在本文中使用术语SIMD单元,但是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上的各个波前有关的操作。
计算单元132提供的并行性适合用于图形有关的操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些情况下,接受来自处理器102的图形处理命令的图形流水线134向计算单元132提供计算任务以并行执行。例如,图形处理流水线134包括每个执行特定功能的阶段。阶段表示图形处理流水线134的功能的细分。每个阶段部分或全部实现为在可编程处理单元中执行的着色器程序,或部分或全部实现为可编程处理单元外部的固定功能、非可编程硬件。
计算单元132还用于执行与图形无关或不作为图形流水线134的“正常”操作的一部分执行的计算任务(例如,被执行以补充针对图形流水线134的操作而执行的处理的自定义操作)。在处理器102上执行的应用126或其他软件将定义这样的计算任务的程序传输给APD 116以供执行。
图3是根据某些实现方式执行部分波前合并的系统300的框图。系统300包括SIMD单元305,例如,SIMD0、SIMD1、SIMD2、…...、 SIMDN,其中每个SIMD单元305包括至少一个算术逻辑单元 (ALU)310。SIMD0、SIMD1、SIMD2、…...、SIMDN中的每个还包括统一GPR 315,例如,统一GPR0、统一GPR1、统一GPR2、…...、统一GPRN。统一GPR0、统一GPR1、统一GPR2、…...、统一GPRN 中的每个和ALU 310经由网络320连接或通信(以下统称为“连接”)。在实现方式中,网络320是网状网络。在另一实现方式中,统一GPR 315通过共享总线连接。在又一实现方式中,统一GPR 315菊花链接在一起。部分波前管理器325连接到SIMD0、SIMD1、SIMD2、…...、 SIMDN中的每个。图3中所示的系统300可用图1和图2中所示的系统和其中呈现的元件来实现。
系统300中的部分波前合并特征可以通过一个或多个寄存器设置来启用或禁用。在实现方式中,内置函数被添加到指令集来设置该寄存器设置。寄存器设置可以由驱动器、着色器程序、内核等设置。
如下面关于图4和图5所述,部分波前管理器325通过确定工作项中的哪些(对应于SIMD通道)是活动的或不活动的来检测来自 SIMD单元305的部分波前。部分波前管理器325可以出于合并波前的目的查看任何数量的SIMD单元305。在实现方式中,部分波前管理器325将部分波前移动到一个SIMD单元305中并且将部分波前合并成一个波前,其中SIMD单元305可以在合并后具有活动和不活动通道的任何组合。统一GPR 315允许合并的波前中的每个活动工作项访问原始SIMD单元中先前分配的GPR。虽然本文下面的描述是关于前述实现方式的,但是该描述适用于其他实现方式而不脱离本说明书的范围。在另一实现方式中,例如,部分波前管理器325可以将部分波前合并到多个SIMD单元中。
具体来说,部分波前管理器325为SIMD单元305中的每个波前记录stateId、执行掩码和程序计数器。stateId指示共享特定或具体着色器程序的波前。每个波前的执行掩码指示哪些工作项是活动的。程序计数器指示正在执行着色器程序的哪个指令。
图4是与图3的系统300结合使用的用于部分波前合并的方法 400的流程图。如本文所述,该描述可以扩展到其他实现方式而不脱离本说明书的范围。部分波前管理器325确定哪些部分波前是用于合并的候选。该确定包括确定是否存在使用相同应用(诸如着色器程序) 的部分波前(405)。如果没有,则不需要进一步的行动。如果存在使用相同应用的部分波前,则确定使用相同应用的部分波前的总活动工作项(410),并确定使用相同应用的部分波前中的每个的程序计数器 (415)。如果使用相同应用的部分波前的总活动工作项不超过N,其中 N是可以在波前中执行的活动工作项的数量(即,SIMD单元中的最大通道数量)并且使用相同应用的部分波前中的每个的程序计数器在某一阈值内,即在某一距离内,其中基于应用类型、处理优化和其他考虑因素设置程序计数器阈值,则部分波前管理器325将这些部分波前标记为合并候选(420)。如果两个条件都满足,则部分波前管理器325 然后将部分波前移动到一个SIMD单元(425)。如本文所述,部分波前中的每个经由网络320访问它们的原始分配的统一GPR。
部分波前管理器325然后尝试使部分波前的程序计数器同步 (430)。仲裁算法允许一个部分波前更频繁地执行,以便使程序计数器同步到某一同步阈值内。然后检查程序计数器的同步(435)。如果程序计数器未能同步在某一同步阈值内,则部分波前移回到它们的原始 SIMD单元(440)。设置同步阈值的标准是基于应用类型、处理优化和其他考虑因素设置的。在实现方式中,可以在任何合并之前尝试同步,如关于图5所描述的。
如果程序计数器成功同步到某一同步阈值内,则部分波前被合并成一个波前(445)。合并的波前内的工作项在一个SIMD单元内运行。如本文所述,部分波前中的每个,并且具体来说是工作项,经由网络 320访问它们的原始分配的GPR。合并的波前在适当的情况下执行 (450)。一旦合并的波前完成,它在SIMD单元中分配的GPR被释放 (455)。
图5是与图3的系统300结合使用的用于部分波前合并的方法 500的流程图。如本文所述,该描述可以扩展到其他实现方式而不脱离本说明书的范围。部分波前管理器325确定哪些部分波前是用于合并的候选。该确定包括确定是否存在使用相同应用(诸如着色器程序) 的部分波前(505)。如果没有,则不需要进一步的行动。在说明性示例中,如果存在使用相同应用的M个部分波前,则确定使用相同应用的M个部分波前的总活动工作项(510),并确定该M个部分波前中的每个的程序计数器(515),其中M个部分波前在M个不同的SIMD单元中执行。如果使用相同应用的M个部分波前的总活动工作项不超过N*K并且K<M,其中N是可以在波前中执行的活动工作项的数量 (即,SIMD单元中的最大通道数量),部分波前具有小于N的活动工作项的数量,并且使用相同应用的M个部分波前中的每个的程序计数器在某一阈值内,即在某一距离内,其中基于应用类型、处理优化和其他考虑因素设置程序计数器阈值,则部分波前管理器325将这些 M个部分波前标记为合并候选(520)。请注意,N*M表示可以执行的最大工作项数量,并且如果K<M,部分波前存在.换句话说,M个部分波前的总活动工作项小于给定数量的SIMD单元可以执行的最大工作项数量。
部分波前管理器325然后尝试使M个部分波前的程序计数器同步(525)。仲裁算法允许M个部分波前中的一些更频繁地执行,以便使它们的程序计数器与其他部分波前同步到某一同步阈值内。同步可以使用多种方法来实现。在实现方式中,选择具有最高级的程序计数器的波前(表示为“波前x”),并且在调度期间给予剩余的波前更高的优先级,以使它们的程序计数器最终将全部与波前x同步。设置同步阈值的标准是基于应用类型、处理优化和其他考虑因素设置的。
然后检查程序计数器的同步(530)。如果程序计数器未能同步在某一同步阈值内,则不需要进一步的行动。如果程序计数器成功同步到某一同步阈值内,则部分波前被合并(535)。在说明性示例中,如果M 个部分波前中的L个(L≤M)能够在某一时间阈值内具有相同的程序计数器,并且波前的总活动工作项不超过N*P(P<L),则这些L个部分波前是合并候选。具体来说,L个部分波前被合并成P个波前。P个波前在P个不同的SIMD单元中执行。如本文所述,部分波前中的每个,并且具体来说是工作项,经由(例如)网络320访问它们的原始分配的GPR。部分波前,例如该P个波前,在适当的情况下执行(540)。一旦合并的波前完成,它们在SIMD单元中分配的GPR被释放(545)。
存在多种方法来合并部分波前。在说明性示例中,(L-P)个部分波前的工作项被移动到其他P个部分波前中。存在许多方法来将L个部分波前分成P和L-P个。例如,选择L个部分波前中的前P个部分波前。在另一示例中,从L个部分波前任意选择P个部分波前。在另一示例中,选择具有最活动工作项的P个部分波前。对于(L-P)个波前中的每个部分波前,将活动项移动到选定的P个部分波前中以合并成新的P个波前。在实现方式中,在P(P>2)个波前中,在合并后波前可以是部分的。在实现方式中,部分波前的工作项可以被拆分并且与多个部分波前合并。例如,如果N=8,L是3,并且每个波前具有5 个活动工作项,则原始波前可以被合并成2个新的波前。一个原始部分波前中的5个工作项被拆分并且合并成2个新的波前。在这种情况下,一个新的波前具有8个活动项,并且另一波前具有7个活动项。
图6是根据某些实现方式执行部分波前合并的系统600的框图。如本文所述,该描述可以扩展到其他实现方式而不脱离本说明书的范围。系统600包括SIMD单元605,例如,SIMD0、SIMD1、SIMD2、…...、 SIMDN,其中每个SIMD单元605包括至少一个算术逻辑单元(ALU)610。系统600还包括经由网络620连接到每个ALU 610的统一GPR 615。在实现方式中,网络620是网状网络。在另一实现方式中,统一GPR 615经由共享总线连接。部分波前管理器625连接到SIMD0、SIMD1、SIMD2、…...、SIMDN中的每个。图6中所示的系统600可用图1和图2中所示的系统和其中呈现的元件来实现。系统600中的部分波前合并特征可以通过寄存器设置来启用或禁用。内置函数被添加到指令集来设置该寄存器。寄存器设置可以由驱动器、着色器程序或内核来设置。通常,系统600如关于图4的方法400和图5的方法500所描述的那样操作。
在说明性示例中,着色器单元或程序使用内置寄存器函数来启用部分波前合并功能。在示例中,波前包含8个工作项,并且因此执行掩码是8位。假设SIMD0中的波前0具有0x11110000的执行掩码(其中1指示活动通道并且0指示不活动通道),stateId为0并且程序计数器等于10,并且SIMDN中的波前1具有执行掩码0x00001111并且程序计数器等于12。在这个说明性示例中,波前0具有4个活动通道,并且波前1具有4个活动通道。波前0和波前1之间的程序计数器距离为2,在程序计数器阈值4内。部分波前管理器将两个波前都检测为合并候选,并且将波前1从SIMDN移动到SIMD0,因为组合的活动通道总数为8并且适合单个SIMD单元。当波前1从SIMDN 移动到SIMD0时,波前0仍在执行。因此,一旦移动完成,波前0的程序计数器变为14,并且波前1的程序计数器保持12。
仲裁算法使得波前1能够在SIMD0中运行,以尝试使两个程序计数器同步在14。如果波前1的程序计数器由于分支或类似程序执行而跳过14,则部分波前管理器将波前1返回到SIMDN。如果两个程序计数器成功同步,则部分波前管理器将波前0和波前1合并成合并的波前。合并的波前的执行掩码为0x11111111,指示所有活动通道。如本文所述,来自原始波前0的工作项访问SIMD0内的统一GPR,同时来自原始波前1的工作项经由网络访问SIMDN中的统一GPR。一旦合并的波前完成,它在SIMD中分配的GPR被释放。如本文所述,该描述可以扩展到其他实现方式而不脱离本说明书的范围。
在另一说明性示例中,驱动器设置寄存器以启用部分波前合并功能。在示例中,波前包含16个工作项,并且因此执行掩码是16位。假设SIMD0中的波前0具有0x1111111100000000的执行掩码,stateId 为0并且程序计数器等于10,并且SIMD2中的波前1具有 0x1111111100000000的执行掩码并且程序计数器等于12。波前0和波前1之间的程序计数器距离为2,在程序计数器阈值4内。部分波前管理器将两个波前都检测为合并候选,并且将波前1从SIMD2移动到SIMD0,因为活动通道总数为16并且适合一个SIMD单元。当波前1从SIMD2移动到SIMD0时,波前0仍在执行。因此,一旦移动完成,波前0的程序计数器变为14,并且波前1的程序计数器保持12。
仲裁算法使得波前1能够在SIMD0中运行,以尝试使两个程序计数器同步在14。如果波前1的程序计数器不等于14,则增加超时计数器。如果超时计数器大于超时阈值,则部分波前管理器将波前1 移回到SIMD2。如果两个程序计数器成功同步,则部分波前管理器将波前0和波前1合并成合并的波前。合并的波前的执行掩码是 0x1111111111111111。如本文所述,来自原始波前0的工作项访问 SIMD0内的统一GPR,同时来自原始波前1的工作项经由网络访问 SIMD2中的统一GPR。一旦合并的波前完成,它在SIMD单元中分配的GPR被释放。如本文所述,该描述可以扩展到其他实现方式而不脱离本说明书的范围。
应理解,基于本文的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者可在具有或没有其他特征和元件的情况下以各种组合使用。
可在通用计算机、处理器或处理器核心中实现所提供的方法。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、其他任何类型的集成电路(IC)和/或状态机。可通过使用处理后的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(这些指令能够存储在计算机可读介质上)配置制造过程来制造这种处理器。这种处理的结果可以是掩膜作品,该掩膜作品随后在半导体制造过程中用来制造实现实施方案的各方面的处理器。
本文提供的方法或流程图可用并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行的计算机程序、软件或固件来实现。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM 盘和数字通用盘(DVD)的光学介质。
Claims (20)
1.一种处理系统,其包括:
多个处理单元,每个处理单元执行构成为波前的多个工作项;
部分波前管理器,其与所述多个处理单元中的每个通信;和
统一寄存器结构,其与所述多个处理单元中的每个通信,
其中所述部分波前管理器:
检测在不同处理单元中的是部分波前的波前,其中部分波前包括不活动工作项和活动工作项;
将所述部分波前移动到一个或多个处理单元中;和
将所述部分波前合并成一个或多个合并的波前,和
其中在所述一个或多个合并的波前中的每个工作项在所述一个或多个合并的波前的执行期间访问在所述统一寄存器结构中的先前分配的寄存器空间。
2.如权利要求1所述的处理系统,其还包括:
通信网络,其与所述统一寄存器结构和所述多个处理单元通信。
3.如权利要求2所述的处理系统,其中所述统一寄存器结构是多个寄存器,并且每个处理单元包括连接到所述通信网络的寄存器。
4.如权利要求1所述的处理系统,其中所述统一寄存器结构是多个寄存器,并且每个处理单元包括连接到通信网络的至少一个寄存器,所述通信网络连接到所述多个处理单元。
5.如权利要求1所述的处理系统,其中所述部分波前管理器针对每个波前记录:
哪些波前正在共享给定程序;
执行掩码,以识别所述活动工作项;和
程序计数器,以指示正在执行哪个指令。
6.如权利要求5所述的处理系统,其中所述部分波前管理器还确定所述活动工作项的总数量是否超过相对于波前可以执行的最大工作项数量。
7.如权利要求5所述的处理系统,其中所述部分波前管理器还确定与共享所述给定程序的所述波前相关联的程序计数器是否在某一阈值内。
8.如权利要求5所述的处理系统,其中所述部分波前管理器还使所述部分波前的所述程序计数器同步到某一同步阈值内。
9.一种用于改善处理系统中的波前处理的方法,所述方法包括:
从多个处理单元中确定部分波前,其中每个处理单元正在执行构成为波前的多个工作项,并且其中部分波前包括不活动工作项和活动工作项;
将所述部分波前移动到一个或多个处理单元中;和
将所述部分波前合并成一个或多个合并的波前,
其中在所述合并的波前中的每个工作项在所述一个或多个合并的波前的执行期间访问在统一寄存器结构中的先前分配的寄存器空间。
10.如权利要求9所述的方法,所述方法还包括:
经由通信网络在所述多个处理单元和所述统一寄存器结构之间进行通信。
11.如权利要求10所述的方法,其中所述统一寄存器结构是多个寄存器,并且每个处理单元包括连接到所述通信网络的至少一个寄存器。
12.如权利要求9所述的方法,其中所述确定部分波前还包括:
针对每个波前记录:
哪些波前正在共享给定程序;
执行掩码,以识别所述活动工作项;和
程序计数器,以指示正在执行哪个指令。
13.如权利要求12所述的方法,其中所述确定部分波前还包括:
确定所述活动工作项的总数量是否超过相对于波前可以执行的最大工作项数量。
14.如权利要求13所述的方法,其中所述确定部分波前还包括:
确定与共享所述给定程序的所述波前相关联的程序计数器是否在某一阈值内。
15.如权利要求14所述的方法,所述方法还包括:
使所述部分波前的所述程序计数器同步到某一同步阈值内。
16.如权利要求15所述的方法,所述方法还包括:
如果同步失败,则将所述部分波前移回到原始处理单元。
17.如权利要求16所述的方法,所述方法还包括:
在完成后释放在所述统一寄存器结构中的所述先前分配的寄存器空间。
18.一种用于改善处理系统中的波前处理的方法,所述方法包括:
使用相关联数量的处理单元并行执行多个波前,其中每个波前包括多个工作项;
检测所述多个波前中的任何波前是否是部分波前,其中部分波前包括不活动工作项;
将所述部分波前移动到一个或多个处理单元中;和
将所述部分波前合并成一个或多个合并的波前,
其中在所述一个或多个合并的波前中的每个工作项在所述一个或多个合并的波前的执行期间访问在统一寄存器结构中的先前分配的寄存器空间。
19.如权利要求18所述的方法,其中所述检测还包括:
针对每个波前记录:
哪些波前正在共享给定程序;
执行掩码,以识别所述活动工作项;和
程序计数器,以指示正在执行哪个指令;
确定所述活动工作项的总数量是否超过相对于波前可以执行的最大工作项数量;和
确定与共享所述给定程序的所述波前相关联的程序计数器是否在某一阈值内。
20.如权利要求19所述的方法,所述方法还包括:
使所述部分波前的所述程序计数器同步到某一同步阈值内;
如果同步失败,则将所述部分波前移回到原始处理单元;和
在完成后释放在所述统一寄存器结构中的所述先前分配的寄存器空间。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758486.3A CN110716750A (zh) | 2018-07-11 | 2018-07-11 | 用于部分波前合并的方法和系统 |
US16/042,592 US10877926B2 (en) | 2018-07-11 | 2018-07-23 | Method and system for partial wavefront merger |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758486.3A CN110716750A (zh) | 2018-07-11 | 2018-07-11 | 用于部分波前合并的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716750A true CN110716750A (zh) | 2020-01-21 |
Family
ID=69138177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810758486.3A Pending CN110716750A (zh) | 2018-07-11 | 2018-07-11 | 用于部分波前合并的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10877926B2 (zh) |
CN (1) | CN110716750A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210349717A1 (en) * | 2020-05-05 | 2021-11-11 | Intel Corporation | Compaction of diverged lanes for efficient use of alus |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734676B2 (en) * | 2001-06-27 | 2010-06-08 | International Business Machines Corporation | Method for controlling the number of servers in a hierarchical resource environment |
US7904905B2 (en) * | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US7617384B1 (en) * | 2006-11-06 | 2009-11-10 | Nvidia Corporation | Structured programming control flow using a disable mask in a SIMD architecture |
US8782645B2 (en) * | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
US8683468B2 (en) * | 2011-05-16 | 2014-03-25 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
US20120331278A1 (en) * | 2011-06-23 | 2012-12-27 | Mauricio Breternitz | Branch removal by data shuffling |
US9424099B2 (en) * | 2012-06-01 | 2016-08-23 | Advanced Micro Devices, Inc. | Method and system for synchronization of workitems with divergent control flow |
WO2014098845A1 (en) * | 2012-12-19 | 2014-06-26 | Intel Corporation | Vector mask driven clock gating for power efficiency of a processor |
US9639371B2 (en) * | 2013-01-29 | 2017-05-02 | Advanced Micro Devices, Inc. | Solution to divergent branches in a SIMD core using hardware pointers |
US9830164B2 (en) * | 2013-01-29 | 2017-11-28 | Advanced Micro Devices, Inc. | Hardware and software solutions to divergent branches in a parallel pipeline |
KR102102166B1 (ko) * | 2013-04-22 | 2020-04-21 | 삼성전자 주식회사 | 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법 |
US9697003B2 (en) * | 2013-06-07 | 2017-07-04 | Advanced Micro Devices, Inc. | Method and system for yield operation supporting thread-like behavior |
US10853904B2 (en) * | 2016-03-24 | 2020-12-01 | Advanced Micro Devices, Inc. | Hierarchical register file at a graphics processing unit |
-
2018
- 2018-07-11 CN CN201810758486.3A patent/CN110716750A/zh active Pending
- 2018-07-23 US US16/042,592 patent/US10877926B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200019530A1 (en) | 2020-01-16 |
US10877926B2 (en) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
KR102616212B1 (ko) | 다수의 컴퓨팅 코어들상의 데이터 드라이브 스케줄러 | |
US11880715B2 (en) | Method and system for opportunistic load balancing in neural networks using metadata | |
CN114153500A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US11023242B2 (en) | Method and apparatus for asynchronous scheduling | |
CN103970511A (zh) | 能够支持多模式的处理器及其多模式支持方法 | |
US20180246655A1 (en) | Fused shader programs | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
US10877926B2 (en) | Method and system for partial wavefront merger | |
US11276223B2 (en) | Merged data path for triangle and box intersection test in ray tracing | |
US20190318229A1 (en) | Method and system for hardware mapping inference pipelines | |
US11113061B2 (en) | Register saving for function calling | |
US20220197696A1 (en) | Condensed command packet for high throughput and low overhead kernel launch | |
US20200004585A1 (en) | Techniques for reducing serialization in divergent control flow | |
US20220206851A1 (en) | Regenerative work-groups | |
US20230102767A1 (en) | System and methods for efficient execution of a collaborative task in a shader system | |
US20230205680A1 (en) | Emulating performance of prior generation platforms | |
US11704277B2 (en) | Variation-aware qubit movement scheme for noise intermediate scale quantum era computers | |
US11790590B2 (en) | Multi-accelerator compute dispatch | |
US20230145253A1 (en) | Reducing latency in highly scalable hpc applications via accelerator-resident runtime management | |
US20220318137A1 (en) | Method and system for sharing memory | |
US20210096909A1 (en) | Enhanced atomics for workgroup synchronization | |
CN117859114A (zh) | 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法 |
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 |