Python is increasingly used in high-performance computing projects. It can be used either as a high-level interface to existing HPC applications and libraries, as embedded interpreter, or directly. This course combines lectures and hands-on sessions.
In the course has been shown how Python can be used on parallel architectures and how to optimize critical parts of the kernel using various tools.
The following topics have been covered:
- Interactive parallel programming with IPython
- Profiling and optimization
- High-performance NumPy
- Just-in-time compilation with Numba
- Distributed-memory parallel programming with Python and MPI
- Bindings to other programming languages and HPC libraries
- Interfaces to GPUs