Exploiting atomic operations in Galois graph applications

Project contacts: Andrew Lenharth and Gurbinder Gill

Project description: Writing efficient parallel programs to perform graph analytics is challenging.  Galois is a system for simplifying the job of implementing high-performance graph analytics applications. The programmer writes sequential C++ code using Galois set iterators and data structures, and the Galois runtime executes this code in parallel.

In the Galois programming model, active nodes are nodes in the graph where computation must be performed and the computation at an active node is called an activity. Activities are executed speculatively with transactional semantics. In the default mode, Galois ensures transactional semantics by using logical locks. In some programs, it is safe to implement transactional semantics using lock-free operations on graph elements, and this usually gives better performance than using logical locks. The Lonestar benchmark suite, a highly efficient Galois graph applications library you can download from our website, uses  lock-free operations for some graph applications to get the best performance.

In our current system, programmers must identify and code the atomic operations explicitly when it is safe to use them.  The goal of this project is to build a compiler (LLVM plugin) that takes sequential Galois C++ code as input and inserts explicit lock-free atomic operations on graph elements, where applicable, to eliminate the need  for logical locks.

Project deliverables and deadlines
  1. (Nov 1) A clear statement in English describing your project proposal.
  2. (Nov 8) A collection of Galois code examples with transactional semantics and with Lonestar-style atomic operations. By this time, you must also have a clear understanding of when it is safe to use lock-free operations to implement transactional semantics.
  3. (Dec 6) A compiler that takes Galois code as input and generates code with atomic operations when this is legal.
  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 Mendez-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.