Data-parallel irregular applications

Multicore systems are becoming increasingly prevalent. As a result, parallel programming is now a concern for more programmers than ever before. Unfortunately, writing correct, efficient parallel programs is a highly non-trivial task. This problem is exacerbated when the application to be parallelized is irregular (i.e., contains many pointer-based data structures). In fact, it has been an open question as to exactly how much parallelism is even available in irregular programs.

It is our belief that many irregular programs exhibit data parallelism. The programs perform computations on elements of worklists of various kinds. However, these worklists are irregular data structures, and the computations may traverse other irregular data structures as well. Thus, many of the techniques developed to handle data parallelism in regular (array- and matrix-based) programs are insufficient.

One of the fundamental obstacles when parallelizing irregular programs is the intractability of traditional parallelization analyses; the highly dynamic nature of these programs often makes any static approach to parallelization infeasible. Our belief is that parallelizing many irregular applications requires the use of optimistic parallelization, where work is executed speculatively in parallel, with the execution managed by a run-time to ensure correct behavior.

Parallelizing data-parallel irregular programs will require new programming models, compiler techniques and run-time systems. The Galois Project aims to provide these tools.

The Galois Project

Our work on the Galois project is underpinned by several key beliefs:

Thus, the goal of this project is to develop a programming model which makes it easy to write data-parallel irregular programs, and then efficiently execute them on multicore processors. Our programming model consists of (i) two simple syntactic concurrency constructs, (ii) an object model which allows for increased concurrency during parallel execution and (iii) a run-time system which supports the concurrency constructs and object model.

Using the Galois system, we are able to parallelize a range of data-parallel irregular applications, achieving significant speedups on algorithms which appear, prima facie, to have too many sequential dependences to be parallelizable. A full treatment of the system can be found in the paper: Optimistic Parallelization Requires Abstractions. Milind Kulkarni, Keshav Pingali, Bruce Walter, Ganesh Ramanarayanan, Kavita Bala and L. Paul Chew. PLDI 2007.

Ongoing research

Current avenues of research focus mainly on improving the efficiency of parallel execution. Our current projects include:

Publications: