gpt4 book ai didi

OpenCL 荒谬的 CL_OUT_OF_RESOURCES

转载 作者:行者123 更新时间:2023-12-02 07:05:13 24 4
gpt4 key购买 nike

我的 CL 程序:

constant double LATTICEWEIGHTS[19] = { 1.0 / 36.0,

.....

1.0 / 36.0 };

void
computeFeq(
double density,
double3 velocity,
double* feq) {
for (int i = 0; i < 19; ++i) {
feq[i] = LATTICEWEIGHTS[i]; // Line 1
//feq[i] = 2.0 * LATTICEWEIGHTS[i]; // Line 2
}
}

__kernel void
Kernel(){

.....

double density;
double3 velocity;
double feq[19];

computeFeq(density, velocity, feq);
}

这段代码有效。但如果我注释第 1 行并取消注释第 2 行,则 CL_OUT_OF_RESOURCES 将立即发生。

有什么想法吗?

我使用 NVIDIA GTX 670M 进行测试。

最佳答案

这似乎是错误的,但首先要检查一些事情:寄存器的使用。 Nvidia GPU 支持详细输出选项。将其传递给 clBuildProgram,然后检查构建日志。像这样的事情:

clBuildProgram(program, 1, &device_id, "-cl-nv-verbose", NULL, NULL);

这记录在cl_nv_compiler_options下扩大。在 CUDA 文档中查找您设备的最大寄存器数。可能发生的情况是,工作项 block 所需的寄存器总数超过单个 SM/SMX 中可用的寄存器总数,从而导致错误。

如果寄存器使用不是问题,那么可能是某处的内存访问越界。我不知道错误消息没有暗示这一点,但我以前遇到过这样的错误。这样的错误可能存在于任何地方,而且更难发现。

关于OpenCL 荒谬的 CL_OUT_OF_RESOURCES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633727/

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