使用动态宽度计算的壁垒同步制造技术

技术编号:13076518 阅读:48 留言:0更新日期:2016-03-30 11:40
处理单元的定序器在运行时间确定群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数,且其中所述线程群组中的线程在一或多个计算单元上执行数据并行代码。响应于所述线程群组的子群组中的每一线程已执行所述壁垒操作,所述子群组包含与所述壁垒宽度相同数目的线程,所述定序器可使得所述线程群组的所述子群组能够在所述壁垒操作之后在一或多个处理器上执行,而无需等待所述线程群组中的其它线程执行所述壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数。

【技术实现步骤摘要】
【国外来华专利技术】使用动态宽度计算的壁垒同步
本专利技术涉及计算指令的执行,且更确切地说,涉及并行执行的计算指令的同步。
技术介绍
传统上,计算机程序已经被编写成连续程序,其中计算机程序的代码在单一常规处理器上连续执行。然而,因为包含多个处理核心的专用处理器(例如图形处理单元(GPU))的性能不断快速增加,计算机程序越来越被编写成利用此类专用处理器。例如,计算机程序被编写成包含数据平行代码,使得相同代码可跨越处理器的多个处理核心而执行以对一组数据并行地操作。因为此数据平行代码被并行执行而不是连续执行,所以可能不存在关于代码将完成处理所述组数据的次序的保证。因此,可能需要使并行执行同步以确保多个处理核心已结束所述组数据上的操作,之后将数据的值用于任何进一步操作中。
技术实现思路
一般来说,本专利技术描述用于使用动态壁垒宽度计算使并行处理的计算指令同步的技术。线程块可各自对一组数据执行相同组指令,且壁垒操作可用于在线程对所述组数据执行相应的写入操作之后且在线程对所述组数据执行相应的读取操作之前使所述线程块同步,以防止读取操作读取不正确或无效的数据。默认地,壁垒操作可使线程块中的所有线程同步,使得没有线程可在壁垒操作之后执行读取操作,除非所述块中的每一及每个线程已执行相应的壁垒操作。相比而言,本文中揭示的技术可包含用于动态地计算壁垒操作的宽度的技术,使得块的线程的子集可在执行相应的壁垒操作之后进行到执行读取操作,即使所述块中的其它线程尚未执行它们的壁垒操作也如此。在一个实例中,一种用于使线程同步的方法包含在主机上执行的包含将由可操作地耦合到主机的处理单元执行的数据并行代码的应用的运行时间确定各自执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数,且其中所述线程群组中的线程在处理单元的一或多个计算单元上执行所述数据并行代码。所述方法进一步包含响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数。在另一实例中,一种计算系统包含用于使线程同步的计算系统。所述计算系统包含主机。所述计算系统进一步包含可操作地耦合到所述主机的处理单元。所述计算系统进一步包含定序器模块,所述定序器模块经配置以:在所述主机上执行的包含将由所述处理单元执行的数据并行代码的应用的运行时间确定各自在所述处理单元的一或多个计算单元上执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数;及响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数。在另一实例中,一种并行处理设备包含用于以下操作的装置:在主机上执行的包含将由可操作地耦合到所述主机的处理单元执行的数据并行代码的应用的运行时间确定各自在所述处理单元的一或多个计算单元上执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数。所述并行处理设备进一步包含响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,用于以下操作的装置:使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数。在另一实例中,一种计算机可读存储媒体可含有指令,所述指令在由至少一个处理器执行时致使所述至少一个处理器执行操作。所述操作包含:在主机上执行的包含将由可操作地耦合到所述主机的处理单元执行的数据并行代码的应用的运行时间确定各自执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数,且其中所述线程群组中的线程在所述处理单元的一或多个计算单元上执行所述数据并行代码。所述操作进一步包含响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数。附图及以下描述中陈述一或多个实例的细节。其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。附图说明图1是说明根据本专利技术的一些方面的线程的同步的概念图。图2是说明根据本专利技术的一些方面的并行处理计算系统的框图。图3是说明根据本专利技术的一些方面的使用动态壁垒宽度使线程同步的概念图。图4是说明根据本专利技术的一些方面的实例并行缩减的概念图。图5是说明根据本专利技术的一些方面的使用动态壁垒使线程同步的实例过程的流程图。图6是说明可经配置以实施本专利技术的一或多个方面的装置的实例的框图。具体实施方式一般来说,本专利技术描述用于使用动态壁垒宽度计算使并行处理的计算指令同步的技术。在数据并行处理中,计算机程序可包含数据并行代码。数据并行代码是可经由多个执行线程在多个处理元件上同时运行的一组计算指令,使得可执行相同组计算指令以对多个不同数据点并行地执行相同操作。在多个数据点中的一者上操作的相同数据并行代码的每一个别调用是线程,且线程可同时执行以执行多个数据点上的相同指令。通常,数据并行代码可包含写入一组数据的写入操作以及在写入操作之后读取由写入操作写入的所述组数据的读取操作。然而,不是执行的每个线程可同时完成写入操作的执行。如果在每一线程已完成写入到所述组数据的写入操作之前执行读取一组数据的读取操作,那么所述读取操作可读取不正确或无效的结果。为确保读取操作不读取不正确或无效的结果,可要求每一线程在对所述组数据执行数据并行写入操作之后在进行到对所述组数据执行读取操作之前执行壁垒操作,且可不允许用于执行数据并行代码的线程在执行壁垒操作之后进行执行所述读取操作,直到所有线程也已执行所述壁垒操作为止。图1是说明根据本专利技术的一些方面的线程的同步的概念图。如图1中所示,线程102、104、106及108可并行执行数据并行代码以各自对一组数据执行写入操作,且随后各自对所述组数据执行读取操作。在时间t1处,线程106已结束其写入操作且到达壁垒操作110。壁垒操作110指示线程106已完成其写入操作的执行。然而,因为不是每个线程都已到达壁垒操作(即,线程102、104及108尚未完成相应的写入操作的执行),所以线程106必须等待,直到其它线程102、104及108也已到达壁垒操作为止,之后进行到执行读取所述组数据的读取操作。在时间t2处,线程102到达壁垒操作112,因为线程102已完成执行其写入操作。类似于线本文档来自技高网...
使用动态宽度计算的壁垒同步

【技术保护点】
一种用于使线程同步的方法,所述方法包括:在主机上执行的包含将由可操作地耦合到所述主机的处理单元执行的数据并行代码的应用的运行时间确定各自在所述处理单元的一或多个计算单元上执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数;及响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所述所确定的壁垒宽度相同数目的线程,使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数。

【技术特征摘要】
【国外来华专利技术】2013.08.13 US 13/965,8181.一种用于使线程同步的方法,所述方法包括:在主机上执行的包含将由可操作地耦合到所述主机的处理单元执行的数据并行代码的应用的运行时间确定各自在所述处理单元的一或多个计算单元上执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数,且其中所述壁垒操作包含在循环中;动态地重新确定所述循环的每一迭代的所述壁垒操作的所述壁垒宽度,其中所述所确定的壁垒宽度在所述循环的至少两个迭代中是不同的;响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所述所确定的壁垒宽度相同数目的线程,使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行所述循环的相应迭代中的相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于所述线程群组中的线程的所述总数;及在所述壁垒操作的所述壁垒宽度小于所述一或多个计算单元的波前的向量宽度的情况下确定不执行所述壁垒操作。2.根据权利要求1所述的方法,其中所述确定包括:至少部分基于所述数据并行代码而确定所述壁垒操作的所述壁垒宽度。3.根据权利要求1所述的方法,其进一步包括:在所述壁垒操作大于所述一或多个计算单元的波前的向量宽度的情况下确定执行所述壁垒操作。4.根据权利要求1所述的方法,其中所述壁垒操作包含在条件语句中,且其中所述条件语句不贯穿所述线程群组进行一致地评估。5.根据权利要求1所述的方法,其中所述线程群组的所述子群组中的线程是所述线程群组中的连续线程。6.一种用于使线程同步的计算系统,其包括:主机;处理单元,其可操作地耦合到所述主机;其中所述处理单元包括多个处理器中的至少一者;定序器模块,其经配置以:在所述主机上执行的包含将由所述处理单元执行的数据并行代码的应用的运行时间确定各自在所述处理单元的一或多个计算单元上执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数,且其中所述壁垒操作包含在循环中,动态地重新确定所述循环的每一迭代的所述壁垒操作的所述壁垒宽度,其中所述所确定的壁垒宽度在所述循环的至少两个迭代中是不同的;响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群组包含与所述所确定的壁垒宽度相同数目的线程,使得所述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行所述循环的相应迭代中的相应的操...

【专利技术属性】
技术研发人员:贝内迪克特·鲁宾·加斯特
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国;US

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

1