Python has gained tremendous popularity in scientific computing owing to the extensibility of the language, the rich ecosystem and being a convenient languages for scientists to develop and prototype codes productively. While using Python may offer many ways to achieve the same result, finding the most efficient means to do so for better performance and scalability can be a challenge. This course is focused on some of the ways to optimise and parallel scientific Python codes, encompassing subjects such as performance analysis, efficient use of scientific libraries (e.g. NumPy), extending Python to use more efficient languages (e.g. Cython) to carry out multi-processing using threads and the Message Passing Interface (MPI) on HPC systems.
The 4-day course will cover the following topics:
- Efficient use of NumPy
- Performance Analysis
- Using Cython and optimisations
- Interfacing with external libraries
- Multi-processing using threads
- Parallel computing using mpi4py
- Extra optimisation exercises (common numerical algorithms) on HPC system
- Each participant is expected to have a basic knowledge of Python, including:
- basic data structures (lists, arrays, tuples, dictionaries)
- control structures (if-else statements, for/while loops)
- functions and modules
- Every participant is also expected to bring his/her own laptop to the course to carry out the hands-on exercises.
- Some prior experience/knowledge of NumPy and the C programming language will be useful but not strictly required.
Participation in the course is free of charge. Tea, coffee and light snacks will be provided during breaks. Lunch is NOT provided; there is a restaurant on-site as well as other eateries nearby.