I recently bought Radeon HD 7870 and am studying on OpenCL programming on Linux.
Device driver version is CAL 1.4.1741.
When test my programs, I found that two programs demading almost all global memory work normally without errors.
In my assumption, because a program occupies the global memory and not yet terminates,
the second program I execute later cannot use GPU and returns an error.
However, there is no error and both work correctly.
When I was doing similar things in my old NVIDIA GPU, it returns out of memory error.
What makes this difference? Does Radeon support automatic memory swap to host memory? or is it a bug?
When you allocate a buffer in OpenCL you do not allocate GPU memory at all, you merely allocate memory within the runtime's control. It is up to the runtime to allocate GPU memory when it needs to. The runtime will move data in and out as it is able to and when it makes sense. It's not really anything to do with the specific GPU at all.