This long-in-development work for the Linux kernel to implement Heterogeneous Memory Management allows device memory to be used inside any process transparently and without modification. The HMM patches also allow mirroring a process address space on a device. NVIDIA is one of the vendors working on support for their binary NVIDIA Linux driver and Nouveau open-source to make use of HMM with their latest GPUs.
Those unfamiliar with this Heterogeneous Memory Management work for the Linux kernel can see this earlier article along with a basic code example from NVIDIA for how it works with supporting malloc'd memory transparently across devices.
Those wanting to dig through these latest patches for HMM can find them on the kernel mailing list. Hopefully it won't be too much longer before finally seeing HMM support in the mainline Linux kernel.