gpt4 book ai didi

c++ - 每个计算单元的 OpenCl 最大工作项

转载 作者:太空狗 更新时间:2023-10-29 20:54:44 26 4
gpt4 key购买 nike

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

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

在 OpenCL 中:CL_DEVICE_MAX_WORK_GROUP_SIZE:1024

在 CUDA 中,它不要求内核信息来返回这个值。我需要 OpenCL 的等效函数。提前致谢。

最佳答案

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

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

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

关于c++ - 每个计算单元的 OpenCl 最大工作项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38233168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com