Parallel and GPU Programming in Python @SURF

WN-F201 (VU Campus - De Boelelaan)


VU Campus - De Boelelaan

W&N Building - De Boelelaan 1085A, 1081 HV Amsterdam

[IMPORTANT NOTE: This course will take place in the campus of the Vrije Universiteit at De Boelelaan in Amsterdam (room WN-F201) on the 23rd and on the 25th of November. There is no official course schedule on the 24th of November!!]


Would you like to obtain the best performance from your Python codes and get good scalability even in a supercomputer?

In this course you will learn about parallel programming using Python, a language has become more and more popular among researchers for its simplicity and the availability of specific programming libraries. In large compute systems it is essential to exploit heterogeneous architectures correctly, and here you will understand the different challenges and how to overcome them with different Python features for CPU and GPU platforms that have direct application for scientific computing.


In this course you will:

- Understand the limits and merits of parallel programming and its use with Python

- Implement code using different libraries for parallel programming on CPU and GPU, including numba, PyCUDA or mpi4py.

- Experience how to achieve high performance with Python using the supercomputing facilities at SURF


- Everyone interested in learning how to get high performance for Python codes


- Basic knowledge of Linux

- Basic knowledge of Python and use of Jupyter notebooks

You should have:

- Your own laptop with an up-to-date browser and a terminal emulator. The use of the operating systems Linux and macOS is preferred, but not mandatory. For Windows users we recommend to download MobaXterm (portable version) as terminal emulator.


This course is organized by SURF at the VU Campus in Amsterdam thanks to the collaboration with the local IT management, and it is framed in a series of other courses available at the VU. In case you are interested, please visit the page of the HPC Labs at the VU.

  • Wednesday, November 23
    • 9:00 AM 9:45 AM
      Welcome & Introduction
    • 9:45 AM 11:00 AM
      Introduction to Python and parallel computing
    • 11:00 AM 11:15 AM
      Coffee break 15m
    • 11:15 AM 12:00 PM
      Hands-on: Introduction to efficient Python CPU programming
    • 12:00 PM 1:00 PM
      Lunch 1h
    • 1:00 PM 2:00 PM
      Parallel programming for CPU architectures in Python I
    • 2:00 PM 2:15 PM
      Coffee break 15m
    • 2:15 PM 3:15 PM
      Parallel programming for CPU architectures in Python II
    • 3:15 PM 3:30 PM
      Coffee break 15m
    • 3:30 PM 5:00 PM
      Hands-on: distributed memory programming with mpi4py
  • Friday, November 25
    • 9:00 AM 10:00 AM
      Introduction to GPU computing
    • 10:00 AM 10:15 AM
      Coffee break 15m
    • 10:15 AM 11:15 AM
      GPU Programming with Python
    • 11:15 AM 12:15 PM
      Hands-on: GPU Programming with Python
    • 12:15 PM 1:15 PM
      Lunch 1h
    • 1:15 PM 2:45 PM
      Advanced GPU Programming with Python
    • 2:45 PM 3:00 PM
      Coffee break 15m
    • 3:00 PM 5:00 PM
      Hands-on: Advanced GPU Programming with Python