Heterogeneous Computing with OpenCL 2nd Edition