OpenCL clEnqueueNDRangeKernel work_dim VS global_work 数组元素

OpenCL clEnqueueNDRangeKernel work_dim VS global_work array elements

我是 OpenCL 的新手,我正在尝试理解这段代码:

size_t global_work1[3]  = {BLOCK_SIZE, 1, 1};
size_t local_work1[3]  = {BLOCK_SIZE, 1, 1};

err = clEnqueueNDRangeKernel(cmd_queue, diag, 2, NULL, global_work1, local_work1, 0, 0, 0);

因此,在 clEnqueueNDRangeKernel 中指定了内核的 2 维(work_dim 字段),这意味着:

以及为什么在 global_work1local_work1.

中有三个元素时在队列指令中指定维度为 2

你在告诉 CL: "Run this kernel, in this queue, with 2D and these global/local sizes"

CL 仅获取参数的前两个维度,而忽略第三个维度。

关于一维和二维的区别。有none。由于作为 1D 启动的 OpenCL 内核不会在 get_global_id(1)get_global_id(2) 调用时失败。他们只会 return 0。所以除了提示内核可能支持更大尺寸的第二维参数(即:512x128)

外,根本没有区别