gpt4 book ai didi

memory - CL_OUT_OF_RESOURCES 用于 1GB VRAM 的 200 万个 float ?

转载 作者:行者123 更新时间:2023-12-04 16:32:48 24 4
gpt4 key购买 nike

看起来 200 万个浮点数应该没什么大不了的,只有 8MB 的 1GB GPU RAM。我有时可以分配那么多,有时甚至更多,没有任何问题。当我执行 clEnqueueReadBuffer 时,我得到 CL_OUT_OF_RESOURCES,这看起来很奇怪。我能找出问题真正开始的地方吗? OpenCL 不应该在 clEnqueueReadBuffer 上像这样失败,对吗?应该是我分配数据的时候吧?除了错误代码之外,还有什么方法可以获得更多详细信息?如果我能看到 OpenCL 声明 CL_OUT_OF_RESOURCES 时分配了多少 VRAM,那就太酷了。

最佳答案

我刚刚遇到了和你一样的问题(花了我一整天的时间来解决)。
我相信有同样问题的人会偶然发现这一点,这就是我发布这个老问题的原因。

您可能没有检查内核的最大工作组大小。

这是你如何做到的:

size_t kernel_work_group_size;
clGetKernelWorkGroupInfo(kernel, device, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &kernel_work_group_size, NULL);

我的设备(2 个 NVIDIA GTX 460 和 Intel i7 CPU)支持的最大工作组大小为 1024,但是当我通过路径跟踪内核时,上面的代码返回大约 500。
当我使用 1024 的工作组大小时,它显然失败并给了我 CL_OUT_OF_RESOURCES 错误。

你的内核变得越复杂,它的最大工作组大小就会变得越小(或者至少我经历过)。

编辑:
我刚刚意识到你说的是“clEnqueueReadBuffer”而不是“clEnqueueNDRangeKernel”......
我的回答与 clEnqueueNDRangeKernel 有关。
抱歉我的错误。
我希望这对其他人仍然有用。

关于memory - CL_OUT_OF_RESOURCES 用于 1GB VRAM 的 200 万个 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988645/

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