I've been doing some reading on zero copy support in the shared memory of CPU and GPU, and I have two questions raised by different forum posts I've seen.
1. Is this supported on Linux? According to http://devgurus.amd.com/thread/158885 it wasn't in March in 2.6.
I tried running BufferBandwidth sample and it looks that zero copy works there for APUs. Checkout the sample for knowing how to tranfer buffers in the most optimal way.
2. How much of an impact do the read-write permission flags passed to clCreateBuffer and clEnqueueMapBuffer/clEnqueueUnmapMemObject have on performance? The post at http://blogs.amd.com/developer/2011/08/01/cpu-to-gpu-data-transfers-exceed-15gbs-using-apu-zero-copy-path/ only discusses using CL_MEM_READ_ONLY, so does that mean it's generally only considered useful if the memory object in question is read-only on GPU and written on host side?
You can checkout APU Memory Model ppt. For more details, check the AMD APP Programming Guide. Although the guide says, that zero copy only works for windows, but I would guess it has not been updated.