I am working on 9600 GT. Running DeviceQuery it shows that:
Concurrent Execute and Copy support: Yes
Host Pinned Memory Mapped Support: NO
I am confuse now since I am using cudaMemcpyAsync (for Concurrent Execute and Copy) which uses pinned memory and it is working fine.
What I think is that in the above query the answers should be YES in both place.
Any pointers here?
Thanks in advance
Pinned memory is a host-side restriction on CPU/OS memory management… it basically forces a block of allocated memory to stay in RAM… the OS is not allowed to swap it out or remap it. The two advantages of this are lower maximum latency (since the memory is never swapped, it will ALWAYS be available) and also DMA access (since the memory is never swapped, the addresses are static and don’t need to be checked before access). The disadvantage is you’ve reduced the OS’s flexibility for memory management. In the (fairly common) case where you want to pin a lot of memory, you can really hurt host performance if you’ve pinned a sizeable fraction of your physical RAM size.
Memory Mapped support (also known as “zero copy”) allows the GPU to allocate part of its device memory space as being special. Accessing that range will cause the device to issue PCIe requests to fetch or push the memory from the HOST. It requires pinned memory so those mappings will be known ahead of time.
So memory mapping and pinned memory are different things. Memory mapping requires pinned memory.
The 9600 supports pinned memory, but not memory mapping.