gpt4 book ai didi

opencl - CL_INVALID_WORK_GROUP_SIZE错误

转载 作者:行者123 更新时间:2023-12-04 07:57:57 27 4
gpt4 key购买 nike

我有这段代码,前段时间已经发布了一些代码。

今天,我在一个小的测试程序中使用typedef结构运行我的内核,但是clEnqueueNDRangeKernel给出了无效的工作组大小错误。根据khronos网站,这可能有3个原因。

  • 不能将全局工作量除以本地工作量。在我的代码中,这是可分割的。
  • 本地工作大小大于GPU可以处理的大小。我的本地工作大小为128,远远低于报告的最大值1024。
  • 与本地工作量有关NULL。我的本地工作量不是NULL,而是128。

  • 我已经在互联网上搜索了好几个小时,发现的大多数解决方案都涉及到查询 clGetKernelWorkGroupInfo以获取最大本地工作量。当我这样做时,它还会报告1024。我现在真的没办法了,有人可以帮忙吗? :)

    主要: http://pastebin.com/S6R6t3iF内核: http://pastebin.com/Mrhr8B4v

    最佳答案

    从您的pastebin链接中,我看到:

    #define MAX_OP_X 4
    #define MAX_OP_Y 4
    #define MAX_OP MAX_OP_X * MAX_OP_Y //aantal observer points
    #define MAX_SEGMENTEN 128 //aantal segmenten
    ...
    size_t globalSize = MAX_OP;
    size_t localSize = MAX_SEGMENTEN;
    ...
    errMsg = clEnqueueNDRangeKernel (commandQueue, kernel, 1, NULL, &globalSize, &localSize, 0, NULL, NULL);

    这意味着您要尝试使内核的全局大小为16,本地大小为128。几乎可以肯定这不是您想要的。请记住,全局大小是您要运行的工作项的总数,而本地大小是每个工作组的大小。例如,如果全局大小为1024x1024,本地大小为16x16,则将有4096个工作组,每个工作组包含256个工作项。这可能有效或无效,具体取决于您的计算设备。

    关于传递NULL本地大小:CL规范指出,如果您这样做,则CL实现可以选择所需的任何值作为本地工作组大小。理想情况下,它将尝试代表您做一些聪明的事情,但您无法保证。

    关于opencl - CL_INVALID_WORK_GROUP_SIZE错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996537/

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