ComputeCpp

Accelerate Complex C++ Applications on Heterogeneous Compute Systems using Open Standards.

View Release Notes

Bring C++ applications to a wide range of OpenCL accelerators using SYCL™

At Codeplay, we believe that the full performance of today's highly parallel devices should not be locked down to one platform, but be available to all programmers by using open standards. That is why we are giving developers free, early access to ComputeCpp™, our implementation of the SYCL™ open standard. The SYCL standard from the Khronos™ Group is for developers who want to take software written using C++ single-source programming models like CUDA® or C++AMP and port to a wide range of OpenCL™ devices. The current early-access ComputeCpp Community Edition Beta release provides pre-conformance SYCL v1.2 support for AMD® and Intel® OpenCL GPUs and CPUs. Further operating system and device support is on its way. This version will let developers work on acceleration of open-source C++ software such as TensorFlow, Eigen and the C++ 17 Parallel STL.


  • Growing Level of Architecture Support

    ComputeCpp enables C++ software & libraries to support a range of accelerator hardware supporting OpenCL SPIR.

  • Enabling Portable Algorithm Development

    The SYCL standard can be used to write higher-level C++ algorithms that can adapt to the performance characteristics of different devices.

  • Accelerate C++ Software with a Single Standard

    ComputeCpp provides SYCL: an open, royalty-free standard that can be implemented by any vendor.

  • Develop using the C++ 17 Parallel STL

    An open-source implementation of the C++ 17 Parallel STL is being developed & supported by ComputeCpp.

  • Why are we releasing the ComputeCpp
    Community Edition Beta?

    The next wave of innovation is in devices that can respond to their environment through embedded intelligence. This requires extremely complex processing within very low levels of power consumption. The only technologies that have demonstrated this massive performance-per-Watt capability are those that take the graphics processors used in video games and repurpose them for other uses. Most artificial intelligence software today is developed using the CUDA tools for NVIDIA® GPUs. The CUDA programming model is classed as a "single-source C++ programming model".

    At Codeplay, we have been working hard in the Khronos Group to define open standard programming models that work across multiple platforms and devices. For developers who want to take software written using a C++ single-source programming model like CUDA and port it to a wide range of devices, the SYCL standard from Khronos supports the acceleration capabilities of OpenCL. This lets developers take complex C++ software, like machine learning libraries, and bring it to the broad range of low-power OpenCL devices.

  • ComputeCpp Graph
  • ComputeCpp Graph
  • Who should download the
    ComputeCpp Community Edition Beta?

    This release is for C++ software developers who want to accelerate their software on existing OpenCL devices. If you are a semiconductor company who wants optimized SYCL support for your devices, then we have a range of solutions available for you.

    If you want to do things with this release, be prepared to be a pioneer. This release is pre-conformance, which means that we do not implement 100% of the SYCL specification. We currently only support Linux and two OpenCL implementations, by Intel and AMD, but wider support is coming. You may find that some unsupported implementations of OpenCL work with ComputeCpp. That's great, but we don't officially support anything else (yet). Most of the open-source libraries being ported to SYCL are not completed yet. This means that you should only check out some of these projects if you want to do some development yourself. We are building a big vision here: large, complex software highly accelerated on a wide range of processors, entirely by open standards. So, please be patient, or work with us.

Where to start?

We’ve compiled a collection of interesting articles, tutorials and code samples.

  • Visit sycl.tech Community Site

    We have created a SYCL community site, for all related projects, click here to visit it. If you do things with SYCL, you can post your projects, videos, news or tutorials to the site. This site is about everything related to SYCL, whether it uses ComputeCpp or not.

    Communicate Issues via JIRA

    If you have problems with ComputeCpp, you can report bugs or requests in our ticketing system by clicking here. We have a dedicated team waiting to respond to any question be it technical or otherwise.

    Learn More About SYCL

    Click here to read the full Khronos SYCL specifications. For this release of ComputeCpp, we support the SYCL v1.2 specification. SYCL v2.2 is still a provisional specification and thus unsupported, for now.

  • Try and Test Code Samples

    If you want to try code samples you can checkout the ComputeCpp SDK. The SDK contains a wide variety of different use cases, test cases and code samples showing you simple functionality to more complex.

    Watch the Khronos Tech Video

    One of the best ways to learn SYCL and the fundamentals of the technology is to watch the Khronos tech video. Click here to view the YouTube video.

    Track the TensorFlow Port

    You can take a look at progress on porting TensorFlow to OpenCL and SYCL, by clicking this bug status page here. If you want to work with us on this project, then feel free to contact us and get involved.

  • Try out Parallel STL

    The ISO C++ 17 standard will have a Parallel STL library in the spec. There is an implementation of the Parallel STL for SYCL being developed open-source, click here to view it now.

    Try Open-Source Alternatives

    Instead of ComputeCpp, you might want to check out the open-source SYCL implementation in-development triSYCL (it does not work on OpenCL devices, yet). Or another open-source project based on the SYCL specification: https://github.com/ProGTX/sycl-gtx.

    Try on Unsupported Hardware

    If you want to run ComputeCpp on an unsupported OpenCL platform, what you need to look out for is OpenCL v1.2 and above, along with the "SPIR" feature of OpenCL. You can try out pocl (no official support), Oclgrind or ComputeAorta.

  • We're Building an Ecosystem
    & We Need You

    The release of this ComputeCpp Beta is a major milestone on a journey to building out a complete open-standards-based ecosystem for parallel computing. Codeplay will continue to work hard on developing the tools to deliver open-standard programming models for parallel processors. ComputeCpp will be developed to be fully SYCL 1.2 conformant and then we will progress to implementing the SYCL v2.2 standard.

    We will be building out the ecosystem of C++ software on top of SYCL so that as much open-source C++ software as possible works on open standards for parallel processing, while following the C++ and Khronos Standards that we are active in contributing to. Codeplay has also been working with partner companies in the HSA Foundation to develop low-latency offloading, shared address space, profiling and debugging standards. This standards work will enable us to deliver more advanced and user friendly C++ for heterogeneous systems technologies in the future. At the same time, we are also working the ISO C++ standards bodies so that future versions of C++ may enable parallel execution on a range of OpenCL devices.