"Heterogeneous Computing with OpenCL teaches OpenCL and parallel programming for complex systems that may include different types of hardware: Central Processing Units (CPUs), Digital Signal Processors (DSPs), Graphic Processing Units (GPUs) and Accelerated Processing Units (APUs). Designed to work on multiple platforms and with wide industry support, OpenCL will help you more effectively program for a heterogeneous future.
This book teaches OpenCL and parallel programming for complex systems with various device architectures, including multi-core CPUs, GPUs, and Accelerated Processing Units (APUs). The revised edition covers the latest enhancements in OpenCL 2.0, such as shared virtual memory to enhance programming flexibility and reduce resource-consuming data transfers, dynamic parallelism to alleviate processor load and prevent bottlenecks, and improved imaging support with OpenGL integration. Designed for multiple platforms, OpenCL facilitates effective programming for a heterogeneous future. Authored by experts in parallel computing and OpenCL, the book delves into memory spaces, optimization techniques, extensions, debugging, and profiling. It features multiple case studies and examples that illustrate high-performance algorithms, work distribution across heterogeneous systems, and embedded domain-specific languages, providing hands-on OpenCL experience for tackling fundamental parallel algorithms. Updated content addresses the latest developments in memory handling, parallelism, and imaging support. The book also explains principles and strategies for learning parallel programming with OpenCL, covering abstraction models and thorough application testing and debugging, along with example code for image analytics, web plugins, particle simulations, video editing, and performance optimization.