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
3. MPI programming practices
4. Collective communication
5. Collective reductions
6. Non-blocking communication
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 parallel I/O
2. MPI-IO and I/O libraries
3. HDF5
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 GPUs in HPC
2. OpenMP offloading: introduction
3. OpenMP offloading: data movement
4. OpenMP offloading: unstructured data regions
5. OpenMP offloading: device functions
6. OpenMP interoperability with libraries and HIP
1. HIP and GPU kernels
2. Synchronization, streams, and asynchronous operations
3. Memory allocations, access, and unified memory
4. Fortran and HIP
5. Multi-GPU programming and HIP/OpenMP + MPI
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?