I was using CodeXL to do some profiling and it kept saying:
Opencl Memory leak detected [Ref =1] Object created by clEnqueueNDRangeKernel
Eventually it was narrowed down to this line:
status = clEnqueueTask( myQueue, myKernel, 0, NULL, NULL) ;
After changing it to:
|status = clEnqueueTask( myQueue, myKernel, 0, NULL, &clEvent ) ;|
clReleaseEvent ( clEvent ) ;
The memory leak went away.
As per the specs, when passing in NULL no event object should be created, but it clearly was in this case.
I tried it on a 6950 and 280x, both using the 13.12 catalyst driver and they both have this issue.
clEnqueueNDRangeKernel( myQueue, myKernel, workDims, global_work_offset,(const size_t *)global_work_size, local_work_size, 0, NULL, NULL) ;
If I use this instead of clEnqueueTask it also runs into the same problem with a memory leak, which can be solved the same way.