An efficient technique to remove transformations [program codes]

Although the application of code transformations is critical to exploit parallelism in program code, few guidelines or tools are provided to determine what transformations should be applied and where they should be applied. In this paper, we approach this problem by first providing a taxonomy of code transformations to assist the user in parallelizing programs. We then present an efficient technique to remove transformations from the code when it is determined that they are ineffective or prevent more beneficial transformations from being applied. The technique to remove transformations employs inverse primitive actions, making it transformation independent. The technique uses the program dependence graph as the intermediate representation, making it language independent.

[1]  Dan R. Olsen,et al.  Macros by example in a graphical UIMS , 1988, IEEE Computer Graphics and Applications.

[2]  Mary Lou Soffa,et al.  Automatic generation of global optimizers , 1991, PLDI '91.

[3]  Barbara M. Chapman,et al.  Knowledge-Based Parallelization for Distributed Memory Systems , 1991, ACPC.

[4]  Mary Lou Soffa,et al.  Undoing Code Transformations in an Independent Order , 1994, 1994 Internatonal Conference on Parallel Processing Vol. 2.

[5]  Mary Lou Soffa,et al.  An approach to ordering optimizing transformations , 1990, PPOPP '90.

[6]  Craig Chambers,et al.  Debugging optimized code with dynamic deoptimization , 1992, PLDI '92.

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

[8]  Warren Harrison Tools for multiple-CPU environments , 1990, IEEE Software.

[9]  Ken Kennedy,et al.  The parascope editor: an interactive parallel programming tool , 1993, Proceedings of the 1989 ACM/IEEE Conference on Supercomputing (Supercomputing '89).

[10]  George B. Leeman A formal approach to undo operations in programming languages , 1986, TOPL.

[11]  Chyi-Ren Dow Pivot: a program parallelization and visualization environment , 1994 .

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

[13]  Mary Lou Soffa,et al.  Incremental global reoptimization of programs , 1992, TOPL.

[14]  Rajiv Gupta,et al.  Techniques for integrating parallelizing transformations and compiler based scheduling methods , 1992, Proceedings Supercomputing '92.

[15]  Yiya Yang,et al.  Anatomy of the Design of an Undo Support Facility , 1992, Int. J. Man Mach. Stud..