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. Additionally emerging technologies such as utilising Python with Dask and GPUs will be covered.
The course, split over 3 afternoons of 3 hours each, will cover the following topics:
- NumPy, Performance Analysis
- Single core optimisation with Cython
- JIT compilation with numba
- Interfacing with external C libraries
- Parallel computing using mpi4py
- Dask and GPUs
Participation in the course is free of charge for both academia and industry.
Format
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: Wednesday 11th May 2022, 13:00-16:00 (GMT)
- Day 2: Thursday 12th May 2022, 13:00-16:00 (GMT)
- Day 3: Friday 13th May 2022, 13:00-16:00 (GMT)
You will be given a course account on ICHEC’s cluster, Kay to access JupyterHub. Full details on login information, as well as setting up environments and ssh tunnels to JupyterHub will be provided a number of days before the course.
Prerequisites
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 and array handling will be useful but not strictly required.