Open source code
Projects started by me
- PyToolz: A functional standard library for Python. Largely modeled after the Clojure standard library.
- LogPy: Logic programming in Python. An implementation of miniKanren.
- APE: Static scheduling of array operations onto heterogeneous hardware. Wraps an MPI layer around the Theano project. Uses tompkins (see below) for scheduling.
- Matrix Algebra in Maude: A tiny DSL for simplifying matrix expressions. It is written in the Maude system using rewrite rules. The eventual goal is to wrap the complexity of using BLAS and LAPACK into an easily expressible mathematical language.
- tompkins: A scheduler for computations on heterogeneous architectures including dependencies between tasks (represented as a DAG), and communication times. It solves the problem using an integer linear programming method described in an article by Tompkins. This code attempts to translate his math into clear Python code. Section and equation numbers are included. Uses the pulp library to describe the ILP.
- heft: Yet another scheduler for
computations on heterogeneous architectures. This time a heursitic that
runs much faster than
tompkinsand usually gives decent results. See the relevant Wikipedia article
- Shallow Water: A time dependent solver for the Shallow Water equations. This code uses numpy or Theano for low level computation. It was designed to demonstrate how mathematical solvers can be written clearly in a high-level language and use libraries for efficient low-level computation. This serves as an example of an important computation that can be well expressed using only array primitives.
Projects to which I contribute (and people actually use!)
- SymPy: A symbolic mathematics library within Python. Similar to Mathematica or Maple. I am the main contributor to the statistics and symbolic matrix expression modules.
- Theano: A library that bridges the symbolics-numerics gap. My contributions in Theano are largely based around graph manipulation, concurrency, MPI, and rudimentary scheduling algorithms.