gpt4 book ai didi

arrays - OpenCL 中不允许使用可变长度数组声明 - 为什么?

转载 作者:IT王子 更新时间:2023-10-28 23:37:45 24 4
gpt4 key购买 nike

我想在我的 OpenCL 内核中创建一个本地数组,其大小取决于内核的参数。这似乎是不允许的——至少对于 AMD APP。

你的经历有什么不同吗?也许只是APP?或者这里有什么理由?

编辑:我现在建议在 CPU 端代码中也应该允许可变长度数组,这是 C 标准委员会的不幸呼吁;但问题是存在的。

最佳答案

您可以动态分配本地 block 的大小。您需要将其作为内核的参数,并在调用 clSetKernelArg 时定义其大小。

定义示例:

__kernel void kernelName(__local float* myLocalFloats, ...)

主机代码:

clSetKernelArg(kernel, 0, myLocalFloatCount * sizeof(float), NULL); // <-- set the size to the correct number of bytes to allocate, but use NULL for the data.

在执行此操作之前,请确保您知道设备上的本地内存限制。调用 clGetDeviceInfo,并轮询 'CL_DEVICE_LOCAL_MEM_SIZE' 值。

关于arrays - OpenCL 中不允许使用可变长度数组声明 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995991/

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