About: ViennaCL is an open-source scientific computing library written in C++ and provides CUDA, OpenCL and OpenMP computing backends. It enables simple, high-level access to the vast computing resources available on parallel architectures such as GPUs and is primarily focused on common linear algebra operations (BLAS levels 1, 2 and 3) and the solution of large systems of equations by means of iterative methods with optional preconditioners.
Fossies Dox: ViennaCL-1.7.1.tar.gz ("inofficial" and yet experimental doxygen-generated source code documentation)
For many large applications C++ is the language of choice and so it seems reasonable to define C++ bindings for OpenCL.
The interface is contained with a single C++ header file cl.hpp and all definitions are contained within the namespace cl. There is no additional requirement to include cl.h and to use either the C++ or original C bindings it is enough to simply include cl.hpp.
The bindings themselves are lightweight and correspond closely to the underlying C API. Using the C++ bindings introduces no additional execution overhead.
For detail documentation on the bindings see:
The OpenCL C++ Wrapper API 1.1 (revision 04) http://www.khronos.org/registry/cl/specs/opencl-cplusplus-1.1.pdf
The following example shows a general use case for the C++ bindings, including support for the optional exception feature and also the supplied vector and string classes, see following sections for decriptions of these features.