Opencl 在clEnqueueNDRangeKernel中使用全局_work_偏移量

Opencl 在clEnqueueNDRangeKernel中使用全局_work_偏移量,opencl,Opencl,我的全局工作大小为1000,但我只希望执行200到1000之间的内核 size_t global_work_size = 1000; size_t global_work_offset = 200; clEnqueueNDRangeKernel(cpu_queue, kernel [0], 1, &global_work_offset, &global_work_size, NULL, 0, NULL, NULL); 问题是,即使我指定了偏移量,它也会计算整个0-1000范围。

我的全局工作大小为1000,但我只希望执行200到1000之间的内核

size_t global_work_size = 1000;
size_t global_work_offset = 200;
clEnqueueNDRangeKernel(cpu_queue, kernel [0], 1, &global_work_offset, &global_work_size, NULL, 0, NULL, NULL);
问题是,即使我指定了偏移量,它也会计算整个0-1000范围。我尝试使用:

size_t global_work_offset [1] = {200}; but still no luck. 

您应该注意到CL 1.0和1.1中该参数之间的差异:

第1.0条:

全局工作偏移量 当前必须为空值。在OpenCL的未来版本中, 全局工作偏移量可用于指定工作尺寸的数组 描述用于计算全局偏移量的偏移量的无符号值 工作项的ID,而不是全局ID始终从 偏移量(0,0,…0)

第1.1条:

全局工作偏移量 全局工作偏移量可用于指定工作尺寸的数组 描述用于计算全局偏移量的偏移量的无符号值 工作项的ID。如果全局工作偏移量为空,则全局ID开始 在偏移量(0,0,…0)处

因此,请检查您是否有CL 1.1设备和驱动程序