Translating Python code to C++ Galois/Abelian code

Project contacts: Andrew Lenharth and Roshan Dathathri

Project description:  Galois is a library and runtime that implements the operator formulation of algorithms. The programmer writes sequential C++ code using Galois iterators and data structures, and the Galois runtime executes this code in parallel. Abelian is a distributed-memory, heterogeneous version of Galois with a more restricted programming model.

At  present, writing Galois/Abelian programs requires familiarity with C++ and in particular,  with C++ template  programming. Some potential users of our system find this too complicated, and would prefer to program in Python while getting the benefit of the Galois/Abelian system.

The goal of this project is to build a compiler which takes Python programs implementing a suitable subset of the operator formulation as input, and translates these programs  into shared-memory Abelian C++ code. The input can be a restriction of the full operator formulation, and it may include compiler hints (like OpenMP pragmas) but the aim is to minimize what programmers need to specify. Operations on graph elements in the output should use explicit lock-free atomic operations whenever this is legal.

Project deliverables and deadlines
  1. (Nov 1) A clear statement in English describing your project proposal.
  2. (Nov 8) A description of the subset of the operator formulation you will implement in Python.
  3. (Dec 6) A compiler that takes Python code as input and generates Abelian C++ code.
  4. (Dec 6) A project report, written like an ACM conference paper, that summarizes the work you did.


  1. The tao of parallelism in algorithms. Keshav Pingali, Donald Nguyen, Milind Kulkarni, Martin Burtscher, M. Amber Hassaan, Rashid Kaleem, Tsung-Hsien Lee, Andrew Lenharth, Roman Manevich, Mario Méndez-Lojo, Dimitrios Prountzos, and Xin Sui. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '11, pages 12-25, 2011.
  2. A Lightweight Infrastructure for Graph Analytics. Donald Nguyen, Andrew Lenharth and Keshav Pingali. In Proceedings of ACM Symposium on Operating Systems Principles, SOSP '13, pages 456-471, 2013.
  3. Lonestar: A Suite of Parallel Irregular Programs Milind Kulkarni, Martin Burtscher, Calin Casçaval, and Keshav Pingali. In ISPASS '09: IEEE International Symposium on Performance Analysis of Systems and Software, 2009.