1. Welcome to Nuuksio
1. Introduction to high-performance computing
2. Parallel computing
3. Working in supercomputers
Case study: Heat equation
1. Introduction to MPI
2. Point-to-point communication I
3. Point-to-point communication II
4. Non-blocking 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 OpenMP
2. Data environment of threads
3. Thread execution control
4. Reduction
5. Dynamic load balancing and tasks
6. Using MPI with OpenMP threads
7. Process and thread affinity
8. Next steps with OpenMP
1. Input/Output (I/O) in HPC
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. Kernel optimisation
7. OpenMP offload for GPU programming: Part 1
8. OpenMP offload for GPU programming: Part 2
9. Multi-GPU programming
1. Introduction to AI
2. Scaling PyTorch Models: Single vs Multi-GPU Training and Techniques
3. Understanding GPU Computational Capabilities
1. HPC software project design
2. HPC application deployment & production
1. Application performance
2. Profiling tools — perf and Scalasca
1. Closing