Efficient Computation of Precedence Information in Parallel Programs

For any two statements in a parallel program, S i and S j , S i is said to precede S j if the execution of S j implies that S i must have already executed across all possible execution orders. There are many uses for precedence information for parallel programs, including program debugging and program optimization. The problem of finding exact precedence information is Co-NP-Hard [5]. Existing approaches to compute a conservative approximation to the precedence information at compile time are very expensive. In this paper, we present a more efficient algorithm to compute precedence that exploits known properties of sequential and parallel programs. In sequential programs, the precedence relation is the same as the dominance relation. We use this, and other information, to develop a more efficient algorithm.

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

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

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

[4]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[5]  William E. Riddle,et al.  Anomaly Detection in Concurrent Programs , 1979, ICSE.

[6]  David A. Padua,et al.  Event synchronization analysis for debugging parallel programs , 1989, Proceedings of the 1989 ACM/IEEE Conference on Supercomputing (Supercomputing '89).

[7]  David A. Padua,et al.  Automatic detection of nondeterminacy in parallel programs , 1988, PADD '88.

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

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