使用动态宽度计算的壁垒同步的制作方法

文档序号:9693211阅读:204来源:国知局
使用动态宽度计算的壁垒同步的制作方法
【技术领域】
[0001] 本发明设及计算指令的执行,且更确切地说,设及并行执行的计算指令的同步。
【背景技术】
[0002] 传统上,计算机程序已经被编写成连续程序,其中计算机程序的代码在单一常规 处理器上连续执行。然而,因为包含多个处理核屯、的专用处理器(例如图形处理单元(GPU)) 的性能不断快速增加,计算机程序越来越被编写成利用此类专用处理器。例如,计算机程序 被编写成包含数据平行代码,使得相同代码可跨越处理器的多个处理核屯、而执行W对一组 数据并行地操作。因为此数据平行代码被并行执行而不是连续执行,所W可能不存在关于 代码将完成处理所述组数据的次序的保证。因此,可能需要使并行执行同步W确保多个处 理核屯、已结束所述组数据上的操作,之后将数据的值用于任何进一步操作中。

【发明内容】

[0003] -般来说,本发明描述用于使用动态壁垒宽度计算使并行处理的计算指令同步的 技术。线程块可各自对一组数据执行相同组指令,且壁垒操作可用于在线程对所述组数据 执行相应的写入操作之后且在线程对所述组数据执行相应的读取操作之前使所述线程块 同步,W防止读取操作读取不正确或无效的数据。默认地,壁垒操作可使线程块中的所有线 程同步,使得没有线程可在壁垒操作之后执行读取操作,除非所述块中的每一及每个线程 已执行相应的壁垒操作。相比而言,本文中掲示的技术可包含用于动态地计算壁垒操作的 宽度的技术,使得块的线程的子集可在执行相应的壁垒操作之后进行到执行读取操作,即 使所述块中的其它线程尚未执行它们的壁垒操作也如此。
[0004] 在一个实例中,一种用于使线程同步的方法包含在主机上执行的包含将由可操作 地禪合到主机的处理单元执行的数据并行代码的应用的运行时间确定各自执行所述数据 并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线 程的总数,且其中所述线程群组中的线程在处理单元的一或多个计算单元上执行所述数据 并行代码。所述方法进一步包含响应于所述线程群组的子群组中的每一线程已执行相应的 壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,使得所述线程群组的所 述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而 无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于 所述线程群组中的线程的所述总数。
[0005] 在另一实例中,一种计算系统包含用于使线程同步的计算系统。所述计算系统包 含主机。所述计算系统进一步包含可操作地禪合到所述主机的处理单元。所述计算系统进 一步包含定序器模块,所述定序器模块经配置在所述主机上执行的包含将由所述处理 单元执行的数据并行代码的应用的运行时间确定各自在所述处理单元的一或多个计算单 元上执行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所 述线程群组中的线程的总数;及响应于所述线程群组的子群组中的每一线程已执行相应的 壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,使得所述线程群组的所 述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作而 无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小于 所述线程群组中的线程的所述总数。
[0006] 在另一实例中,一种并行处理设备包含用于W下操作的装置:在主机上执行的包 含将由可操作地禪合到所述主机的处理单元执行的数据并行代码的应用的运行时间确定 各自在所述处理单元的一或多个计算单元上执行所述数据并行代码的群组线程的壁垒操 作的壁垒宽度,其中所述壁垒宽度小于所述线程群组中的线程的总数。所述并行处理设备 进一步包含响应于所述线程群组的子群组中的每一线程已执行相应的壁垒操作,所述子群 组包含与所确定的壁垒宽度相同数目的线程,用于W下操作的装置:使得所述线程群组的 所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执行相应的操作 而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的所述子群组小 于所述线程群组中的线程的所述总数。
[0007] 在另一实例中,一种计算机可读存储媒体可含有指令,所述指令在由至少一个处 理器执行时致使所述至少一个处理器执行操作。所述操作包含:在主机上执行的包含将由 可操作地禪合到所述主机的处理单元执行的数据并行代码的应用的运行时间确定各自执 行所述数据并行代码的群组线程的壁垒操作的壁垒宽度,其中所述壁垒宽度小于所述线程 群组中的线程的总数,且其中所述线程群组中的线程在所述处理单元的一或多个计算单元 上执行所述数据并行代码。所述操作进一步包含响应于所述线程群组的子群组中的每一线 程已执行相应的壁垒操作,所述子群组包含与所确定的壁垒宽度相同数目的线程,使得所 述线程群组的所述子群组能够在所述相应的壁垒操作之后在所述一或多个计算单元上执 行相应的操作而无需等待所述线程群组中的其它线程执行壁垒操作,其中所述线程群组的 所述子群组小于所述线程群组中的线程的所述总数。
[0008] 附图及W下描述中陈述一或多个实例的细节。其它特征、目标和优点将从所述描 述和图式W及权利要求书而显而易见。
【附图说明】
[0009] 图1是说明根据本发明的一些方面的线程的同步的概念图。
[0010] 图2是说明根据本发明的一些方面的并行处理计算系统的框图。
[0011] 图3是说明根据本发明的一些方面的使用动态壁垒宽度使线程同步的概念图。
[0012] 图4是说明根据本发明的一些方面的实例并行缩减的概念图。
[0013] 图5是说明根据本发明的一些方面的使用动态壁垒使线程同步的实例过程的流程 图。
[0014] 图6是说明可经配置W实施本发明的一或多个方面的装置的实例的框图。
【具体实施方式】
[0015] -般来说,本发明描述用于使用动态壁垒宽度计算使并行处理的计算指令同步的 技术。在数据并行处理中,计算机程序可包含数据并行代码。数据并行代码是可经由多个执 行线程在多个处理元件上同时运行的一组计算指令,使得可执行相同组计算指令W对多个 不同数据点并行地执行相同操作。在多个数据点中的一者上操作的相同数据并行代码的每 一个别调用是线程,且线程可同时执行W执行多个数据点上的相同指令。通常,数据并行代 码可包含写入一组数据的写入操作W及在写入操作之后读取由写入操作写入的所述组数 据的读取操作。然而,不是执行的每个线程可同时完成写入操作的执行。如果在每一线程已 完成写入到所述组数据的写入操作之前执行读取一组数据的读取操作,那么所述读取操作 可读取不正确或无效的结果。为确保读取操作不读取不正确或无效的结果,可要求每一线 程在对所述组数据执行数据并行写入操作之后在进行到对所述组数据执行读取操作之前 执行壁垒操作,且可不允许用于执行数据并行代码的线程在执行壁垒操作之后进行执行所 述读取操作,直到所有线程也已执行所述壁垒操作为止。
[0016] 图1是说明根据本发明的一些方面的线程的同步的概念图。如图1中所示,线程 102、104、106及108可并行执行数据并行代码W各自对一组数据执行写入操作,且随后各自 对所述组数据执行读取操作。在时间tl处,线程106已结束其写入操作且到达壁垒操作110。 壁垒操作110指示线程106已完成其写入操作的执行。然而,因为不是每个线程都已到达壁 垒操作(即,线程102、104及108尚未完成相应的写入操作的执行),所W线程106必须等待, 直到其它线程102、104及108也已到达壁垒操作为止,之后进行到执行读取所述组数据的读 取操作。在时间t2处,线程102到达壁垒操作112,因为线程102已完成执行其写入操作。类似 于线程106,因为线程104及108还尚未到达壁垒操作,所W线程102必须也等待,直到线程 104及108也已到达壁垒操作,之后进行到执行读取所述组数据的读取操作。在时间t3处,线 程104到达壁垒操作114。类似于线程102及106,因为线程108还尚未到达壁垒操作,所W线
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1