Topics covered in the course
- Advanced Python
- Python behind the scenes
- Python developer's Swiss army knife
- Debugging & profiling
- Python usage on HPC systems
- Python projects on an HPC system
- Python and SLURM
- Single-node parallelization – useful libraries and their limitations
- Numpy, Cython, Numba, Pandas, Dask, Tensorflow, CuPy
- Multi-node parallelization & GPUs
- Mpi4py
- Dask distributed
- Horovod: multi-GPU distribution for TensorFlow and Pytorch
DAY 1 – Monday, 27 November 2023
08:45 | Join in |
09:00 | Welcome, Motivation & Introduction |
===== | Advanced Python |
--------- | Python developer's Swiss Army knife |
09:15 | IDEs overview |
09:30 | Documentation & Type hints |
09:45 | Logging |
10:00 | Testing |
10:15 | Debugging |
10:30 | -- BREAK -- |
--------- | Python usage on HPC systems |
10:45 | Module & Spack |
11:00 | Virtual env |
11:30 | Conda |
12:00 | -- LUNCH BREAK -- |
13:00 | Apptainer (Singularity) |
--------- | Python and Slurm |
13:20 | A Slurm refresher |
13:40 | Slurm with module/spack, venv and conda |
13:55 | Slurm and Apptainer (Singularity) |
14:10 | Slurm and MPI |
14:35 | -- BREAK -- |
--------- | Benchmarking & Profiling |
14:50 | Benchmarking & Time measurements |
15:05 | Built-in profiling tools |
15:25 | Other profiling tools |
15:45 | -- BREAK -- |
16:00 | Q & A |
16:30 | End of first day |
DAY 2 – Wednesday, 29 November 2023
08:45 | Join in |
--------- | Python behind the scenes |
09:00 | Python runtimes: CPython, PyPy, Ironpython |
09:20 | Collections & Caching Overview |
10:00 | -- BREAK -- |
10:15 | Python datamodel: Objects, Special attributes & methods, Slots |
11:00 | Python datamodel: Inheritance, Metaclasses |
12:00 | -- LUNCH BREAK -- |
13:00 | Generators, Built-In Functions, List comprehensions & Lambdas |
13:30 | Garbage Collector |
13:45 | Integrating native code in python |
14:00 | -- BREAK -- |
===== | Single-node parallelization |
14:15 | Introduction: Definitions, Batch & Stream processing, ... |
--------- | Useful libraries and their limitations |
14:30 | NumPy |
15:00 | Numba |
15:30 | Cython |
15:45 | -- BREAK -- |
16:00 | Q & A |
16:30 | End of second day |
DAY 3 – Friday, 1 December 2023
08:45 | Join in |
--------- | Useful libraries and their limitations (cont.) |
09:00 | Pandas |
09:20 | Dask |
09:40 | TensorFlow |
10:10 | cuDF & cuPy |
10:30 | -- BREAK -- |
===== | Multi-node parallelization |
10:45 | Introduction to multi-node parallelization |
11:00 | mpi4py |
12:30 | -- LUNCH BREAK -- |
13:30 | Dask distributed & Dask-MPI |
14:30 | -- BREAK -- |
14:45 | Horovod: multi-GPU for TensorFlow and PyTorch |
15:45 | -- BREAK -- |
16:00 | Q & A |
16:30 | End of third day / End of course |