This book describes the state-of-the-art computing devices and systems available, including multi-core CPUs, accelerators, such as GPUs, coprocessors, and clusters. It introduces approaches to parallelization using important programming paradigms, and covers the useful elements of the most popular APIs for programming parallel HPC systems.