I'm using almost all the 9GB of memory on 3 7970 cards. All the memory is allocated as GPU regular device buffers using only the CL_MEM_READ/WRITE flags, no PC memory or pointers are given to OCL. The application transfers relatively small amounts of data using simple clReadBuffer and clWriteBuffer calls, it does no mapping. The largest buffers are not accessed from the PC host.
However, OCL will not properly allocate the device memory unless I leave about the same 9GB of free available PC memory, which consumes much needed PC resources.
Is there any way (flag, setting, chant, etc) to prevent OCL from reserving so much PC memory?
AMD's Programming Guide mentions that OCL often needs to cache buffers in PC memory,
but there is no indication it would need to in this case.
Note:I use GPU_MAX_ALLOC_PERCENT=95 to fully allocate the device memory.