gpt4 book ai didi

c++ - OpenCl 代码在一台机器上工作,但我在另一台机器上得到 CL_INVALID_KERNEL_ARGS

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:55 28 4
gpt4 key购买 nike

我有以下代码,它在一台机器上运行良好,但是当我尝试在另一台配备更好显卡的机器上运行它时,我遇到了错误:

global[0] = 512; global[1] = 512;
local [0] = 16; local [1] = 16;
ciErrNum = clEnqueueNDRangeKernel(commandQueue, myKernel, 2, NULL, global, local, 0, NULL, &event);

错误:

Error @ clEnqueueNDRangeKernel: CL_INVALID_KERNEL_ARGS
Error @ clWaitForEvents: CL_INVALID_KERNEL_ARGS

知道问题出在哪里吗?

最佳答案

您传递的缓冲区对象有多大? __constant 参数是从单独的内存空间分配的,而不是从全局内存分配的,因此您可能用完了常量内存。

规范要求在完整配置文件中,设备必须至少支持 4 个总大小为 64kB 的 __constant 参数。在嵌入式配置文件中,它下降到 1kB。

您可以使用 clGetDeviceInfo 检查 CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 来查询可用的常量内存量。您的设备很可能支持的方式远远超过此最低要求。

在大多数情况下,如果可以的话,您应该使用常量缓冲区,因为通常它比全局内存快得多。

以后您应该就您的问题提供更多信息。因为如果错误是 CL_INVALID_KERNEL_ARGS,那么您真的需要知道内核的参数是什么。

关于c++ - OpenCl 代码在一台机器上工作,但我在另一台机器上得到 CL_INVALID_KERNEL_ARGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20562637/

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