OpenCL is an open standard for writing high-performance kernels on heterogeneous multicore processors. Using OpenCL developers need only write one version of their application and run it on a numerous range of multicore devices that support OpenCL.OpenCL is however, a low-level language design to be a close to the silicon as possible, and the benefits of OpenCL come with a trade-off. Programmers writing in OpenCL must manually orchestrate data movement, manage the language extensions correctly and take care of structure layout issues.Offload™ C++ for OpenCL opens up C++ language capabilities that can be compiles to OpenCL through a unique compiler backend similar in principle to Offload™ C++ for OutputC. The Offload™ C++ compiler allows coders to use C++ to write code for OpenCL supported devices without low-level complications. Offload™ C++ handles data movement, scheduling and data structures automatically.
Offload™ C++ for OpenCL is still under development and we realize there are still several challenges to overcome in compiling full C++ to OpenCL, such as recursion, function pointers, virtual methods, and random access to host memory. Codeplay continue to strive for a full high-level C++ support interface to OpenCL, and progress so far is good.
What’s in it for me?
High level C++ programming capabilities for multicore processors with OpenCL support, with the full portability you would expect from OpenCL across all supported devices. Offload™ C++ for OpenCL doesn’t restrict programmers into only using a C++ model. Existing OpenCL code can be integrated fully into Offload™ C++ programs.