Heterogeneous Computing with OpenCL: Revised OpenCL 1.2 Edition