The course focuses on parallel programming with the Message Passing Interface (MPI), OpenMP and CUDA. A general introduction into HPC and its benefits will be presented and the different parallel programming paradigms will be duly explained allowing participants to write parallel applications that can fully exploit modern HPC hardware. The course will take place between January 31 and February 4, 2022, and is free of charge for all.
Description:One of the key advantages of using HPC is the possibility to do a parallelisation of the problem. In terms of products analysis, problem parallelisation means efficiently dividing a large problem into multiple smaller ones and analysing each of them separately, thus raising the level of detail and speeding up the necessary calculation times. Participants will be introduced to the three dominating programming models that are employed on today’s modern HPC hardware. On clusters and distributed memory architectures, parallel programming with the Message Passing Interface (MPI) is the dominating programming model, whereas OpenMP can be used on shared memory (i.e., on one CPU or on the CPUs of one node of a cluster) and CUDA helps to exploit the capabilities of GPUs.
Target audience:The training is intended for students, researchers, engineers, data scientists and others that are interested to learn parallel programming using different approaches and hence are interested to learn it in a way to fully exploit the capabilities of modern HPC systems of today and of tomorrow. The number of involved students from each country (Austria, Czech Republic, Italy, Slovenia) is limited to 10.
Prerequisite knowledge:Participants should be familiar with programming in either C/C++ or Fortran. Only for the MPI part Python is offered as a third option. Furthermore, they should be able to work on the Linux command line. No specific experience with supercomputing systems is necessary.
Workflow:The course will take place as a hybrid/online event, using remote connection to the VSC-3 cluster (all participants will get a temporary training user account).
Skills to be gained:At the end of the course the student will be able to:
- Be familiar with the components of an HPC cluster
- Understand the main parallelisation principles
- Take advantage of shared and distributed memory systems as well as accelerators
- Write parallel programs using MPI, OpenMP and CUDA
- Parallelise serial programs by means of MPI, OpenMP and CUDA
- Combine MPI with OpenMP or MPI with CUDA
- Fully exploit the capabilities of modern HPC systems