High Performance Computing in Python
The high performance computing in Python (HPC) specialization course focuses on performance optimization of Python code.
We look into various ways to improve the performance of your Python code:
- using built in library functions in Numpy / Scipy instead of relying on loops
- single core optimization with libraries like Numba
- parallelization with different parallelization libraries like Dask
- Finding bottlenecks: Performance profiling
- Optimization of parallel code
Finally, we compare the improvements in performance by code optimization to the gains in speed due to newer, more performant hardware and run benchmarks on:
- a 2018 Core i7 8550U notebook processor with 4 cores and 8 threads
- a 2022 Ryzen 7950X desktop processor with 16 cores and 32 threads
The course is suited for people already familiar with Python and who are either already dealing with performance issues in their own codes or plan to develop a new code where maximum performance will be crucial. For beginners, this course can serve as an extension to the Python for scientists course or the Python for Biologists course.
The course is held in English and currently consists of 3 modules. Every module contains
- a 60-90 minute video lecture on moodle.training-scientists.de that the participants can watch when it suits them
- exercises for the participants to apply what they have learned
- a live Zoom tutorial to answer questions (90-120min)
After the last module the participants apply the course material to their own codes. The results are discussed in the fourth tutorial.
In total, the participants should plan to invest 13 to 21 hours.
- single core performance optimization
- performance profiling
- Introduction into parallelization
- which parallelization library to use?
- practical parallelization examples
- multi core performance profiling, finding bottlenecks
- code optimization