Programming with oneAPI

This course was developed at the oneAPI Center of Excellence at UNN, which is supported by Intel.

Objective

The course focuses on high performance computing (HPC) using models, methods, and tools for parallel programming on Intel® platforms. The course is based on the new oneAPI heterogeneous programming model and its key component, the Data Parallel C++ (DPC++) open-source project that implements SYCL standards. DPC++ facilitates the development of portable HPC applications for CPUs, GPUs, FPGAs, and other devices.

Target Audience

The modular structure lets you adapt the content to different learning objectives and target audiences, and is appropriate for these audiences:

  • Undergraduate and graduate students with basic competency in programming, algorithms and data structures, C++, and parallel programming.
  • University professors who teach courses on parallel programming.
  • HPC professionals who want to learn about SYCL and DPC++.

Curriculum

Refer to the following draft versions of the curriculum, which are under continuous development, much like oneAPI itself. Some of the materials were prepared by our colleagues from Intel, to whom we are very grateful.

Module 1: Architectural Mechanisms that Affect Performance Concurrency levels

Lectures 1.1-1.2

Module 2. Operating systems. Aspects of concurrency

Lecture 2.1. Operating Systems. Processes, threads, scheduling

Lecture 2.2. Operating Systems. Concurrency & synchronization

Practice 2.3. Operating Systems

Module 3: Programming using SYCL/Data Parallel C++

Lectures 3.1-3.2. Elements of modern C++

Practice 3.3. Elements of modern C++

Lecture 3.4. oneAPI DPC++ Introduction

Practice 3.5. DPC++ Hello World

Lecture 3.6. DPC++ Kernel Execution

Practice 3.7. Double Integrals Computation with Riemann Sums

Lecture 3.8. DPC++ Memory Management

Practice 3.9. Solving Systems of Linear Equations by the Jacobi Method

Lecture 3.10. DPC++ Optimization Tips

Practice 3.11. General Matrix Multiplication

Module 4: OneAPI Software Libraries and Tools

Lecture 4.1. Libraries IPPoneVPLoneDAL

Lecture 4.2. Libraries oneMKLoneTBBoneDPL

Practice 4.3. OneAPI Video Processing Library (oneVPL)

Master class 4.4. Performance Optimization with Intel VTune

Master class 4.5. Performance Optimization with Intel Advisor

Master class 4.6. High performance neural network inference with the Intel Distribution of OpenVINO toolkit

Module 5. High performance computing and scientific modeling. Examples of using

Master class 5.1. Porting the particle movement module to DPC++. Analysis and optimization of performance on CPU and GPU using Intel VTune

Master class 5.2. Analysis of financial markets: calculation of the Black-Scholes formula. Analysis and optimization of performance on CPUs and GPUs using Intel VTune (under development)

Master class 5.3. Integration of Maxwell’s Equations by the FDTD Method. Analysis and optimization of performance on CPUs and GPUs (under development)

Master class 5.4. Integration of Maxwell’s Equations by the FDTD Method. Mixed Precision Computing on CPUs and GPUs (under development)