Using the SkelCL Library for High-Level GPU Programming of 2D Applications
Application programming for GPUs (Graphics Processing Units) is complex and error-prone, because the popular approaches — CUDA and OpenCL — are intrinsically low-level and offer no special support for systems consisting of multiple GPUs. The SkelCL library offers pre-implemented recurring computation and communication patterns (skeletons) which greatly simplify programming for single- and multi-GPU systems. In this paper, we focus on applications that work on two-dimensional data. We extend SkelCL by the matrix data type and the MapOverlap skeleton which specifies computations that depend on neighboring elements in a matrix. The abstract data types and a high-level data (re)distribution mechanism of SkelCL shield the programmer from the low-level data transfers between the system’s main memory and multiple GPUs. We demonstrate how the extended SkelCL is used to implement real-world image processing applications on two-dimensional data. We show that both from a productivity and a performance point of view it is beneficial to use the high-level abstractions of SkelCL.
Unable to display preview. Download preview PDF.
- 1.NVIDIA CUDA SDK code samples, Version 3.0 (February 2010)Google Scholar
- 2.NVIDIA CUDA API Reference Manual, Version 4.1 (2012)Google Scholar
- 3.Enmyren, J., Kessler, C.: SkePU: A multi-backend skeleton programming library for multi-gpu systems. In: Proc. of HLPP 2010 (2010)Google Scholar
- 4.Kirk, D.B., Hwu, W.W.: Programming Massively Parallel Processors - A Hands-on Approach. Morgan Kaufman (2010)Google Scholar
- 5.Munshi, A.: The OpenCL Specification, Version 1.2 (2011)Google Scholar
- 6.NASA. Blue marble: Land surface, shallow water, and shaded topography, http://visibleearth.nasa.gov/view.php?id=57752
- 7.University of Southern California SIPI Image Database. Girl (lena, or lenna), http://sipi.usc.edu/database/database.php?volume=misc
- 8.Rabhi, F.A., Gorlatch, S. (eds.): Patterns and skeletons for parallel and distributed computing. Springer (2003)Google Scholar
- 9.Steuwer, M., Kegel, P., Gorlatch, S.: SkelCL – A portable skeleton library for high-level GPU programming. In: 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops, IPDPSW, pp. 1176–1182 (2011)Google Scholar