Static Single Assignment Form for Explicitly Parallel Programs: Theory and Practice

To sensibly reason about parallel programs, a coherent intermediate form needs to be developed. We describe and prove correctness and safety of algorithms to convert programs that use the Parallel Computing Forum Parallel Sections construct into a parallel Static Single Assignment (SSA) form. We deene what the concept of dominator and dominance frontier mean in parallel programs. How to extend the SSA form to handle parallel updates and still preserve the SSA properties is described by introducing a new parallel merge operator, the-function. The minimal placement points for-functions are identiied and proved correct by introducing the meet of two nodes in a Parallel Precedence Graph (PPG), which is the dual concept of join in a sequential control ow graph (CFG). The resulting intermediate form allows compilers to apply classical scalar optimization algorithms to explicitly parallel programs. We also discuss issues encountered while implementing these constructs in Nascent, our restructuring research compiler.

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

[2]  Jyh-Herng Chow,et al.  Compile-time analysis of parallel programs that share memory , 1992, POPL '92.

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

[4]  David A. Padua,et al.  Issues in the Optimization of Parallel Programs , 1990, ICPP.

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

[6]  Wilson C. Hsieh,et al.  Automatic generation of DAG parallelism , 1989, PLDI '89.

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

[8]  Michael Wolfe,et al.  Analyzing Programs with Explicit Parallelism , 1991, LCPC.

[9]  Ken Kennedy,et al.  Compile-time detection of race conditions in a parallel program , 1989, ICS '89.

[10]  GrunwaldDirk,et al.  Data flow equations for explicitly parallel programs , 1993 .

[11]  Edith Schonberg,et al.  An empirical comparison of monitoring algorithms for access anomaly detection , 2011, PPOPP '90.

[12]  Paul Havlak,et al.  Interprocedural symbolic analysis , 1995 .

[13]  Michael Wolfe,et al.  Extended SSA with factored use-def chains to support optimization and parallelism , 1994, 1994 Proceedings of the Twenty-Seventh Hawaii International Conference on System Sciences.

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

[15]  Dirk Grunwald,et al.  An Efficient Construction of Parallel Static Single Assignment Form for Structured Parallel Programs , 1991 .

[16]  Stanley A. Kurzban,et al.  Operating systems principles , 1975 .

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

[18]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[19]  Jong-Deok Choi,et al.  Automatic construction of sparse data flow evaluation graphs , 1991, POPL '91.

[20]  Samuel P. Midkiff,et al.  Compiling programs with user parallelism , 1990 .

[21]  Michael Wolfe,et al.  Beyond induction variables , 1992, PLDI '92.

[22]  Vivek Sarkar,et al.  A Concurrent Execution Semantics for Parallel Program Graphs and Program Dependence Graphs , 1992, LCPC.

[23]  Ken Kennedy,et al.  Analysis of event synchronization in a parallel programming tool , 1990, PPOPP '90.

[24]  Jaspal Subhlok,et al.  Static analysis of low-level synchronization , 1988, PADD '88.