Techniques for integrating parallelizing transformations and compiler based scheduling methods

Although the tasks of applying transformations and scheduling instructions are typically implemented in separate phases of a parallelizing compiler, interactions between these phases occur. The authors discuss these interdependencies and demonstrate that the separate phase approach can result in the application of a sequence of transformations that is not effective. The techniques presented for integrating these tasks utilize an iterative approach to applying program transformations and scheduling instructions for execution on a multiprocessor. These integrated techniques employ a demand driven approach to applying transformations; by iterating between the scheduling and transforming tasks, transformations are applied to the program only if and where they are needed. The authors also introduce an automatic transformation application and selection algorithm that provides further control over the application of transformations.<<ETX>>

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

[2]  Edward G. Coffman,et al.  Computer and job-shop scheduling theory , 1976 .

[3]  Alexander Aiken,et al.  A Development Environment for Horizontal Microcode , 1986, IEEE Trans. Software Eng..

[4]  Steven W. K. Tjiang,et al.  Integrating Scalar Optimization and Parallelization , 1991, LCPC.

[5]  Vivek Sarkar,et al.  Partitioning and Scheduling Parallel Programs for Multiprocessing , 1989 .

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

[7]  David A. Padua,et al.  Advanced compiler optimizations for supercomputers , 1986, CACM.

[8]  Vivek Sarkar Synchronization using counting semaphores , 1988, ICS '88.

[9]  Rajiv Gupta Loop displacement: an approach for transforming and scheduling loops for parallel execution , 1990, Proceedings SUPERCOMPUTING '90.

[10]  John R. Ellis,et al.  Bulldog: A Compiler for VLIW Architectures , 1986 .

[11]  V. Sarkar,et al.  Automatic partitioning of a program dependence graph into parallel tasks , 1991, IBM J. Res. Dev..

[12]  Vivek Sarkar,et al.  Partitioning and scheduling parallel programs for execution on multiprocessors , 1987 .

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

[14]  Hironori Kasahara,et al.  Practical Multiprocessor Scheduling Algorithms for Efficient Parallel Processing , 1984, IEEE Transactions on Computers.

[15]  Rajiv Gupta,et al.  Region Scheduling: An Approach for Detecting and Redistributing Parallelism , 1990, IEEE Trans. Software Eng..

[16]  Susan J. Eggers,et al.  Integrating register allocation and instruction scheduling for RISCs , 1991, ASPLOS IV.

[17]  Alexandru Nicolau,et al.  Loop Quantization: A Generalized Loop Unwinding Technique , 1988, J. Parallel Distributed Comput..

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

[19]  Rajiv Gupta,et al.  A tool for evaluating compiler-based parallelization strategies , 1989 .

[20]  K. Mani Chandy,et al.  A comparison of list schedules for parallel processing systems , 1974, Commun. ACM.