|
ABSTRACT
Barriers, a common synchronization primitive in SPMD-style programs, are used to partition a program into a sequence of parallel phases. Popular parallel programming models, such as MPI and OpenMP, allow barriers to be textually unaligned. Textually unaligned barriers make it difficult for the programmer to understand the synchronization phases in the program, and they can easily lead to synchronization errors. In this paper, we present an interprocedural analysis for matching barriers in a program in order to detect synchronization errors, or, if no such errors exist, to determine the synchronization phases of the program. Our analysis uses a combination of path expressions and interprocedural program slicing to match synchronizing barrier statements. If the barrier matching succeeds, the analysis determines the sets of barrier statements that synchronize together. A matching failure indicates the presence of a synchronization error and the analysis constructs a counter example to illustrate the error. We have implemented the analysis in an MPI checker tool for programs written in C and successfully analyzed the synchronization structure of several MPI benchmarks.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
| |
2
|
L. O. Andersen. Program Analysis and Specialization For the C Programming Language. PhD thesis, University of Copenhagen, 1994.
|
 |
3
|
D. Callahan , K. Kennedy , J. Subhlok, Analysis of event synchronization in a parallel programming tool, Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming, p.21-30, March 14-16, 1990, Seattle, Washington, United States
|
 |
4
|
|
 |
5
|
|
 |
6
|
Evelyn Duesterwald , Mary Lou Soffa, Concurrency analysis in the presence of procedures using a data-flow framework, Proceedings of the symposium on Testing, analysis, and verification, p.36-48, October 08-10, 1991, Victoria, British Columbia, Canada
[doi> 10.1145/120807.120811]
|
| |
7
|
Ana M. Erosa and Laurie J. Hendren. Taming control flow: A structured approach to eliminating goto statements. In Proceedings of the 1994 International Conference on Computer Languages, pages 229--240, Toulouse, France, May 1994.
|
| |
8
|
|
 |
9
|
|
| |
10
|
|
 |
11
|
A. Krishnamurthy , D. E. Culler , A. Dusseau , S. C. Goldstein , S. Lumetta , T. von Eicken , K. Yelick, Parallel programming in Split-C, Proceedings of the 1993 ACM/IEEE conference on Supercomputing, p.262-273, December 1993, Portland, Oregon, United States
[doi> 10.1145/169627.169724]
|
| |
12
|
|
| |
13
|
Yuan Lin. Static nonconcurrency analysis of openmp programs. In Fist International Workshop on OpenMP, 2005.
|
| |
14
|
OpenMP C/C++ Manual. http://www.openmp.org/specs/.
|
 |
15
|
|
| |
16
|
|
| |
17
|
Karl J. Ottenstein and Linda M. Ottenstein. The program dependence graph in a software development environment. Software Engineering Notes, 9(3), 1984.
|
| |
18
|
P. Hulfinger, D. Bonachea, K. Datta, D. Gay, S.Graham, B. Liblit, G. Pike, J. Su, and K. Yelick. Titanium language reference manual. Technical Report UCB/EECS-2005-15, U.C. Berkeley, 2005.
|
| |
19
|
Shuyi Shao, Alex K. Jones, and Rami Melhem. A compiler-based communication analysis approach for multiprocessor systems, 2006.
|
 |
20
|
|
 |
21
|
Stephen F. Siegel , Anastasia Mironova , George S. Avrunin , Lori A. Clarke, Using model checking with symbolic execution to verify parallel numerical programs, Proceedings of the 2006 international symposium on Software testing and analysis, July 17-20, 2006, Portland, Maine, USA
[doi> 10.1145/1146238.1146256]
|
| |
22
|
The Message Passing Interface (MPI) standard. http://www-unix.mcs.anl.gov/mpi/.
|
 |
23
|
|
 |
24
|
|
 |
25
|
|
 |
26
|
|
 |
27
|
|
 |
28
|
|
| |
29
|
Mark Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4):352--357, July 1984.
|
|