Hi,
I need to use a pointer inside of my kernel.
Is it possible allocate memory to a __global pointer that i put inside of my kernel?
Thanks,
Hi,
I need to use a pointer inside of my kernel.
Is it possible allocate memory to a __global pointer that i put inside of my kernel?
Thanks,
short answer: no
long answer: not yet
One trick I have seen is to allocate a large block of __global memory using the host API, then use their favorite heap allocation algorithm inside the kernel to carve this memory up into smaller chunks.
Hi,
Thanks, it works!
I haven’t had recourse to use this yet, so I haven’t tried it. However the CL_MEM_ALLOC_HOST_PTR option for clCreateBuffer() seems to set up precisely what you want: allowing a kernel executing on a device to allocate host accessible (host?) memory. Here’s the link to the specification:
http://www.khronos.org/registry/cl/sdk/ … uffer.html
Or am I misunderstanding something entirely?
That means you’re using a host pointer, or CPU memory, for your buffer. But right now you can’t allocate any new memory (or free it) from within a kernel, only through the application API calls. ljbade’s method is the best, until new OpenCL specs allow for dynamic memory within kernels.