Python has tremendous popularity in scientific computing owing to the language extensibility, rich ecosystem and convenience for scientists to develop and prototype codes productively. While using Python may offer many simpler 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 focuses on ways to optimise and parallel scientific Python codes, encompassing subjects such as performance analysis, efficient use of scientific libraries (e.g. NumPy), using extended Python languages like Cython, interfacing with C-libraries and utilising multi-processing strategies like Message Passing Interface (MPI) on HPC systems.
The course, split over 3 afternoons of 3 hours each, will cover the following topics:
- Efficient use of NumPy
- Performance Analysis
- Single core optimisation with Cython
- JIT compilation with numba
- Interfacing with external C libraries
- Parallel computing using threading and mpi4py
Participation in the course is free of charge for both academia and industry.
This course will be conducted remotely via Zoom (meeting details will be sent to registrants at the start of the course) with short in-class exercises. There will be additional longer exercises to try out between sessions. The course will be split over the following 3 afternoon sessions;
- Day 1: Mon 22 March 2021, 13:00-16:00 (GMT)
- Day 2: Wed 24 March 2021, 13:00-16:00 (GMT)
- Day 3: Fri 26 March 2021, 13:00-16:00 (GMT)
You will only need a web browser to carry out the practical exercises.
Each participant is expected to have a basic knowledge of Python, including:
- Basic syntax
- Data structures (lists, arrays, tuples, dictionaries)
- Control structures (if-else statements, for/while loops)
- Functions and modules
Some prior experience/knowledge of NumPy will be useful but not strictly required.