High Performance Python
Princeton mini-course
By Henry Schreiner, with Jim Pivarski
Installation
To run on Binder, click this badge:
To install locally:
Download and install miniconda. On macOS with homebrew, just run brew cask install miniconda
.
Run:
conda env create -f environment.yml
from this directory. This will create an environment performance-minicourse
. To use:
conda activate performance-minicourse
And, to disable:
conda deactivate
or restart your terminal.
If you want to add a package, modify environment.yml
then run:
conda env update -f environment.yml
Lessons
- 00 Intro: The introduction
- 01 Fractal accelerate: A look at a fractal computation, and ways to accelerate it with Numpy changes, numexpr, and numba.
- 02 Temperatures: A look at reading files and array manipulation in Numpy and Pandas.
- 03 MCMC: A Marco Chain Monte Carlo generator (and metropolis generator) in Python and Numba, with a focus on profiling.
- 04 Runge-Kutta: Implementing a popular integration algorithm in Numpy and Numba.
- 05 Distributed: An exploration of ways to break up code (fractal) into chunks for multithreading, multiproccessing, and Dask distribution.
- 06 Tensorflow: A look at implementing a Negative Log Likelihood function (used for unbinned fitting) in Numpy and Google's Tensorflow.
- 07 Callables: A look at Scipy's LowLevelCallable, and how to implement one with Numba.
Class participants: please complete the survey here.