在clEnqueueNDRangeKernel中使用global_work_offset

时间:2011-09-29 22:18:55

标签: 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范围。我尝试使用:

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

1 个答案:

答案 0 :(得分:2)

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

CL 1.0:

  

global_work_offset       当前必须是NULL值。在OpenCL的未来版本中,   global_work_offset可用于指定work_dim数组   无符号值,描述用于计算全局的偏移量   工作项的ID而不是始终以全局ID开头   offset(0,0,... 0)。

CL 1.1:

  

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

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