RDMA using GPUDirect

I have few clarification on RDMA using GPUDirect. I am primarily interested in copying data across devices within the same machine (For e.g. GPU and a NIC/storage card). I understand the idea of pinning GPU memory (given the virtual address) but I am not sure on how to use the GPU physical address to transfer data. Do I need to use the address to program the DMA controller in the device that I am interested in (NIC/storage) to copy to/from GPU? If this the case, any reference on how to achieve this would be really helpful? Are there any sample driver code that makes use of GPUDirect for zero-copy to/from GPU available?