We are proud to be able to announce the availability of a set of open source learning materials for SYCL™, called "SYCL Academy." These materials have been developed by engineers at Codeplay and have been delivered during training sessions at events like CppCon and IWOCL. We are sharing them with the world to enable educators to teach and individuals to learn all about SYCL.
Codeplay, alongside many experts from the industry, has been instrumental in the definition and evolution of the SYCL standard from The Khronos® Group , and it's been very fulfilling to see the adoption of this open standard increasing. There are now active SYCL implementations from Intel, Xilinx, and Heidelberg University, as well as our own SYCL v.1.2.1 conformant implementation, ComputeCpp. You will find links to all the implementations on the sycl.tech SYCL community website.
Why Teach SYCL?
SYCL (pronounced ‘sickle’) is a royalty-free, cross-platform abstraction layer that enables code for heterogeneous processors to be written using completely standard C++. SYCL enables "single source" development, where C++ template functions can contain both host and device code to construct complex algorithms that use the acceleration of multi-core processors. This is a modern approach to heterogeneous programming in C++ that allows developers to write software that takes advantage of low powered but highly parallel hardware. Some examples of the C++ features supported in SYCL are templates, operator overloading, static polymorphism, and lambdas.
SYCL has been endorsed and adopted by many major semiconductor vendors, including Xilinx, Intel, Renesas, and Imagination Technologies. One of the most powerful features of SYCL is that the same code can be used to target a wide range of processors: You can target GPUs and FPGAs through to specialist AI processors, and the same code can be used with any of the SYCL implementations that are available. It's currently possible to target Intel GPUs and CPUs, Arm CPUs and GPUs, AMD GPUs, and Renesas IMP-X5 using SYCL - with capabilities for PowerVR GPUs soon to come.
If you are teaching at a university, you will also find that the skills your students learn by using SYCL are transferable, because it uses many common modern C++ features (such as lambdas and templates) and since it's all standard C++, any code that is written can be easily transitioned to other frameworks. Its programming model is also similar to CUDA(copyright), one of the most popular but a proprietary programming model.
A Truly Open Standard
The SYCL standard is defined by the industry, not by any single company, and it's possible for anyone to get involved in this process as part of the SYCL Working Group, as long as you are a member of Khronos. This means that you can bring your expertise to help shape the future specifications of the SYCL standard. You can find out more about joining Khronos here, where details of the membership are available.
The Learning Materials
The launch of SYCL Academy includes a set of presentations to help teach the fundamentals.
An Introduction to SYCL: A presentation deck introducing SYCL, and how it can be used for parallel programming.
Launching SYCL Kernels: A presentation deck explaining how to develop kernels using SYCL
Handling SYCL Errors: A presentation deck explaining how to catch and understand errors that might be emitted by a SYCL application
Managing Data in SYCL: A presentation deck explaining the memory model in SYCL and how buffers and accessors are used to manage this memory.
The team is working on some hands-on materials that can be used for practical learning of SYCL, since many developers learn best from writing code rather than reading about it. These will start from vector addition, the "hello world" of parallel programming, and move to more advanced topics such as data movement, data layout and matrix multiplication. In addition to this, we plan to record our experts delivering these presentations, making it possible to get even more context for these learning materials.
In the meantime, if you'd like a hands-on way to learn SYCL, you can follow the online interactive "Introduction to SYCL" tutorial on the tech.io website.
How Can You Help?
By making these materials open source, and using the reveal.js framework for the presentation materials, we are hoping that these can be expanded and maintained with the help of the community. We welcome pull requests on the SYCL Academy GitHub project with corrections and additions to these materials, so if you spot a small mistake simply fork the repo, make the change, and create a pull request on the SYCL Academy project. The process is the same if you want to add more materials. If you want to get in touch with us to discuss anything send a message to syclcodeplay.com.
Get Started With SYCL Academy
To get started, go to the SYCL Academy GitHub repository and take a look at the documentation that explains what is available and how to use it.
SYCL and Khronos are trademarks of the Khronos Group Inc. Imagination Imagination Technologies is a registered trademark of Imagination Technologies Limited. ARM is a registered trademark of ARM Limited (or its subsidiaries) in the EU and/or elsewhere. All rights reserved. AMD is a registered trademark of Advanced Micro Devices, Inc. Intel is a trademark of Intel Corporation in the U.S. and/or other countries.