i have a collection of cl_mem buffers which i want to make part of a single kernel execution. what i've done so far was making an array of cl_mem:
cl_mem ArrayOfBuffers = new cl_mem[NumberOfBuffers];
(and create the mem from arrays of floats)
then, i set it as kernel argument like:
clSetKernelArg(kernel, 0, sizeof(cl_mem*), (void *)&ArrayOfBuffers)
However i've a problem when getting it into the kernel, where I have:
__kernel void kernel_job(__global float** Array)
but the compiler crashes with error: kernel arguments can't be declared with types bool/half/pointer-to-pointer. How can i "receive" it into the kernel?
I really want to avoid running one kernel per buffer. The problem is that i have hundreds of buffers, which would mean hundreds of kernel calls, thus lots of overhead.