ExpressiveProgrammingForGraphicsProcessingUnits (EPGPU) is a CeePlusPlus library for embedding parallel OpenCl code inside a C++ program.
See http://www.cs.uaf.edu/sw/EPGPU/
The author is Orion Lawlor who has also written CudaMpi.
About the challenges:
- Modern hardware systems present enormous parallelism—at the instruction level (superscalar), vector level (SIMD), thread level (SMT), core level (SMP), and across the network—yet modern software such as C++ or C# is primarily serial.
- Building usable abstractions for parallel software has been identified as a key challenge for 21st century computer science.
- .. embedding provides shared data structures, typesafe kernel invocation, and the ability to more naturally interleave CPU and GPU functions
About Embedding in C++:
- Because OpenCL is implemented as a library, not a compiler, it is more difficult to provide a variety of basic features. But C++ provides an extremely rich set of tools for building domain-specific languages embedded inside C++, including powerful preprocessor macros, and partial specialization of user-defined templates.
- Above Quotes from the following 8 page document:
CategoryCpp ParallelProgrammingModel CategoryGpgpu