A Hierarchical Reasoning System for Automatic Program Parallelization

Automatic parallelization of large and complex program regions requires the compiler to reason about complex semantic information. This paper describes a hierarchical reasoning system implemented within the Panorama parallelizing compiler. This reasoning system intelligently and efficiently extracts useful semantic information in the form of first-order predicates from program statements. It uses a hierarchical structure to represent the predicates, which enables fast determination of their truth in common cases. A hierarchical value graph facilitates rule-based, demand-driven retrieval of useful predicates.

[1]  Wei-Tek Tsai,et al.  Generalized Program Slicing for Software Maintenance , 1996, International Conference on Software Engineering and Knowledge Engineering.

[2]  Zhiyuan Li,et al.  Experience with efficient array data flow analysis for array privatization , 1997, PPOPP '97.

[3]  Alain Lichnewsky,et al.  Introducing symbolic problem solving techniques in the dependence testing phases of a vectorizer , 1988, ICS '88.

[4]  Wei-Tek Tsai,et al.  Omega-an integrated environment for C++ program maintenance , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[5]  Wei-Tek Tsai,et al.  Array Covering: A Technique4 for Enabling Lloop Parallelization , 1992, ICPP.

[6]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[7]  Wei-Tek Tsai,et al.  Re-engineering legacy Cobol programs , 1998, CACM.

[8]  William Pugh,et al.  Eliminating false data dependences using the Omega test , 1992, PLDI '92.

[9]  Gyungho Lee,et al.  Symbolic Array Dataflow Analysis for Array Privatization and Program Parallelization , 1995, Proceedings of the IEEE/ACM SC95 Conference.

[10]  Paul Feautrier,et al.  Direct parallelization of call statements , 1986, SIGPLAN '86.

[11]  Lori A. Clarke,et al.  Applications of symbolic evaluation , 1985, J. Syst. Softw..

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

[13]  William H. Harrison,et al.  Compiler Analysis of the Value Ranges for Variables , 1977, IEEE Transactions on Software Engineering.

[14]  Geoffrey C. Fox,et al.  The Perfect Club Benchmarks: Effective Performance Evaluation of Supercomputers , 1989, Int. J. High Perform. Comput. Appl..

[15]  Jianhua Sun,et al.  Business rule extraction techniques for COBOL programs , 1998 .

[16]  Mary Lou Soffa,et al.  Computation of interprocedural definition and use dependencies , 1990, Proceedings. 1990 International Conference on Computer Languages.

[17]  Thomas E. Cheatham,et al.  Symbolic Evaluation and the Analysis of Programs , 1979, IEEE Transactions on Software Engineering.

[18]  Robert E. Tarjan,et al.  Symbolic Program Analysis in Almost-Linear Time , 1982, SIAM J. Comput..

[19]  Eugene W. Myers,et al.  A precise inter-procedural data flow algorithm , 1981, POPL '81.

[20]  David A. Padua,et al.  Automatic Array Privatization , 1993, Compiler Optimizations for Scalable Parallel Systems Languages.

[21]  John H. Reif,et al.  Symbolic evaluation and the global value graph , 1977, POPL.

[22]  Monica S. Lam,et al.  Array-data flow analysis and its use in array privatization , 1993, POPL '93.

[23]  Wei-Tek Tsai,et al.  Data-centered program understanding , 1994, Proceedings 1994 International Conference on Software Maintenance.