gpt4 book ai didi

计算正确的工作组数量及其大小 OpenCL

转载 作者:行者123 更新时间:2023-11-30 15:13:26 25 4
gpt4 key购买 nike

我是 OpenCL 新手,我正在尝试理解 Apple here 编写的这个示例程序。 .

该程序的目标是计算输入数组中每个元素的平方并将结果写入新数组中。

您可以看到输入数组的维度为:1024。工作组的数量为 1024,每个工作组的大小为最大 CL_KERNEL_WORK_GROUP_SIZE。

如果内核中没有 get_local_id() 调用,谁能解释一下在每个工作组中使用这么多工作项的意义是什么?他们可以使用 1 作为每个工作组的大小吗?会有什么区别?

谢谢。

一些代码来说明这一点:

    // Get the maximum work group size for executing the kernel on the device
//
err = clGetKernelWorkGroupInfo(kernel, device_id, CL_KERNEL_WORK_GROUP_SIZE, sizeof(local), &local, NULL);


// Execute the kernel over the entire range of our 1d input data set
// using the maximum number of work group items for this device
//
global = count;
err = clEnqueueNDRangeKernel(commands, kernel, 1, NULL, &global, &local, 0, NULL, NULL);

最佳答案

您的全局工作大小以本地工作大小的 block 执行(理论上),如果您将本地工作组大小设置为 1,那么它将在每个本地工作组中仅执行 1 个线程。在 GPU 上,工作组与计算单元相匹配 - 如果工作组大小为 1,则您的 1 个线程可能会占用整个计算单元。这真的非常非常慢

关于计算正确的工作组数量及其大小 OpenCL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638336/

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