OpenCL C++
Advanced Micro Devices, 1 AMD, Sunnyvale, CA, USA
Sixth Workshop on General Purpose Processing Using GPUs (GPGPU-6), 2013
@inproceedings{GasterH13a,
author={Benedict R. Gaster and Lee Howes},
title={OpenCL C++},
booktitle={Proceedings of the Sixth Workshop on General Purpose Processing Using GPUs (GPGPU-6)},
publisher={ACM},
year={2013},
date={16 March 2013},
location={Houston, TX, USA}
}
With the success of programming models such as Khronos’ OpenCL, heterogeneous computing is going mainstream. However, these models are low-level, even when considering them as systems programming models. For example, OpenCL is effectively an extended subset of C99, limited to the type unsafe procedural abstraction that C has provided for more than 30 years. Computer systems programming has for more than two decades been able to do a lot better. One successful case in point is the systems programming language C++, known for its strong(er) type system, templates, and object-oriented abstraction features. In this paper we introduce OpenCL C++, an object-oriented programming model (based on C++11) for heterogeneous computing and an alternative for developers targeting OpenCL enabled devices. We show that OpenCL C’s address space qualifiers, and by implication Embedded C’s, can be lifted into C++’s type system. A novel application of C++11’s new type inference features (auto/decltype) with respect to address space qualifiers allows natural and generic use of the this pointer. We qualitatively show that OpenCL C++ is a simpler and a more expressive development platform than its OpenCL C counter part.
April 6, 2013 by hgpu