关于OpenCL的clEnqueueNDRangeKernel()

时间:2018-02-24 13:41:51

标签: parallel-processing opencl

说我有以下代码:

size_t globalSize = 4294967295; // (2^(32))-1
clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &globalSize, 0, 0, NULL, NULL);

这是不是意味着我希望内核执行4294967295次,OpenCL将决定最有效的工作组大小?

1 个答案:

答案 0 :(得分:2)

基本上是的,虽然你可能想要注意一些事情:

  • 请注意,&globalSize后面的参数是NULL指针,而不是整数值0,因为参数声明为`const size_t * local_work_size。
  • 在所有情况下,它都不一定是最有效的工作组大小;实现可能无法完全准确地预测。但是,他们应该选择合适/合理的尺寸。
  • 实现可能具有运行时限制,这可能导致内核执行过早中止,或者设备可能不支持抢占,可能导致系统冻结。因此,这种巨大的工作规模可能并不理想。