Parallel and GPU Programming in Python @SURFsara

CET
Euler zaal (CWI)

Euler zaal

CWI

Science Park 123, 1098 XG Amsterdam
Description

Scope of the course

The Python programming language has become more and more popular among researchers for its simplicity and the availability of specific programming libraries, and at the same time the correct exploitation of heterogeneous architectures presents challenges for the development of parallel applications. In order to bring these two topics together, this course is focused on the use of Python on CPU and GPU platforms for scientific computing in general.

 

General description

The basic concepts of good programming practices in Python and general parallel programming will be introduced, and then GPU computing will be explained combining the essential theory concepts with hands-on sessions. The proposed exercises will be tested in the supercomputing facilities provided by SURFsara using Python with different programming libraries:

 

IMPORTANT INFORMATION: WAITING LIST

If the course gets fully booked, no more registrations are accepted through this website. However, you can be included in the waiting list: for that, please send an email to training@surfsara.nl and you'll be informed when a place becomes available.

Slides
  • Monday, December 10
    • 9:00 AM 9:15 AM
      Welcome & Introduction
      Convener: Zheng Meyer-Zhao (SURFsara)
    • 9:15 AM 10:30 AM
      Best practices in Scientific Computing & Python
    • 10:30 AM 10:45 AM
      Coffee break 15m
    • 10:45 AM 12:00 PM
      Introduction to efficient shared memory programming

      This lecture focuses on issues like parallelism and concurrency and dives a little bit into compiler theory by explaining concepts like just in time and ahead of time compilation in the context of a interpreted language (Python).

    • 12:00 PM 1:00 PM
      Lunch 1h
    • 1:00 PM 2:30 PM
      Hands-on: Introduction to efficient Python CPU programming

      This tutorial will teach how to apply certain theoretical concepts in Python by using the subprocess, multiprocessing, concurrent.futures, and asyncio libraries. Additionally, two examples are introduced illustrating the aot and jit concepts.

    • 2:30 PM 2:45 PM
      Coffee break 15m
    • 2:45 PM 3:30 PM
      Shared Memory Programming in Python: Numba, Cython and OpenMP

      The lecture is focused on introducing the three programming paradigms and contains Python code samples illustrating key concepts and performance.

    • 3:30 PM 3:45 PM
      Coffee break 15m
    • 3:45 PM 5:15 PM
      Hands-on: Numba, Cython

      Handson for the Numba, Cython, OpenMP lecture

  • Tuesday, December 11
    • 9:00 AM 10:30 AM
      Introduction to the GPU ecosystem
    • 10:30 AM 10:45 AM
      Coffee break 15m
    • 10:45 AM 12:00 PM
      Hands-on: Programming GPUs with Numba
    • 12:00 PM 1:00 PM
      Lunch 1h
    • 1:00 PM 2:30 PM
      Hands-on: Programming GPUs with PyCUDA
    • 2:30 PM 2:45 PM
      Coffee break 15m
    • 2:45 PM 3:30 PM
      Distributed Memory Architecture & MPI
    • 3:30 PM 3:45 PM
      Coffee break 15m
    • 3:45 PM 5:00 PM
      Hands-on: Introduction to mpi4py