C++ OpenCl每个计算单元的最大工作项数

C++ OpenCl每个计算单元的最大工作项数,c++,opencl,C++,Opencl,我正在编写一个OpenCL代码,以找到一个最佳的工作组大小,从而在GPU上拥有最大的占用率。为此,我需要一个函数,返回每个计算单元的最大工作项数 基本上,我是从一个CUDA代码中推导出来的,我想要一个与maxthreadsemultiprocessor等效的。 在CUDA中,这些是设备查询返回的值: 每个多处理器的最大线程数:2048 每个块的最大线程数:1024 在OpenCL中: CL_设备最大工作组大小:1024 在CUDA中,它不要求内核信息返回此值。 我需要一个OpenCL的等价函数。

我正在编写一个
OpenCL
代码,以找到一个最佳的工作组大小,从而在GPU上拥有最大的占用率。为此,我需要一个函数,返回每个计算单元的最大工作项数

基本上,我是从一个
CUDA
代码中推导出来的,我想要一个与
maxthreadsemultiprocessor
等效的。 在CUDA中,这些是设备查询返回的值: 每个多处理器的最大线程数:2048 每个块的最大线程数:1024

在OpenCL中: CL_设备最大工作组大小:1024

在CUDA中,它不要求内核信息返回此值。 我需要一个OpenCL的等价函数。
提前感谢。

要获得每个计算单元的最大工作项数,请与CL\U设备\u最大工作\u组大小标志一起使用。这将返回“设备在单个计算单元上能够执行的工作组中的最大工作项数”,这正是您想要的

最佳工作组大小不仅取决于设备,还取决于所使用的特定内核。为此,您可以使用带有CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE标志的函数。这“返回启动时工作组大小的首选倍数”,这是一个“性能提示”

如果使用C++绑定,则分别使用GETIOFER()和GETWorkGROUPFION()方法,分别使用设备和内核对象。