如果我通过调用具有全局工作项偏移量的clEnqueueNDRangeKernel来运行内核,get_global_id是否返回偏移值,或者我应该手动偏移它?
size_t offset[1] = { some value};
clEnqueueNDRangeKernel(..., &offset[0], ...);
正确的方法是:int id = get_global_id(0)
或int id = get_global_id(0) + get_global_offset(0);
?
是的,get_global_id(0)
确实包括clEnqueueNDRangeKernel
中指定的偏移量。例如,如果将内核偏移量设置为50,将内核范围设置为100,则get_global_id(0)
将从50计数到149。