Intel oneAPI Base Training Modules
Learn the Essentials of Data Parallel C++

Module 0
Introduction to JupyterLab* and Notebooks.
Learn to use Jupyter notebooks to modify and run code as part of learning exercises.

Module 1
Introduction to DPC++
- Articulate how oneAPI can help to solve the challenges of programming in a heterogeneous world.
- Use oneAPI solutions to enable your workflows.
- Understand the DPC++ language and programming model.
- Become familiar with using Jupyter notebooks for training throughout the course.

Module 2
DPC++ Program Structure
- Articulate the SYCL* fundamental classes.
- Use device selection to offload kernel workloads.
- Decide when to use basic parallel kernels and ND Range Kernels.
- Create a host accessor.
- Build a sample DPC++ application through hands-on lab exercises.

Module 3
DPC++ Unified Shared Memory
- Use new DPC++ features like Unified Shared Memory (USM) to simplify programming.
- Understand implicit and explicit ways of moving memory using USM.
- Solve data dependency between kernel tasks in an optimal way.

Module 4
DPC++ Sub-Groups
- Understand advantages of using Sub-groups in DPC++.
- Take advantage of Sub-group collectives in ND-Range kernel implementation.
- Use Sub-group Shuffle operations to avoid explicit memory operations.

Module 5
Demonstration of Intel® Advisor
- See how Offload Advisor¹ identifies and ranks parallelization opportunities for offload.
- Run Offload Advisor using command line syntax.
- Use performance models and analyze generated reports.
Offload Advisor is a feature of Intel Advisor installed as part of the Intel(R) oneAPI Base Toolkit.

Module 6
Intel® VTune™ Profiler on Intel® DevCloud
- Profile a DPC++ application using Intel® VTune™ Profiler on Intel® DevCloud.
- Understand the basics of command line options in VTune Profiler to collect data and generate reports.

Module 7
DPC++ Library Utilization
Maximize productivity with this companion to Intel® oneAPI DPC++ Compiler providing an alternative for C++ developers.
OpenMP* Offload Basics

Module 0
Introduction to JupyterLab and Notebooks.
Learn to use Jupyter notebooks to modify and run code as part of learning exercises.

Module 1
Introduction to OpenMP Offload.
Articulate how oneAPI can help solve the challenges of programming in a heterogeneous world.
- Use oneAPI solutions to enable your workflows.
- Use OpenMP Offload directives to execute code on the GPU.
- Become familiar with using Jupyter Notebooks for training throughout the course.

Module 2
Manage Device Data
Use OpenMP constructs to effectively manage data transfers to and from the device.
- Create a device data environment and map data to it.
- Map global variables to OpenMP devices.

Module 3
OpenMP* Device Parallelism
- Explain basic GPU architecture.
- Use OpenMP offload work-sharing constructs to fully utilize the GPU.