我的全局工作大小为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.
答案 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设备和驱动程序。