The aim of the book is to introduce the reader into the OpenCL technology. First we give a short overview of OpenCL's history, then go through the elements of the OpenCL API and demonstrate their usage with short sample codes. The OpenCL C language, used to write the codes running on OpenCL supporting devices, is also described. After the overview of the OpenCL specification, several case studies are discussed to demonstrate the usage of OpenCL in practice. In the case studies the codes are optimized step-by-step to show the reader how to write efficient code with OpenCL. In the last chapters the OpenCL extensions, the interoperability of OpenCL and other technologies, and the closely related CUDA and WebCL technologies are shortly discussed.