clGetKernelWorkGroupInfo-CL_KERNEL_WORK_GROUP_大小是否是OpenCL在ClenqueEndRange内核中未指定时使用的大小?

clGetKernelWorkGroupInfo-CL_KERNEL_WORK_GROUP_大小是否是OpenCL在ClenqueEndRange内核中未指定时使用的大小?,opencl,Opencl,我了解到,当在内核排队时没有指定工作组大小时,OpenCL会为我选择一个 e、 g: 有没有办法获得OpenCL在这里使用的工作组大小? OpenCL选择的工作组大小是由clGetKernelWorkGroupInfo返回的吗 提前谢谢你 在调用ClenqueueEndRangeKernel时指定大小。在这种情况下,重要的参数是“本地工作大小” “工作组中的工作项总数计算为本地工作大小[0]*…*本地工作大小[work\u dim-1]”CL\u内核\u全局工作大小是您可以获得的最大工作组大小,

我了解到,当在内核排队时没有指定工作组大小时,OpenCL会为我选择一个

e、 g:

有没有办法获得OpenCL在这里使用的工作组大小? OpenCL选择的工作组大小是由clGetKernelWorkGroupInfo返回的吗


提前谢谢你

在调用ClenqueueEndRangeKernel时指定大小。在这种情况下,重要的参数是“本地工作大小”


“工作组中的工作项总数计算为本地工作大小[0]*…*本地工作大小[work\u dim-1]”

CL\u内核\u全局工作大小是您可以获得的最大工作组大小,这取决于内核的内存需求

如果在执行内核时未指定工作组大小,OpenCL将尝试为您选择最佳的工作组大小,可能可能不为最大大小


事实上,只有当与设备的计算单元数量相比,您有很多工作项时,使用最大大小才是最佳的。

是的,但是我如何才能获得OpenCL为我选择的值?在clGetKernelWorkGroupInfo的文档中,它说:这为应用程序提供了一种机制来查询工作组大小,该工作组大小可用于在设备给定的特定设备上执行内核。OpenCL实现使用内核的资源需求(寄存器使用等)来确定工作组的大小。这里没有提到最大值谢谢你的回答,但这没有回答我的问题。这也没有真正回答我的问题。我不想知道如何找到一个好的工作组大小,我想知道如果我在clEnqueueNDRange内核中使用NULL作为local_work_size参数,如何获得OpenCL为某个内核/设备组合选择的工作组大小。我希望这能让它更清楚一点。它不适合你。当您调用ClenqueEndRangeKernel时,您可以通过告诉它要使用的项目数和组数来进行选择。OpenCL文档告诉我:OpenCL实现使用内核的资源需求(注册使用等)来确定此工作组的大小。因此OpenCL实现决定了工作组的大小。我是不是遗漏了什么?你现在找到问题的答案了吗?到目前为止,两个答案都没有说明如何找出OpenCL在运行时选择的工作组大小。
//don't know which workgroup size OpenCl will use!
clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &global_size, NULL, 0, NULL, NULL);