The Python programming language has become more and more popular in Scientific Computing. In this course, we will talk about the best practices in Python and in scientific computing in general. We will also introduce the concept of concurrent and parallel programming, distributed programming, and GPU programming. During the hands-on session, you will experience how these are done in Python on the Dutch National Supercomputer Cartesius. You will also learn how to use libraries such as numba, PyCUDA and mpi4py.
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).
Convener:
Damian Podareanu
(SURFsara)
12:00 PM
Lunch
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.
Convener:
Damian Podareanu
(SURFsara)
2:30 PM
Coffee break
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.