OpenCL工作项利用率

时间:2014-07-28 18:58:00

标签: opencl

我对open cl和work items感到困惑。假设我的设备可以同时运行128个工作项。但是,我提供了2个工作组,每个工作组有64个工作项。两个组是否同时执行,或者64个线程是否空闲,因为这些组是串行执行的?

1 个答案:

答案 0 :(得分:2)

如果您将具有全局大小128x1x1和本地大小64x1x1的单个内核排入队列,那么将有两个工作组可以同时运行。每个组都可以在单独的计算单元上执行,因此如果硬件上有两个计算单元,则可以并行运行这两个组。

如果您的本地大小对于硬件来说太大,那么每个计算单元中没有足够的处理元素,那么每个工作组将被拆分为子组。这些子组将按顺序执行"。请注意"连续"不一定是描述执行的最佳方式,因为实际上可能发生上下文切换。这意味着一个子组可以开始工作,发出内存请求,然后切换到另一个子组以便它可以开始。假设上下文切换很便宜(例如,在GPU上),这可以成为隐藏访问全局内存的一些延迟的有效方法。