Concurrent SSA for general barrier-synchronized parallel programs

Static single assignment (SSA) form has been widely studied and used for sequential programs. This form enables many compiler optimizations to be done efficiently. Work on concurrent static single assignment form (CSSA) for concurrent programs is focused on languages that have limited, implicit barriers (e.g., cobegin/coend and parallel do). Recent programming languages for high-performance computing have general features for barrier/ phase synchronization - this is essentially a dual of mutual exclusion and arises mainly in constructing synchronous systems from asynchronous systems. X10 is one such language that has features for general purpose barriers. In X10, barriers are provided through features such as clocks and finish. Since barriers provide explicit synchronization, they offer an opportunity for reducing π interferences needed for CSSA. This paper provides a means for computing improved CSSA form of a program taking advantage of the general barriers present in it. Our algorithm is based on constructing a control-flow graph of the program and flow equations. The efficiency of analysis and optimizations for parallel programs depends on the number and complexity of π assignments in their CSSA representations. We demonstrate that our approach of computing CSSA form for languages supporting general barrier synchronization can improve the precision of intermediate representation for computing global value numbering and loop invariant detection.

[1]  George S. Avrunin,et al.  An efficient algorithm for computing MHP information for concurrent Java programs , 1999, ESEC/FSE-7.

[2]  Jens Knoop Eliminating Partially Dead Code in Explicitly Parallel Programs , 1998, Theor. Comput. Sci..

[3]  David A. Padua,et al.  Basic compiler algorithms for parallel programs , 1999, PPoPP '99.

[4]  Bernhard Steffen,et al.  Parallelism for Free : E cient and Optimal Bitvector Analyses for Parallel Programs , 1996 .

[5]  Jonathan Schaeffer,et al.  Concurrent SSA form in the presence of mutual exclusion , 1998, Proceedings. 1998 International Conference on Parallel Processing (Cat. No.98EX205).

[6]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[7]  Hanspeter Mössenböck,et al.  Single-pass generation of static single-assignment form for structured languages , 1994, TOPL.

[8]  Vivek Sarkar,et al.  Parallel Program Graphs and their Classification , 1993, LCPC.

[9]  Dennis Shasha,et al.  Efficient and correct execution of parallel programs that share memory , 1988, TOPL.

[10]  Katherine A. Yelick,et al.  Concurrency Analysis for Parallel Programs with Textually Aligned Barriers , 2005, LCPC.

[11]  Dirk Grunwald,et al.  Data flow equations for explicitly parallel programs , 1993, PPOPP '93.

[12]  James Hook,et al.  Static single assignment for explicitly parallel programs , 1993, POPL '93.

[13]  M. Wegman,et al.  Global value numbers and redundant computations , 1988, POPL '88.

[14]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[15]  John Reid On PCF parallel Fortran extensions , 1992, FORF.

[16]  Keith D. Cooper,et al.  Effective partial redundancy elimination , 1994, PLDI '94.

[17]  David A. Padua,et al.  Concurrent Static Single Assignment Form and Constant Propagation for Explicitly Parallel Programs , 1997, LCPC.

[18]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.