https://hgpu.org/?p=9698
Generating Efficient Data Movement Code for Heterogeneous Architectures with Distributed-Memory