Accelerate Complex C++ Applications on Heterogeneous Compute Systems using Open Standards.
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
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.
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.
Communicate Issues via Discourse
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.