0

我阅读了 OpenCL 规范,但没有找到全局 id 的分配方式。它是在 EnQueue 时间分配的,还是在运行时间分配的?

如果稍后,很容易看出具有较小 id 的工作项总是较早执行或与具有较大 id 的工作项同时(如果在同一个 warp 中)执行。如果在EnQueue时间分配,能保证执行顺序和全局id一致吗?

4

1 回答 1

3

OpenCL 不能保证工作组的执行顺序,因此您的算法不应依赖于此。

为了给你一个具体的例子来说明这种假设是如何失败的,想象一个内核中有一个依赖于数据的分支。在一个工作组中,可能需要占用分支的两侧,而在另一个工作组中,只需要占用一侧。后一个工作组将首先完成,即使它可能与前一个工作组同时开始。

于 2012-08-24T23:26:05.107 回答