Generating OpenMP code using an interactive parallelization environment

Code parallelization using OpenMP for shared memory systems is relatively easier than using message passing for distributed memory systems. Despite this, it is still a challenge to use OpenMP to parallelize application codes in a way that yields effective scalable performance when executed on a shared memory parallel system. We describe an environment that will assist the programmer in the various tasks of code parallelization and this is achieved in a greatly reduced time frame and level of skill required. The parallelization environment includes a number of tools that address the main tasks of parallelism detection, OpenMP source code generation, debugging and optimization. These tools include a high quality, fully interprocedural dependence analysis with user interaction capabilities to facilitate the generation of efficient parallel code, an automatic relative debugging tool to identify erroneous user decisions in that interaction and also performance profiling to identify bottlenecks. Finally, experiences of parallelizing some NASA application codes are presented to illustrate some of the benefits of using the evolving environment.

[1]  Martin G. Everett,et al.  Exploitation of Symbolic Information in Interprocedural Dependence Analysis , 1996, Parallel Comput..

[2]  Eduard Ayguadé,et al.  Automatic multilevel parallelization using OpenMP , 2003, Sci. Program..

[3]  David Abramson,et al.  DUCT: An Interactive Define-Use Chain Navigation Tool for Relative Debugging , 2003, ArXiv.

[4]  Michael A. Frumkin,et al.  Automatic Generation of OpenMP Directives and Its Application to Computational Fluid Dynamics Codes , 2000, ISHPC.

[5]  Insung Park,et al.  Interactive Compilation and Performance Analysis with URSA MINOR , 1997, LCPC.

[6]  Hiralal Agrawal,et al.  Towards automatic debugging of computer programs , 1992 .

[7]  Cos S. Ierotheou,et al.  Computer Aided Parallelization of Unstructured Mesh Codes , 1997, International Conference on Parallel and Distributed Processing Techniques and Applications.

[8]  Robert Hood,et al.  Automatic Relative Debugging of OpenMP Programs , 2003 .

[9]  Steven W. K. Tjiang,et al.  SUIF: an infrastructure for research on parallelizing and optimizing compilers , 1994, SIGP.

[10]  Robert Hood,et al.  Backtracking and re-execution in the automatic debugging of parallelized programs , 2002, Proceedings 11th IEEE International Symposium on High Performance Distributed Computing.

[11]  Cos S. Ierotheou,et al.  Using an interactive parallelisation toolkit to parallelise an ocean modelling code , 2003, Future Gener. Comput. Syst..

[12]  Yunheung Paek,et al.  Restructuring programs for high-speed computers with Polaris , 1996, 1996 Proceedings ICPP Workshop on Challenges for Parallel Processing.

[13]  Cos S. Ierotheou,et al.  Computer Aided Parallelisation Tools (CAPTools) - Conceptual Overview and Performance on the Parallelisation of Structured Mesh Codes , 1996, Parallel Comput..

[14]  S. P. Johnson,et al.  Automatic and effective multi-dimensional parallelisation of structured mesh based codes , 2000, Parallel Comput..

[15]  Michael Gerndt,et al.  SUPERB: A tool for semi-automatic MIMD/SIMD parallelization , 1988, Parallel Comput..

[16]  Bernd Mohr,et al.  TAU: A Portable Parallel Program Analysis Environment for pC++ , 1994, CONPAR.

[17]  Jesús Labarta,et al.  An Expert Assistant for Computer Aided Parallelization , 2004, PARA.

[18]  Nancy M. Amato,et al.  A scalable method for run-time loop parallelization , 1995, International Journal of Parallel Programming.