

The wonderful team over at the SYCL Academy have created an entire curriculum that will get you started with the basics of SYCL and progressing into the more advanced features.
What is SYCL
For this first exercise you simply need to install a SYCL implementation and the SYCL Academy depend..
Enqueueing a Kernel
In this first exercise you will learn how to enqueue your first kernel function to run on a device a..
Managing Data
In this exercise you will learn how to create `buffer`s to manage data and `accessor`s to access the..
Handling Errors
In this exercise you will learn how to handle synchronous and asynchronous exceptions. * * * ### 1..
Device Discovery
In this exercise you will learn how to create a device selector that will choose a device for you to..
Data Parallelism
In this exercise you will learn how add the values in two arrays and write the results to another ar..
Introduction to USM
In this exercise you will learn how to find a suitable device for using the USM data management mode..
Using USM
In this exercise you will learn how to use the USM API to write a SYCL application which performs a..
Asynchronous Execution
In this exercise you will learn how to use different techniques for synchronizing commands and data...
Data and Dependencies
In this exercise you will learn how to create a data dependency data flow graph in both the buffer/a..
In Order Queue
In this exercise you will learn how to create a fixed data flow using an in- order `queue`. * * *..
Advanced Data Flow
In this exercise you will learn how to use temporary data and avoid unnecessary copies to and from t..
Multiple Devices
In this exercise you will learn how to create two separate queues and then split a task across two d..
Image Convolution
In this exercise you will learn how to apply row-major and column-major when linearizing the global..
Coalesced Global Memory
In this exercise you will learn how to use `vec` to explicitly vectorized your kernel function. * *..
Vectors
In this exercise you will learn how to cache global memory into local memory in tiles according to w..
Local Memory Tiling
In this exercise you will learn how to use different work-group sizes in order to compare the perfor..
Further Optimisations
This exercise uses GPU specific features in order to gain good GPU performance. While code will run..
Matrix Transpose
This section shows the use of some SYCL features in order to perform a vector reduce operation. `re..
More SYCL Features
In this exercise you will learn how to use `functors` instead of lambda functions as kernels. * * *..
Functors
In this exercise you will learn how to use the API of the oneMath library and perform a matrix multi..