[发明专利]用于工作项同步的方法和系统有效
申请号: | 201280053875.7 | 申请日: | 2012-10-31 |
公开(公告)号: | CN103917959B | 公开(公告)日: | 2017-11-14 |
发明(设计)人: | 李·W·豪斯;本尼迪克特·R·盖斯特;迈克尔·C·休斯顿;迈克尔·曼特;马克·莱瑟;诺曼·拉宾;布赖恩·D·恩柏林 | 申请(专利权)人: | 超威半导体公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 上海胜康律师事务所31263 | 代理人: | 李献忠 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 工作 同步 方法 系统 | ||
技术领域
本发明大致涉及工作项同步。
背景技术
图形处理单元(GPU)通常包括理想地适合于在并行数据流上执行相同的指令的多个处理元件,如在单指令多数据(SIMD)设备中的情况或在数据并行处理中的情况。在很多计算模型中,中央处理单元(CPU)起主机或控制处理器的作用,并不干涉其它处理器(例如GPU)的专用函数,例如图形处理。
多核CPU(其中每个CPU具有多个处理核心)为与在GPU上可用的那些函数类似的专用函数(例如图形处理)提供处理能力。多核CPU或GPU的一个或多个计算核心可以是同一裸片(例如AMD FusionTM)的部分,或可选地在不同的裸片(例如具有NVIDIA GPU的Intel XeonTM)中。最近,具有CPU和GPU(例如CellSPETM、Intel LarrabeeTM)两者的特征的混合核心被提出,用于通用GPU(GPGPU)型计算。GPGPU型的计算主张使用CPU来主要执行控制代码并将性能关键数据-并行代码卸载到GPU。GPU主要用作加速器。多核CPU和GPGPU计算模型的组合包括CPU核心和作为加速器目标的GPU核心两者。很多多核CPU核心具有在很多领域中与GPU可比较的性能。
为具有CPU和GPU的异构计算平台开发了几个框架。这些框架包括斯坦福大学的BrookGPU、NVIDIA的计算统一设备架构(CUDA)和被称为科纳斯组织的行业协会的OpenCL。OpenCL框架提供用户可创建用于GPU的应用的C型开发环境。OpenCL使用户能够例如指定用于将一些计算(例如数据-并行计算)卸载到GPU 的指令。OpenCL也提供编译器和运行时间环境,其中代码可在异构或其它计算系统内被编译并执行。
由OpenCL、CUDA和很多低级GPU中间语言体现的计算模型有时被称为单指令多线程(“SIMT”)。在SIMT模型的频繁使用的实施中,使用在矢量上的硬件掩模组的SIMD执行用于模拟比在硬件中可获得的更精细粒度的线程。
为了有效地利用计算模型(其中CPU和GPU都可用于很多类型的代码的执行),很多灵活的线程同步模型是需要的。当与不是传统图形处理任务的工作项一起使用时,在OpenCL中可用的常规工作项同步可能效率较低。例如,尽管在图形处理任务中的各自并发性工作项可能常常没有歧异,但是在CPU相关的应用中,执行的歧异可能相对较高。在OpenCL中提供的同步模型单独地不足以处理工作项的这样的动态行为。
在OpenCL中,在工作组内的工作项可被同步。在工作组内,可发布屏障(barrier)指令,其具有下列语义:在工作组中的所有工作项必须在任何工作项可前进而经过屏障之前到达屏障。“屏障”阻挡到达它的所有进程,直到上面提到的语义被满足。它接着释放被阻挡的进程以重新开始它们各自的处理。然而,在OpenCL和其它类似的常规框架中,在控制流中的屏障使用被严重限制。
图1A示出使用单个工作项(在图1A中被称为内核(kernel))以将值加载到组共享存储器空间中,其它工作项可从该存储器空间得到加载的值。加载值的工作项以及工作组中的其它工作项被阻止越过屏障前进,直到组中的所有工作项都到达屏障。
将值加载到组共享存储器中的上述操作也可从库函数内完成,从内核代码调用库函数。图1B示出包括屏障指令的库函数。图1C是调用库函数的内核。图1C中的代码示出阻挡调用相应库的所有工作项直到指定的工作项将数据加载到共享区域的操作。
图1D示出一个示例,其中将对屏障的调用放置在库内部可导致不正确的操作。例如,调用包括来自具有条件(其中条件之一没有对库函数的调用)的内核的屏障指令的库函数可导致死锁。这是因为屏障只在一组的所有工作项都到达它时才释放,然而一个或多个工作项(其条件未被满足)将根本不到达屏障。
而且,在OpenCL的工作项同步框架中,执行内核的工作组中的工作项必须在任何工作项被允许继续执行之前执行屏障指令。屏障指令必须被执行内核的工作组中的所有工作项遇到(即,在指令流中到达)。如果屏障指令在条件语句内部,则所有工作项必须进入条件即任何工作项进入条件语句并执行屏障。如果屏障指令在循环内部,则所有工作项必须在任何工作项被允许越过屏障继续执行之前针对循环的每次迭代执行屏障指令。这些限制可限制系统和编程员最佳地利用处理资源的能力。
因此所需要的是实现工作项同步的更灵活和有效的使用的方法和系统。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于超威半导体公司,未经超威半导体公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201280053875.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电加热吸蝇装置
- 下一篇:一种五谷虫工厂化养殖方法及饲料