【问题标题】:OpenCl maximum work-items per compute unit每个计算单元的 OpenCl 最大工作项
【发布时间】:2016-07-06 20:27:18
【问题描述】:

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

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

在 OpenCL 中: CL_DEVICE_MAX_WORK_GROUP_SIZE:1024

在 CUDA 中,它不要求内核信息返回此值。 我需要 OpenCL 的等效功能。 提前致谢。

【问题讨论】:

    标签: c++ opencl


    【解决方案1】:

    要获得每个计算单元的最大工作项数,请使用 clGetDeviceInfo() 和 CL_DEVICE_MAX_WORK_GROUP_SIZE 标志。这将返回“设备能够在单个计算单元上执行的工作组中的最大工作项数”,这几乎是您想要的。

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

    如果您使用 C++ 绑定,请分别对设备和内核对象使用 getInfo() 和 getWorkGroupInfo() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 2016-04-23
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多