我很困惑clEnqueueNDRangeKernel()在多次调用时如何工作。假设我排队10次(例如,使用for循环),每次使用global_work_size = 32.假设内核采用了一个全局参数,它用get_global_id(0)填充。
我的问题是关于global_id的枚举。
我的期望: 编号最高的global_id将是(10 * 32-1)= 319。
实际发生的事情: 编号最高的global_id是(32-1)= 31。
有人可以解释每个工作项是如何逐步枚举的,因为进行了多次clEnqueueNDRangeKernel()调用吗?
答案 0 :(得分:5)
在每个clEnqueueNDRAngeKernel调用中创建的NDRange空间彼此独立,全局工作项ID在每次调用之间都不是连续的或相关的。