Memory Thrashing with Large Buffer

I’ve just noticed a rather nasty behavior on Windows 7 concerning large buffers in OpenCL. When a buffer is large enough, the memory manager appears to keep wanting to evict it to system memory, resulting in a nasty case of transfer the buffer over PCIE, run a kernel, transfer it back to the CPU. This is despite there being enough memory for both the buffer and the baseline OS stuff to stay on the GPU at all times. GPU-z shows this behavior clearly, with the memory usage flipping back and forth between 150MB and 550MB consistently with each kernel invocation.

Is there a fix for this? Ping-ponging that 400MB buffer back and forth reduces performance greatly from the smaller problem size…

I’m running on a 295 GTX.