Using MPI Communication Patterns to Guide Source Code Transformations

Optimizing the performance of HPC software requires a high-level understanding of communication patterns as well as their relation to source code structures. We describe an algorithm to detect communication patterns in parallel traces and show how these patterns can guide static code analysis. First, we detect patterns that identify potential bottlenecks in MPI communication traces. Next, we associate the patterns with the corresponding nodes in an abstract syntaxtree using the ROSE compiler framework. Finally we perform static analysis on the annotated control flow and system dependence graphs to guide transformations such as code motion or the automatic introduction of MPI collectives.

[1]  D. Quinlan,et al.  Tool Support for Inspecting the Code Quality of HPC Applications , 2007, Third International Workshop on Software Engineering for High Performance Computing Applications (SE-HPC '07).

[2]  Kei Davis,et al.  Improving scalability with loop transformations and message aggregation in parallel object-oriented frameworks for scientific computing , 1998 .

[3]  Markus Schordan,et al.  A Source-to-Source Architecture for User-Defined Optimizations , 2003, JMLC.

[4]  Wing-Kai Hon,et al.  Breaking a time-and-space barrier in constructing full-text indices , 2003, 44th Annual IEEE Symposium on Foundations of Computer Science, 2003. Proceedings..

[5]  Dieter Kranzlmüller,et al.  Event graph visualization for debugging large applications , 1996, SPDT '96.

[6]  Wolfgang Gerlach,et al.  Engineering a compressed suffix tree implementation , 2007, JEAL.

[7]  D. Qainlant,et al.  ROSE: Compiler Support for Object-Oriented Frameworks , 1999 .

[8]  Jack Dongarra,et al.  Recent Advances in Parallel Virtual Machine and Message Passing Interface, 15th European PVM/MPI Users' Group Meeting, Dublin, Ireland, September 7-10, 2008. Proceedings , 2008, PVM/MPI.

[9]  Dan Gusfield,et al.  Algorithms on Strings, Trees, and Sequences - Computer Science and Computational Biology , 1997 .

[10]  Dieter Kranzlmüller,et al.  Detection of Collective MPI Operation Patterns , 2004, PVM/MPI.

[11]  Wolfgang Gerlach,et al.  Engineering a Compressed Suffix Tree Implementation , 2007, WEA.

[12]  Dan Gusfield,et al.  Algorithms on Strings, Trees, and Sequences - Computer Science and Computational Biology , 1997 .

[13]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.