This repository contains the material used for the High-Performance Computing with Python course, organized at CSCS on 11-13 November 2019.
- 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
- Dr. Rafael Sarmiento (Computational Scientist, CSCS)
- Dr. Tim Robinson (Computational Scientist, CSCS)
- Dr. Theofilos Manitaras (Computational Scientist, CSCS)
- Dr. Vasileios Karakasis (Group Lead, CSCS)
- (10:00 - 10:45) Introduction to HPC and Python for HPC
- (10:45 - 12:00) Python distributions and tools for HPC
- (12:00 - 13:00) Lunch
- (13:00 - 14:45) Vectorization: NumPy/SciPy stack
- (14:45 - 15:00) Coffee break
- (15:00 - 15:45) Profiling and memory management in Python
- (15:45 - 17:00) Just in time compilation with Numba (1)
- (09:00 - 09:30) Just in time compilation with Numba (2)
- (09:30 - 10:15) Dask: task graphs
- (10:15 - 10:30) Coffee break
- (10:30 - 11:40) Dask: data structures; distributed
- (11:40 - 12:00) Visit to the Machine Room
- (12:00 - 13:00) Lunch
- (13:00 - 14:00) Language bindings: F2PY
- (14:00 - 14:45) Language bindings: CFFI (1)
- (14:45 - 15:00) Coffee break
- (15:00 - 15:30) Language bindings: CFFI (2)
- (15:30 - 16:00) Language bindings: other solutions
- (16:00 - 17:00) Optimizing code with Cython (1)
- (09:00 - 10:15) Optimizing code with Cython (2)
- (10:15 - 10:30) Coffee break
- (10:30 - 11:00) Fast evaluation of array expressions with NumExpr
- (11:00 - 12:00) Just in time compilation with Numba: GPU (1)
- (12:00 - 13:00) Lunch
- (13:00 - 13:30) Just in time compilation with Numba: GPU (2)
- (13:30 - 14:45) Computing on the GPU with CuPy
- (14:45 - 15:00) Coffee break
- (15:00 - 15:45) Parallelizing workflows with IPyParallel and MPI4Py
- (15:45 - 16:00) Conclusions