A portable high-productivity approach to program heterogeneous systems
The exploitation of heterogeneous resources is becoming increasingly important for general purpose computing. Unfortunately heterogeneous systems require much more effort to be programmed than the traditional single or even multi-core computers most programmers are familiar with. Not only new concepts but also new tools with different restrictions must be learned and applied. Additionally many of these approaches are specific to one vendor or device resulting in little portability or rapid obsolescence for the applications built on them. Open standards for programming heterogeneous systems such as OpenCL contribute to improve the situation but the requirement of portability has led to a programming interface more complex than that of other approaches. In this paper we present a novel library-based approach to programming heterogeneous systems that couples portability with ease of use. Our evaluations indicate that while the performance of our library called Heterogeneous Programming Library (HPL) is on par with that of OpenCL the current standard for portable heterogeneous computing the programming effort required by HPL is 3 to 10 times smaller than that of OpenCL based on the authors' implementation of five benchmarks.