/PythonHPC

PythonHPC

Primary LanguageJupyter NotebookBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

This repository contains the material used for the High-Performance Computing with Python course, organized at CSCS on 6-8 July 2020.

The course covers the following topics:

  • 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

Course Instructors:

  • Dr. Rafael Sarmiento (Computational Scientist, CSCS)
  • Dr. Tim Robinson (Computational Scientist, CSCS)
  • Dr. Theofilos Manitaras (Computational Scientist, CSCS)
  • Dr. Vasileios Karakasis (Group Lead, CSCS)

Agenda

Monday, July 6, 2020

  • (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

Tuesday, July 7, 2020

  • (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

Wednesday, July 8, 2020

  • (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