https://hgpu.org/?p=17761
Best Practice Guide - GPGPU