用于工作项同步的方法和系统技术方案

技术编号:10195416 阅读:123 留言:0更新日期:2014-07-10 03:29
公开了用于使一个或多个处理器上的工作项同步的方法、系统和计算机程序产品实施方案。实施方案包括:通过来自所述组的第一工作项执行屏障跳越指令;以及响应于所执行的屏障跳越指令,重新配置屏障以使来自所述组的其它工作项在序列中的多个点上同步,而不要求第一工作项在多个点中的任一个上到达屏障。

【技术实现步骤摘要】
【国外来华专利技术】用于工作项同步的方法和系统 专利技术背景专利
[0001 ] 本专利技术大致涉及工作项同步。
技术介绍
图形处理单元(GPU)通常包括理想地适合于在并行数据流上执行相同的指令的多个处理元件,如在单指令多数据(SMD)设备中的情况或在数据并行处理中的。在很多计算模型中,中央处理单元(CPU)起主机或控制处理器的作用,并不干涉其它处理器(例如GPU)的专用函数,例如图形处理。多核CPU(其中每个CPU具有多个处理核心)为与在GPU上可用的那些函数类似的专用函数(例如图形处理)提供处理能力。多核CPU或GPU的一个或多个计算核心可以是同一裸片(例如AMDFusion?)的部分,或可选地在不同的裸片(例如具有NVIDIAGPU的 IntelXeon?)中。最近,具有 CPU 和 GPU(例如 CellSPE?、IntelLarrabee?)两者的特征的混合核心被提出,用于通用GPU(GPGPU)型计算。GPGPU型的计算主张使用CPU来主要执行控制代码并将性能关键数据-并行代码卸载到GPU。GPU主要用作加速器。多核CPU和GPGPU计算模型的组合包括CPU核心和作为加速器目标的GPU核心两者。很多多核CPU核心具有在很多领域中与GPU可比较的性能。为具有CPU和GPU的异构计算平台开发了几个框架。这些框架包括斯坦福大学的BrookGPU.NVIDIA的计算统一设备架构(CUDA)和被称为科纳斯组织的行业协会的OpenCL。OpenCL框架提供用户可创建用于GPU的应用的C型开发环境。OpenCL使用户能够例如指定用于将一些计算(例如数据-并行计算)卸载到GPU的指令。OpenCL也提供编译器和运行时间环境,其中代码可在异构或其它计算系统内被编译并执行。由OpenCUCUDA和很多低级GPU中间语言体现的计算模型有时被称为单指令多线程(“SMT”)。在SMT模型的频繁使用的实施中,使用在矢量上的硬件掩模组的SMD执行用于模拟比在硬件中可获得的更精细粒度的线程。为了有效地利用计算模型(其中CPU和GPU都可用于很多类型的代码的执行),很多灵活的线程同步模型是需要的。当与不是传统图形处理任务的工作项一起使用时,在OpenCL中可用的常规工作项同步例如可能效率较低。例如,尽管在图形处理任务中的各自并发性工作项可能常常没有歧异,但是在CPU相关的应用中,执行的歧异可能相对较高。在OpenCL中提供的同步模型单独地不足以处理工作项的这样的动态行为。在OpenCL中,在工作组内的工作项可被同步。在工作组内,可发布屏障(barrier)指令,其具有下列语义:在工作组中的所有工作项必须在任何工作项可前进而经过屏障之前到达屏障。“屏障”阻挡到达它的所有进程,直到上面提到的语义被满足。它接着释放被阻挡的进程以重新开始它们各自的处理。然而,在OpenCL和其它类似的常规框架中,在控制流中的屏障使用被严重限制。图1A示出使用单个工作项(在图1A中被称为内核(kernel))以将值加载到组共享存储器空间中,其它工作项可从该存储器空间得到加载的值。加载值的工作项以及工作组中的其它工作项被阻止越过屏障前进,直到组中的所有工作项都到达屏障。将值加载到组共享存储器中的上述操作也可从库函数内完成,从内核代码调用库函数。图1B示出包括屏障指令的库函数。图1C是调用库函数的内核。图1C中的代码示出阻挡调用相应库的所有工作项直到指定的工作项将数据加载到共享区域的操作。图1D示出一个示例,其中将对屏障的调用放置在库内部可导致不正确的操作。例如,调用包括来自具有条件(其中条件之一没有对库函数的调用)的内核的屏障指令的库函数可导致死锁。这是因为屏障只在一组的所有工作项都到达它时才释放,然而一个或多个工作项(其条件未被满足)将根本不到达屏障。而且,在OpenCL的工作项同步框架中,执行内核的工作组中的工作项必须在任何工作项被允许继续执行之前执行屏障指令。屏障指令必须被执行内核的工作组中的所有工作项遇到(即,在指令流中到达)。如果屏障指令在条件语句内部,则所有工作项必须进入条件即任何工作项进入条件语句并执行屏障。如果屏障指令在循环内部,则所有工作项必须在任何工作项被允许越过屏障继续执行之前针对循环的每次迭代执行屏障指令。这些限制可限制系统和编程员最佳地利用处理资源的能力。因此所需要的是实现工作项同步的更灵活和有效的使用的方法和系统。 实施方案概述公开了用于工作项的更有效和灵活的调度的方法和系统。公开了使工作项指示它永久地离开同步组使得在该同步组中的工作项的执行中出现的随后屏障不等待已宣布从工作组离开的工作项的一种技术。公开了另一技术,通过该技术,工作项可再加入同步组,以便继续与该组的其它工作项同步。所公开的技术可在各种情况下编程时在提高的处理效率和灵活性方面产生明显的优点。所公开的方法、系统和计算机程序产品实施方案包括由来自组的第一工作项执行屏障跳越指令并响应于所执行的屏障跳越指令而重新配置屏障以使来自该组的其它工作项在序列中的多个点上同步,而不要求第一工作项在多个点中的任一个上到达屏障。下面参考附图详细描述本专利技术的另外的实施方案、特征和优点以及本专利技术的各种实施方案的结构和操作。 附图/图简述合并在说明书中并构成说明书的部分的附图示出本专利技术的实施方案,并连同上面给出的一般描述和下面给出的实施方案的详细描述一起用来解释本专利技术的原理。在附图中:图1A-图1D示出呈伪码形式的常规屏障同步示例。图2A示出根据本专利技术的实施方案的屏障跳越指令(以伪码形式)。图2B示出根据实施方案的具有使用库调用的屏障跳越指令的内核(以伪码形式)。图3示出根据实施方案的屏障重置指令(以伪码形式)。图4A-图4C示出根据实施方案的屏障同步的示例性使用情况的伪码范例。图5示出根据实施方案的几个工作项随着时间的示例性流。图6示出根据实施方案的用于工作项同步的方法。图7示出根据实施方案的用于工作项同步的系统的方框图。图8示出根据实施方案的工作项同步模块的方框图。 本专利技术的实施方案的详细描述虽然在本文使用特定应用的说明性实施方案描述了本专利技术,但是应理解,本专利技术不限于此。可以获得本文提供的教导的本领域中的技术人员将认识到在本专利技术范围和本专利技术将具有重要效用的另外领域内的另外的修改、应用和实施方案。可在任何计算机系统、计算设备、娱乐系统、媒体系统、游戏系统、通信设备、个人数字助理或使用一个或多个处理器的任何系统中使用本专利技术的实施方案。在系统包括异构计算系统的场合,本专利技术可能是特别有用的。如在本文使用的术语“异构计算系统”是多种类型的处理器是可用的计算系统。在GPU中,被分配到处理元件的工作项被称为“工作组”。被发布用于并行执行的两个或多个工作项是“波前”。工作组可包括一个或多个波前。虽然主要关于使工作组的工作项同步描述了实施方案,但是本公开的教导可适用于使遍及任一个或多个处理器和/或访问共享存储器的进程组的工作项同步。如本文使用的术语“内核”指作为一个或多个工作项并行地执行的、具有相同的编码基数的程序和/或处理逻辑。应注意,在一些实施方案中,术语“工作项”和“线程”是可互换的。在本公开中,“工作项”和“线程”的可互换性说明例如体现在实施方案中的模型中的工作项执行的灵活模拟的或真实的独立性本文档来自技高网...
用于工作项同步的方法和系统

【技术保护点】
一种使一个或多个处理器上的一组工作项同步的方法,其包括:通过来自所述组的第一工作项执行屏障跳越指令;以及响应于所述执行的屏障跳越指令,重新配置屏障以使来自所述组的其它工作项在序列中的多个点上同步,而不要求所述第一工作项在所述多个点中的任一个上到达所述屏障。

【技术特征摘要】
【国外来华专利技术】2011.11.03 US 13/288,8331.一种使一个或多个处理器上的一组工作项同步的方法,其包括: 通过来自所述组的第一工作项执行屏障跳越指令;以及 响应于所述执行的屏障跳越指令,重新配置屏障以使来自所述组的其它工作项在序列中的多个点上同步,而不要求所述第一工作项在所述多个点中的任一个上到达所述屏障。2.如权利要求1所述的方法,其还包括: 配置所述屏障以在一序列同步点处使所述组同步,其中所述序列包括所述多个点。3.如权利要求1所述的方法,其中重新配置所述屏障以使其它工作项同步包括: 使与所述屏障相关的跳越计数递增,其中所述跳越计数在确定来自所述组的所有工作项是否到达所述屏障时被使用。4.如权利要求1所述的方法,其还包括: 使所述其它工作项在所述多个点中的第一点和第二点处同步,其中所述第一工作项在所述第一点和所述第二点处不到达所述屏障。5.如权利要求4所述的方法,其中使所述其它工作项同步包括: 对于到达所述屏障的所述其它工作项中的每个,确定它是否是所述其它工作项中的最后一个;以及 当所述其它工作项中的所述最后一个到达所述屏障时,将所有所述其它工作项解锁以重新开始处理。6.如权利要求5所述的方法,其中确定它是否是所述其它工作项中的最后一个包括: 比较跳越计数和访问计数的和与释放阈值,其中当所述跳越指令被执行时所述跳越计数递增,其中当工作项到达所述屏障时所述访问计数递增,且其中所述释放阈值对应于所述组中的工作项的数量。7.如权利要求4所述的方法,其中使所述其它工作项同步包括: 在所述第一点处使所述其它工作项同步; 部分重置所述屏障以仅使所述其它工作项同步;以及 在部分重置所述屏障以仅使所述其它工作项同步之后在所述第二点处使所述其它工作项同步。8.如权利要求7所述的方法,其中部分重置所述屏障以仅使所述其它工作项同步包括: 将与所述屏障相关的访问计数设置到指示没有工作项到达所述屏障的初始值,其中所述访问计数代表到达所述屏障的工作项的数量;以及 使跳越计数的值持久,其中当工作项发布屏障跳越指令时,所述跳越计数递增。9.如权利要求1所述的方法,其还包括: 通过来自所述组的任何工作项执行屏障重置指令;以及 响应于所述屏障重置指令,进一步重新配置所述屏障以要求来自所述组的所有工作项到达所述屏障,以便使所述...

【专利技术属性】
技术研发人员:李·W·豪斯本尼迪克特·R·盖斯特迈克尔·C·休斯顿迈克尔·曼特马克·莱瑟诺曼·拉宾布赖恩·D·恩柏林
申请(专利权)人:超威半导体公司
类型:发明
国别省市:美国;US

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

1