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..
ND Range Kernels
In this exercise you will learn how to enqueue ND range kernel functions. * * * ### 1.) Use items..
Image Convolution
In this exercise there is no task, simply familiarize yourself with the image convolution reference..
Coalesced Global Memory
In this exercise you will learn how to apply row-major and column-major when linearizing the global..
Vectors
In this exercise you will learn how to use `vec` to explicitly vectorized your kernel function. * *..
Local Memory Tiling
In this exercise you will learn how to cache global memory into local memory in tiles according to w..
Further Optimisations
In this exercise you will learn how to use different work-group sizes in order to compare the perfor..
Matrix Transpose
This exercise uses GPU specific features in order to gain good GPU performance. While code will run..
More SYCL Features
This section shows the use of some SYCL features in order to perform a vector reduce operation. `re..
Functors
In this exercise you will learn how to use `functors` instead of lambda functions as kernels. * * *..