Heterogeneous Computing With Opencl by David R. Kaeli, Benedict Gaster & Lee Howes