: Andrew Lenharth and Gurbinder Gill
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
- (Nov 1) A clear statement in English describing your
- (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.
- (Dec 6) A compiler that takes Galois code as input and
generates code with atomic operations when this is legal.
- (Dec 6) A project report, written like an ACM conference
paper, that summarizes the work you did.
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.
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.
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.