Python for High Performance Computing

Description: Python has numerous advantages over traditional compiled languages like C and Fortran, and it is seeing increasing adoption in the scientific community. For example, it allows the programmer to write working code quickly, allowing faster prototyping of new methods. However, despite its advantages, there are challenges associated with using Python in a High Performance Computing (HPC) environment. Most significantly, a “vanilla” Python program can be much slower than an analogous compiled language program. This course will teach the student about various strategies to make a Python program run faster. It will cover using tools like NumPy, which give the Python programmer easy access to highly efficient numerical libraries. For cases where a library is not available, the course will cover Cython and other tools which compile Python code. The course will also preview briefly some of the methods which make it possible to run parallel Python programs.

Instructor: Pawel Pomorski, SHARCNET, University of Waterloo.

Prerequisites: Some programming experience with Python will be useful, though not essential if the student has experience with another programming language.