1. Introduction to supercomputing
2. Parallel computing and programming
3. Parallel algorithms
Group work: parallel sum
1. Working in supercomputers
1. Introduction to MPI
2. Point-to-point communication I
3. Point-to-point communication II
4. Non-blocking point-to-point communication
5. Collective communication I
6. Collective communication II
7. User-defined communicators
8. Further MPI topics
Parallel debugging
Message Passing Game
Extra: One-sided communication
Extra: Persistent communication
Extra: Process topologies
Extra: User-defined datatypes
1. Introduction to hybrid programming
2. Introduction to OpenMP
3. OpenMP library routines and data sharing
4. OpenMP reductions and execution control
5. Using MPI with OpenMP threads
6. OpenMP tasks
1. Introduction to parallel I/O
2. MPI-IO and I/O libraries
3. HDF5
1. Introduction to GPU programming
2. HIP, CUDA and GPU kernels
3. Memory Hierarchy and Memory Accesses in GPUs
4. Streams, events, and synchronization
5. Memory allocations, access, and unified memory
6. SYCL Essentials & More
7. Multi-GPU programming and HIP/OpenMP/SYCL + MPI
8. OpenMP offloading
1. Introduction to AI
2. Parallel Machine Learning
1. Introduction to Application Performance
2. GPU performance optimization
3. MPI performance analysis
4. Single node performance optimization
1. Testing software
1. How to build software?