This repository contains the material used for the High-Performance Computing with Python
course, organized at CSCS on 6-8 July 2020.
- Interactive parallel programming with IPython
- Profiling and optimization
- Vectorization with NumPy and the SciPy stack
- Just-in-time compilation with Numba
- Distributed-memory parallel programming with Python and MPI
- Bindings to other programming languages
- 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)
- (09:00 - 09:10) Welcome
- (09:10 - 09:45) Introduction to Python for HPC
- (09:45 - 10:00) Python distributions and tools for HPC
- (10:00 - 10:15) Break
- (10:15 - 11:00) Introduction to JupyterLab
- (11:00 - 12:00) Vectorization: NumPy/SciPy stack
- (12:00 - 13:00) Lunch break
- (13:00 - 13:30) Profiling and memory management in Python
- (13:30 - 14:00) Just in time compilation with Numba (Part 1)
- (14:00 - 14:15) Break
- (14:15 - 15:00) Dask: task graphs
- (15:00 - 16:00) Dask: data structures
- (09:00 - 10:00) Just in time compilation with Numba (Part 2)
- (10:00 - 10:15) Break
- (10:15 - 12:00) Optimizing code with Cython
- (12:00 - 13:00) Lunch
- (13:00 - 14:00) Language bindings: F2PY
- (14:00 - 14:15) Break
- (14:15 - 15:00) Language bindings: CFFI
- (15:00 - 16:00) Q&A
- (09:00 - 10:00) Just in time compilation with Numba: GPU (Part 1)
- (10:00 - 10:15) Break
- (10:15 - 12:00) Just in time compilation with Numba: GPU (Part 2)
- (12:00 - 13:00) Lunch break
- (13:00 - 14:00) Computing on the GPU with CuPy
- (14:00 - 14:15) Break
- (14:15 - 15:00) Parallelizing workflows with IPyParallel and MPI4Py
- (15:00 - 15:15) Conclusions
- (15:15 - 16:00) Q&A