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 |