The Program Dependence Graph and Its Use in Optimization

The Program Dependence Graph and Its Use in Optimization

July 1987 | JEANNE FERRANTE, KARL J. OTTENSTEIN, JOE D. WARREN
This paper introduces the Program Dependence Graph (PDG), an intermediate representation that explicitly captures both data and control dependences for each operation in a program. The PDG unifies previous work in program optimization by providing a framework for efficient optimizations, particularly those involving vectorization and parallelism. The paper discusses the construction of the PDG, including methods for determining control and data dependences, and presents an incremental data flow algorithm for branch deletion, loop unpeeling, and loop unrolling. The PDG supports various program transformations, such as code motion, node splitting, and loop fusion, and allows for incremental optimization where transformations can be triggered by changes in the graph. The paper also explores the practical considerations of using the PDG, including space requirements and applications in software development environments.This paper introduces the Program Dependence Graph (PDG), an intermediate representation that explicitly captures both data and control dependences for each operation in a program. The PDG unifies previous work in program optimization by providing a framework for efficient optimizations, particularly those involving vectorization and parallelism. The paper discusses the construction of the PDG, including methods for determining control and data dependences, and presents an incremental data flow algorithm for branch deletion, loop unpeeling, and loop unrolling. The PDG supports various program transformations, such as code motion, node splitting, and loop fusion, and allows for incremental optimization where transformations can be triggered by changes in the graph. The paper also explores the practical considerations of using the PDG, including space requirements and applications in software development environments.
Reach us at info@study.space
Understanding The program dependence graph and its use in optimization