The documentation for cudaHostAlloc() says that with cudaHostAllocMapped flag it allocates pinned memory on the host and "Maps the allocation into the CUDA address space". Does it mean that a mirror buffer is allocated on the device too? Either during cudaHostAlloc() or cudaHostGetDevicePointer() call.
Or does the device communicate with the host memory upon each access to the pointer returned by cudaHostGetDevicePointer() ?
This question is different from When to use cudaHostRegister() and cudaHostAlloc()? What is the meaning of "Pinned or page-locked" memory? Which are the equivalent in OpenCL? because I don't ask what the APIs are, when to use them or what is pinned memory. I ask specifically whether a mirror buffer is allocated on GPU or not.