spectral

OpenCL memory management questions ?

Discussion created by spectral on Jul 23, 2010
Latest reply on Jul 23, 2010 by nou

 

Hi,

I have a few questions about the way we must handle the 'CL buffer'.

Case 1
------

I create a buffer with 'clCreateBuffer' the use it. Then I use it several times in a loop, something like this

cl_mem buffer = clCreateBuffer(...)
...
kernel->setArg(4, buffer);

...
for(int i=0; i < 1000; i++)
{
queue->enqueueNDRangeKernel(...)
}

Question 1 : Does my buffer is sent each time from CPU memory to GPU memory, or only once ?

Case 2
------

After I need to changes some informations in the buffer, then I do the following :

queue->Finish(); // Insure that the CL commands are completed !
delete buffer; // Release the buffer

Questions :

1) Does 'queue->Finish()' is enough to complete the OpenCL command ?

2) Should I use 'delete' or clReleaseMemObject ?

3) Then I must call 'buffer = clCreateBuffer(...)' and also 'kernel->setArg(4, buffer);' to set up the new buffer ?



Outcomes