我阅读了OpenCL规范,但没有找到如何分配全局ID。是在EnQueue时间内分配,还是在运行时分配?
如果以后,很容易看到id较小的工作项总是更早或同时执行(如果在同一个warp中)具有更大id的工作项。如果在EnQueue时间内分配,我们能否保证执行顺序与全局ID一致?
答案 0 :(得分:3)
OpenCL无法保证工作组的执行顺序,因此您的算法不应该依赖于此。
为了给出一个如何假设失败的具体例子,想象一下内核中有一个数据相关的分支。在一个工作组中,可能需要采用分支的两侧,而在另一个工作组中,仅需要一侧。后一工作组将首先完成,即使它可能与前者同时启动。