Haidl, M., Steuwer, M. , Dirks, H., Humernbrum, T. and Gorlatch, S. (2017) Towards Composable GPU Programming: Programming GPUs with Eager Actions and Lazy Views. In: Proceedings of the 8th International Workshop on Programming Models and Applications for Multicores and Manycores, Austin, TX, USA, 04-08 Feb 2017, ISBN 9781450348836 (doi: 10.1145/3026937.3026942)
|
Text
146597.pdf - Accepted Version 1MB |
Abstract
In this paper, we advocate a composable approach to programming systems with Graphics Processing Units (GPU): programs are developed as compositions of generic, reusable patterns. Current GPU programming approaches either rely on low-level, monolithic code without patterns (CUDA and OpenCL), which achieves high performance at the cost of cumbersome and error-prone programming, or they improve the programmability by using pattern-based abstractions (e.g., Thrust) but pay a performance penalty due to inefficient implementations of pattern composition. We develop an API for GPUs based programming on C++ with STL-style patterns and its compiler-based implementation. Our API gives the application developers the native C++ means (views and actions) to specify precisely which pattern compositions should be automatically fused during code generation into a single efficient GPU kernel, thereby ensuring a high target performance. We implement our approach by extending the range-v3 library which is currently being developed for the forthcoming C++ standards. The composable programming in our approach is done exclusively in the standard C++14, with STL algorithms used as patterns which we re-implemented in parallel for GPU. Our compiler implementation is based on the LLVM and Clang frameworks, and we use advanced multi-stage programming techniques for aggressive runtime optimizations. We experimentally evaluate our approach using a set of benchmark applications and a real-world case study from the area of image processing. Our codes achieve performance competitive with CUDA monolithic implementations, and we outperform pattern-based codes written using Nvidia’s Thrust.
Item Type: | Conference Proceedings |
---|---|
Status: | Published |
Refereed: | Yes |
Glasgow Author(s) Enlighten ID: | Steuwer, Dr Michel |
Authors: | Haidl, M., Steuwer, M., Dirks, H., Humernbrum, T., and Gorlatch, S. |
Subjects: | Q Science > QA Mathematics > QA75 Electronic computers. Computer science |
College/School: | College of Science and Engineering > School of Computing Science |
ISBN: | 9781450348836 |
Copyright Holders: | Copyright © 2017 The Authors |
First Published: | First published in Proceedings of the 8th International Workshop on Programming Models and Applications for Multicores and Manycores |
Publisher Policy: | Reproduced in accordance with the publisher copyright policy |
University Staff: Request a correction | Enlighten Editors: Update this record