ein*_*ica 7 memory arrays memory-management c99 opencl
我想在我的OpenCL内核中创建一个本地数组,其大小取决于内核的参数.似乎不允许 - 至少在AMD APP上.
你的经历与众不同吗?也许它只是APP?或者这里有一些理由吗?
编辑:我现在建议在CPU端代码中也应该允许变长数组,这是C标准委员会的一个不幸的调用; 但问题是.
您可以动态分配本地块的大小。您需要将其作为内核的参数,并在调用 clSetKernelArg 时定义其大小。
定义示例:
__kernel void kernelName(__local float* myLocalFloats, ...)
Run Code Online (Sandbox Code Playgroud)
主机代码:
clSetKernelArg(kernel, 0, myLocalFloatCount * sizeof(float), NULL); // <-- set the size to the correct number of bytes to allocate, but use NULL for the data.
Run Code Online (Sandbox Code Playgroud)
在执行此操作之前,请确保您了解设备上本地内存的限制。调用 clGetDeviceInfo,并轮询“CL_DEVICE_LOCAL_MEM_SIZE”值。
| 归档时间: |
|
| 查看次数: |
4375 次 |
| 最近记录: |