当前位置: 首页 > 专利查询>辉达公司专利>正文

用于全面同步执行线程的技术制造技术

技术编号:19482007 阅读:17 留言:0更新日期:2018-11-17 10:46
提供了一种用于全面同步执行线程的技术。在一个实施例中,同步指令使处理器确保包括在线程束中的指定线程同时执行单个后续指令。所述指定线程至少包括第一线程和第二线程。在操作中,第一线程到达同步指令。处理器确定第二线程还没有到达同步指令,并且将第一线程配置为停止执行指令。在为第二线程发出至少一个指令后,处理器确定所有指定线程已经到达同步指令。然后处理器使得所有指定线程执行后续指令。有利的是,与传统同步线程的方法不同,同步指令使得处理器能够可靠且正确地执行包括复杂控制流和/或指令的代码,所述复杂控制流和/或指令假定线程是聚合的。

【技术实现步骤摘要】
用于全面同步执行线程的技术
本专利技术的实施例总地涉及并行处理系统,并且更具体地,涉及用于全面同步执行线程的技术。
技术介绍
图形处理单元(GPU)能够在专用可编程硬件处理单元上使用数量相对较多的小型并行执行线程来实现非常高的性能。在GPU中,“线程组(threadgroup)”或“线程束(warp)”是指对不同的输入数据大致同时执行相同指令的一组线程。然而,开发者可以编写代码,当其在GPU上执行时,使得线程束中的仅仅一部分线程执行指令。线程束中的线程在执行这类型指令期间被称为“分散的(diverged)”。引起这种分散的代码的示例是以C编程语言编写的代码,所述C编程语言包括导致两种或更多种指令序列的“if”语句,其中线程束中的不同线程集遵循序列中的每一个。GPU的一个限制是,一些指令的合适行为假定每个线程束中的线程是聚合的(converged)。例如,GPU可以实现随机指令(shuffleinstruction),其允许线程束中的线程之间的直接寄存器到寄存器数据交换。当线程是分散的时,如果GPU试图对线程束执行随机指令,则结果是不可预期的。例如,在GPU上执行的代码可产生不正确的结果或意外终止。尽管一些编译器和GPU实现了一些等级的同步功能,然而那些功能是有限的并且不能保证对所有情况都聚合。例如,许多GPU实现了意图同步线程束的屏障指令(barrierinstruction)。然而,屏障指令假定每个线程束中的线程已聚合并因此是不可靠的。在另一示例中,一些编译器分析代码以检测相对简单的分散模式。一旦检测到的分散模式,则编译器将两个指令之间的分散指令加上括号,所述两个指令分别指示重新聚合点以及在重新聚合点处继续执行。然而,编译器不能分析某些类型的复杂控制流,因此当需要用于正确执行代码时,编译器不能一直保证线程束中的线程是聚合的。一般情况下,某些程序指令的实现可能需要跨线程束中的不同线程的聚合等级,线程束不能由包括在GPU中的编译器和硬件机制维护,所述编译器和硬件机制通常的任务是确保这种线程聚合。因此,确保代码正确执行的唯一方式是让程序员以不支持复杂控制流的编程语言编写代码,或者仅仅使用定义更丰富编程语言的有限的指令子集和操作子集来编写代码。采用这两种方法中的任何一种限制代码将大大减少程序员高效配置GPU的能力,这是不想要的。如前面说明的,本领域需要更有效的技术以同步执行线程组或线程束中的线程。
技术实现思路
本专利技术的一个实施例阐述了一种计算机实现的方法,用于同步包括在线程束中的多个线程,以同时执行单个后续指令。所述方法包括确定包括在多个线程中的第一线程已经到达指定所述多个线程的同步指令;确定包括在所述多个线程中的第二线程还没有到达所述同步指令;将所述第一线程配置为停止执行指令;针对所述第二线程发出至少一个指令;确定包括在所述多个线程中的所有线程已经到达所述同步指令;以及使得包括在所述多个线程中的所有线程执行单个后续指令。所公开的技术的一个优点是所述技术使得处理器能够可靠且正确地执行代码和指令,其依赖于包括在线程束中的不同线程的聚合。相比之下,包括在传统处理器中的传统硬件机制不能一直确保在需要用于正确执行代码和指令时线程束中的线程是聚合的。附图说明为了可以详细理解本专利技术的上述特征,可通过参考实施例进行上面简要概括的本专利技术的更具体的描述,其中一些实施例在附图中示出。然而,需要注意的是,由于本专利技术可适用于其他相等效果的实施例,附图说明仅仅示出了本专利技术的典型实施例,因此不应认为是对其范围的限制。图1是示出被配置成实现本专利技术的一个或更多个方面的计算机系统的框图;图2是根据本专利技术的各种实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;图3是根据本专利技术的各种实施例的、包括在图2的并行处理单元中的通用处理集群的框图;图4是根据本专利技术的各种实施例的、包括在图3的通用处理集群中的流式多处理器的框图;图5是根据本专利技术的各种实施例的、在同时执行单个后续指令之前由图4的流式多处理器执行以同步包括在线程束中的不同线程的示例指令序列;以及图6是根据本专利技术的各种实施例的、用于在同时执行单个后续指令之前同步包括在线程束中的不同线程的方法步骤的流程图。具体实施方式在下面的描述中,为了提供对本专利技术更彻底的理解,阐述了许多具体的细节。然而,对本领域技术人员显而易见的是,在不具有这些具体细节中的一个或更多个的情况也能实践本专利技术。系统概述图1是示出被配置成实现本专利技术的一个或更多个方面的计算机系统100的框图。如图所示,计算机系统100包括但不限于,中央处理单元(CPU)102和系统存储器104,其经由存储器桥105与通信路径113耦合至并行处理子系统112。存储器桥105经由通信路径106进一步耦合至I/O(输入/输出)桥107,而I/O桥107转而耦合至转换器(switch)116。在操作中,I/O桥107被配置成从诸如键盘或鼠标之类的输入设备108接收用户输入信息,并经由通信路径106和存储器桥105将输入信息转发至CPU102用于处理。转换器116被配置成提供I/O桥107与计算机系统100的其他组件(诸如网络适配器118和各种附加卡120和121)之间的连接。同样如图所示,I/O桥107耦合至系统盘114,系统盘114被配置成存储内容、应用程序和数据以由CPU102和并行处理子系统112使用。一般情况下,系统盘114提供用于应用程序和数据的非易失性存储,并且可以包括固定的或可移除的硬盘驱动器、闪存装置,以及CD-ROM(光盘只读存储器),DVD-ROM(数字通用盘-ROM),蓝光光碟,HD-DVD(高清晰度DVD),或者其他磁、光或固态存储设备。最后,尽管没有明确示出,诸如通用串行总线或其他端口连接件、光盘驱动器、数字通用盘驱动器、胶片记录设备等之类的其他组件也可以连接到I/O桥107。在不同的实施例中,存储器桥105可以是北桥(Northbridge)芯片,以及I/O桥107可以是南桥(Southbridge)芯片。此外,通信路径106和113以及计算机系统100内的其他通信路径可以采用任何技术上合适的协议(包括但不限于AGP(加速图形端口)、超传输、或本领域已知的任何其他总线或点对点通信协议)来实现。在一些实施例中,并行处理子系统112包括将像素传送给显示器设备110的图形子系统,所述显示器设备110可以是任何传统的阴极射线管、液晶显示器、发光二极管显示器以及诸如此类。在这种实施例中,并行处理子系统112合并最佳用于图形和视频处理的电路,包括例如视频输出电路。如下面在图2中更详细描述的,这样的电路可以跨越包括在并行处理子系统112内的一个或更多个并行处理单元(PPU)被合并。在其他实施例中,并行处理子系统112合并最佳用于通用处理和/或计算处理的电路。此外,这种电路可以跨越包括在并行处理子系统112内的一个或更多个PPU被合并,并行处理子系统112被配置成执行这种通用操作和/或计算操作。还在其他的实施例中,包括在并行处理子系统112内的一个或更多个PPU可以被配置成执行图形处理操作、通用处理操作和计算处理操作。系统存储器104包括被配置成管理并行处理子系统112内的一个或更多个PPU的处理操作的至少一个设备驱动程序10本文档来自技高网
...

【技术保护点】
1.一种计算机实现的方法,用于同步多个线程,所述方法包括:确定包括在所述多个线程中的第一线程已经到达同步指令,其中所述同步指令指定所述多个线程;确定包括在所述多个线程中的第二线程还没有到达所述同步指令;将所述第一线程配置为停止执行指令;针对所述第二线程发出至少一个额外的指令;确定包括在所述多个线程中的所有线程已经到达所述同步指令;以及使得包括在所述多个线程中的所有线程执行第一后续指令。

【技术特征摘要】
2017.04.27 US 15/499,8431.一种计算机实现的方法,用于同步多个线程,所述方法包括:确定包括在所述多个线程中的第一线程已经到达同步指令,其中所述同步指令指定所述多个线程;确定包括在所述多个线程中的第二线程还没有到达所述同步指令;将所述第一线程配置为停止执行指令;针对所述第二线程发出至少一个额外的指令;确定包括在所述多个线程中的所有线程已经到达所述同步指令;以及使得包括在所述多个线程中的所有线程执行第一后续指令。2.如权利要求1所述的计算机实现的方法,其中所述同步指令和所述第一后续指令包括指令对。3.如权利要求1所述的计算机实现的方法,其中所述第一后续指令包括随机指令或投票指令,所述随机指令使能所述多个线程之间的直接寄存器到寄存器数据交换,所述投票指令基于从所述多个线程接收的数据生成单个投票结果。4.如权利要求1所述的计算机实现的方法,其中所述第一后续指令包括线程间组屏障指令,其包括所述多个线程和至少一个其他多个线程。5.如权利要求1所述的计算机实现的方法,其中将所述第一线程配置为停止执行指令包括:将与所述第一线程相关联的调度状态设置为使得指令不被发出至所述第一线程的值,以及去激活所述第一线程。6.如权利要求1所述的计算机实现的方法,进一步包括:在确定所述第二线程还没有到达所述同步指令之前,将与所述第一线程相关联的第一恢复程序计数器设置为指定所述同步指令。7.如权利要求1所述的计算机实现的方法,进一步包括:在确定包括在所述多个线程中的所有线程已经到达所述同步指令之前:基于与所述第一线程相关联的第一恢复程序计数器,将线程组程序计数器设置为指定所述同步指令;以及对于包括在所述多个线程中的每个线程,确定与所述线程相关联的恢复程序计数器等于所述同步指令,以及使得所述线程基于所述线程组程序计数器执行指令。8.如权利要求7所述的计算机实现的方法,其中使得所述线程基于所述线程组程序计数器执行指令包括:将与所述线程相关联的调度状态设置为使指令被发出至所述线程的值。9.如权利要求1所述的计算机实现的方法,其中确定包括在所述多个线程中的所有线程已经到达所述同步指令包括:对包括在所述多个线程中的每个线程,确定所述线程不再能够执行任何指令或者已经开始执行所述同步指令。10.如权利要求1所述的计算机实现的方法,其中使得包括在所述多个线程中的所有线程执行所述第一后续指令包括:将线程组程序计数器设置为指定所述第一后续指令。11.一种系统,被配置为同步多个线程,所述系统包括:指令高速缓存,存储多个指令;指令调度程序,耦合到所述指令高速缓存;以及聚合屏障单元,...

【专利技术属性】
技术研发人员:阿杰伊·苏达尚·蒂鲁马拉奥利维尔·吉普彼得·尼尔森杰克·肖凯特
申请(专利权)人:辉达公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1