Uniform High-Level Programming of Many-Core and Multi-GPU Systems
Philipp Kegel, Michel Steuwer, Sergei Petrovich Gorlatch · Advances in parallel computing · 2013
Application programming for modern heterogeneous systems which comprise multi-core CPUs and multiple GPUs is complex and error-prone. Approaches like OpenCL and CUDA are relatively low-level as they require explicit handling of parallelism and memory, and they do not offer support for multiple GPUs within a stand-alone computer, nor for distributed systems that integrate several computers. In particular, distributed systems require application developers to use a mix of programming models, e.g., MPI together with OpenCL or CUDA.