"Depth Analysis of MPI Programs"
B. Kreaseck, M. M. Strout, and P. Hovland
Preprint Version: [pdf]
Data-flow analyses that include some model of the data-flow between MPI sends and receives result in improved precision in the analysis results. One issue that arises with performing data-flow analyses on MPI programs is that the interprocedural control-flow graph ICFG is often irreducible due to call and return edges, and the MPI-ICFG adds further irreducibility due to communication edges. To provide an upper bound for iterative data-flow analysis complexity, one needs to have a general idea as to the depth of common flow graphs. Unfortunately, computing the depth of an irreducible graph is NP-complete. In this paper, we compare the depth-based iteration bounds for several MPI benchmarks with the actual number of iterations required for two data-flow analyses.We are able to compute the depth despite the worst-case exponential complexity of the depth-analysis algorithm by first reducing the reducible parts of the flow graph and then explore paths in the reduced graph. Our results show that on average the reduced graphs are 80% smaller than the original graphs and have 90% fewer cycle-free paths, resulting in a 10x faster algorithm.We also observe that although the number of iterations over the flow graph is bounded by the lattice height multiplied by the graph depth, the graph depth is clearly the dominating factor and provides a close approximation to the complexity of iterative data-flow analysis over MPI programs.