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 and industry communities. 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) and Data Science environments. 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. There will be a short intro to Python (from Software Carpentry lessons) for students that don't know anything about Python. This course will cover tools like NumPy, which give the Python programmer easy access to highly efficient numerical libraries. The course will also preview briefly some of the methods which make it possible to run parallel Python programs, such as MPI and most recently the Spark API for Big Data.

Instructor: Jose Nandez, SHARCNET, Western University.

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