Skip to content
Snippets Groups Projects

High-Performance Computing with Python @ JSC

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. It shows how Python can be used on parallel architectures and how to optimize critical parts of the kernel using various tools.

The following topics will be covered:

  • Short review of vectorized programming with NumPy
  • 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

This course is aimed at scientists who wish to explore the productivity gains made possible by Python for HPC.

Setting up the environment

After cloning or downloading the repository, you can create a Python environment similar to the one used on the HPC Systems at JSC based on the packages listed in hpcpy24.yaml1 using micromamba (Conda or Mamba should work, too, but have not been tested). First change into the directory with the material and then execute

micromamba create -f hpcpy24.yaml

This downloads about 1 GB of data and creates the environment hpc-python-2024. Activate the environment using

micromamba activate hpc_python_2024

You can now start Jupyter Lab

jupyter lab

and work with the notebooks.

Updating your copy of the repository

If you cloned the repository, you can pull updates by first committing the changes you made

git commit -a -m "add a short message describing your changes"

(replace add a short message describing your changes with a short message describing your changes) then pulling updates

git pull --rebase

  1. Windows user may want to change gcc to clang, gxx to clangxx, and gfortran to flang and the version from 12.3.0 to 18.1.7 in hpcpy24.yaml.