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.

  1. 1
    GitHub Icon

    What is SYCL

    For this first exercise you simply need to install a SYCL implementation and the SYCL Academy depend..

  2. 2
    GitHub Icon

    Enqueueing a Kernel

    In this first exercise you will learn how to enqueue your first kernel function to run on a device a..

  3. 3
    GitHub Icon

    Managing Data

    In this exercise you will learn how to create `buffer`s to manage data and `accessor`s to access the..

  4. 4
    GitHub Icon

    Handling Errors

    In this exercise you will learn how to handle synchronous and asynchronous exceptions. * * * ### 1..

  5. 5
    GitHub Icon

    Device Discovery

    In this exercise you will learn how to create a device selector that will choose a device for you to..

  6. 6
    GitHub Icon

    Data Parallelism

    In this exercise you will learn how add the values in two arrays and write the results to another ar..

  7. 7
    GitHub Icon

    Introduction to USM

    In this exercise you will learn how to find a suitable device for using the USM data management mode..

  8. 8
    GitHub Icon

    Using USM

    In this exercise you will learn how to use the USM API to write a SYCL application which performs a..

  9. 9
    GitHub Icon

    Asynchronous Execution

    In this exercise you will learn how to use different techniques for synchronizing commands and data...

  10. 10
    GitHub Icon

    Data and Dependencies

    In this exercise you will learn how to create a data dependency data flow graph in both the buffer/a..

  11. 11
    GitHub Icon

    In Order Queue

    In this exercise you will learn how to create a fixed data flow using an in- order `queue`. * * *..

  12. 12
    GitHub Icon

    Advanced Data Flow

    In this exercise you will learn how to use temporary data and avoid unnecessary copies to and from t..

  13. 13
    GitHub Icon

    Multiple Devices

    In this exercise you will learn how to create two separate queues and then split a task across two d..

  14. 14
    GitHub Icon

    ND Range Kernels

    In this exercise you will learn how to enqueue ND range kernel functions. * * * ### 1.) Use items..

  15. 15
    GitHub Icon

    Image Convolution

    In this exercise there is no task, simply familiarize yourself with the image convolution reference..

  16. 16
    GitHub Icon

    Coalesced Global Memory

    In this exercise you will learn how to apply row-major and column-major when linearizing the global..

  17. 17
    GitHub Icon

    Vectors

    In this exercise you will learn how to use `vec` to explicitly vectorized your kernel function. * *..

  18. 18
    GitHub Icon

    Local Memory Tiling

    In this exercise you will learn how to cache global memory into local memory in tiles according to w..

  19. 19
    GitHub Icon

    Further Optimisations

    In this exercise you will learn how to use different work-group sizes in order to compare the perfor..

  20. 20
    GitHub Icon

    Matrix Transpose

    This exercise uses GPU specific features in order to gain good GPU performance. While code will run..

  21. 21
    GitHub Icon

    More SYCL Features

    This section shows the use of some SYCL features in order to perform a vector reduce operation. `re..

  22. 22
    GitHub Icon

    Functors

    In this exercise you will learn how to use `functors` instead of lambda functions as kernels. * * *..