/summerschool

CSC Summer School in High Performance Computing

Primary LanguageC++OtherNOASSERTION

Current maintainer In relation to lecture by
youwuyou (youwuyou@ethz.ch)
CSC Finnland

CSC Summer School in High-Performance Computing 2022

This is the material repository for the high-performance computing summer school by CSC - Finnish IT Center for Science.

Once forked to yourself, you can sync with the original repository (in case of updates) by running:

git pull https://github.com/csc-training/summerschool.git

Exercise Overview

Chapter 1: MPI

Topic Name Finished
Introduction Hello world ✔️
Point-to-point communication simple message exchange ✔️
Point-to-point communication simple parallel pi ✔️
Communication patterns message chain ✔️
Communication patterns parallel pi
Communication patterns broadcast and scatter
Collective operations collective operations ✔️
Custom communicators communicators and collectives
Heat equation parallel heat equation solver
Heat equation heat equation solver with sendrecv
Heat equation collective communication in heat equation solver
Simple derived types simple datatypes
advanced derived types communicating struct/derived type ✔️
advanced derived types modifying extent
process topologies cartesian grid process topology ✔️
process topologies message chain with Cartesian communicator
Non-blocking communication Non-blocking message chain
Non-blocking communication message chain with persistent communication
Heat equation heat equation with cartesian communicator
Heat equation non-blocking communication in heat equation
Heat equation 2D-decomposed heat equation

Chapter 2: Parallel I/O

Topic Name Finished
Intermediate level Parallel I/O with Posix
Intermediate level Simple MPI-IO
High-level HDF5 example
Bonus: Checkpoint + restart with MPI-IO

image

Chapter 3: Hybrid MPI/OpenMP

Topic Name Finished
Intro OpenMP hello world ✔️
Intro OpenMP work sharing and vector addition ✔️
Library functions OpenMP library functions ✔️
Data sharing Data sharing and parallel regions ✔️
Data sharing race condition in parallel sum ✔️
Reductions and execution controls reduction ✔️
Reductions and execution controls execution controls ✔️
Heat equation fine grain parallelization
Heat equation coarse grain parallelization
Hybrid MPI+OpenMP programming hybrid hello world
Hybrid MPI+OpenMP programming multiple thread communication
OpenMP tasks simple tasking
OpenMP tasks Parallelizing Mandelbrot with tasks
OpenMP tasks Parallel Fibonacci
Hybrid heat equation hybrid heat equation

Chapter 4: GPU programming with OpenMP

Topic Name Finished
Intro to GPUs in HPC device query
Basics of OpenMP offloading Hello world ✔️
Basics of OpenMP offloading vector addition
Basics of OpenMP offloading simple offloading for Laplace equation
Controlling data movement dot product
Controlling data movement sum and dot product
Controlling data movement offloading the heat equation
Unstructed data unstructed data in heat equation
Device functions device functions
Interoperability with libraries using CUDA library
Asynchronous operations Asynchronous operations
Using multiple GPUS multi-GPU parallelization for heat equation

Chapter 5: GPU programming with HIP

Topic Name Finished
Basics of HIP programming hello world ✔️
Basics of HIP programming Kernel: saxpy ✔️
Basics of HIP programming Kernel: copy2d ✔️
Synchronisation and streams investigating streams and events ✔️
Memory management memory management strategies
Memory management unified memory and structs ✔️
Fortran and HIP Hipfort: saxpy ✔️
Multi-GPU programming vector sum on two GPUs without MPI ✔️
Multi-GPU programming ping-pong with multiple GPUs and MPI
Multi-GPU programming peer to peer device access
Multi-GPU programming Bonus: Heat equation with HIP

Others

for more theoretical aspects see my side-notes


Notes

  • Have fun!