https://hgpu.org/?p=6354
Experiences with Achieving Portability across Heterogeneous Architectures