This update is mostly effort from @MarcWeber and @vcunat, now tested on real hardware making sure it works with multiple GPUs and opencl.