OpenCL使用工作组大小

OpenCL使用工作组大小,c,opencl,C,Opencl,在OpenCL中,如何知道运行时本地工作组的确切大小?clGetKernelWorkGroupInfo似乎只返回最大可能大小,请参阅 CL\U内核\U编译\U工作\U组\U如果您没有指定大小,上述文档的大小将给出(0,0,0)。您可以使用clGetKernelWorkGroupInfo查询工作组的最大可用大小: size_t max_available_local_wg_size; cl_int ret = clGetKernelWorkGroupInfo(kernel, device_id,

在OpenCL中,如何知道运行时本地工作组的确切大小?clGetKernelWorkGroupInfo似乎只返回最大可能大小,请参阅


CL\U内核\U编译\U工作\U组\U如果您没有指定大小,上述文档的大小将给出(0,0,0)。

您可以使用clGetKernelWorkGroupInfo查询工作组的最大可用大小:

size_t max_available_local_wg_size;
cl_int ret = clGetKernelWorkGroupInfo(kernel, device_id, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t),                 &max_available_local_wg_size, NULL);

不过,如果不手动设置值,实现将自行选择。通常,您可以通过profiler获得实际的工作组大小,profiler随供应商提供的OpenCL SDK提供。

此链接可能会帮助您:“如果您的应用程序不需要在工作项之间共享数据,请在对内核排队时将local_work_size参数设置为NULL。这使OpenCL驱动程序能够为内核确定最有效的工作组大小。“此外,此链接将非常有用@Tadek谢谢。因此,基本上这意味着程序将在编译时为您选择。无法知道此“已确定”大小是什么?可能是