【发布时间】:2014-07-29 03:55:14
【问题描述】:
我对 open cl 和工作项感到困惑。假设我的设备可以同时运行 128 个工作项。但是,我提供了 2 个工作组,每个工作组有 64 个工作项。两个组会同时执行,还是会在组串行执行时有 64 个线程处于空闲状态?
【问题讨论】:
标签: opencl
我对 open cl 和工作项感到困惑。假设我的设备可以同时运行 128 个工作项。但是,我提供了 2 个工作组,每个工作组有 64 个工作项。两个组会同时执行,还是会在组串行执行时有 64 个线程处于空闲状态?
【问题讨论】:
标签: opencl
如果您将全局大小为128x1x1 和本地大小为64x1x1 的单个内核排入队列,那么将有两个工作组,它们可以同时运行。每个组都可以在单独的计算单元上执行,因此如果您的硬件上有两个计算单元,您可以并行运行这两个组。
如果您的本地大小对于硬件来说太大,因此每个计算单元中没有足够的处理元素,那么每个工作组将被分成子组。这些子组将“串行”执行。请注意,“串行”不一定是描述执行的最佳方式,因为实际上可能会发生上下文切换。这意味着一个子组可以开始工作,提出内存请求,然后切换到另一个子组以便它可以开始。假设上下文切换很便宜(例如,在 GPU 上),这可能是隐藏访问全局内存时的一些延迟的有效方法。
【讨论】: