Results 1 - 10
of
10
Determining Average Program Execution Times and their Variance
, 1989
"... This paper presents a general framework for determining average program execution times and their variance, based on the program's interval structure and control dependence graph. Average execution times and variance values are computed using frequency information from an optimized counter-based exe ..."
Abstract
-
Cited by 84 (0 self)
- Add to MetaCart
This paper presents a general framework for determining average program execution times and their variance, based on the program's interval structure and control dependence graph. Average execution times and variance values are computed using frequency information from an optimized counter-based execution profile of the program. 1 Introduction It is important for a compiler to obtain estimates of execution times for subcomputations of an input program, if it is to attempt optimizations related to overhead values in the target architecture. In earlier work [SH86a, SH86b, Sar87, Sar89], we used estimates of execution times to facilitate the automatic partitioning and scheduling of programs written in the singleassignment language, Sisal, for parallel execution on multiprocessors. In this paper, we present a general framework for estimating average execution times in a program. This approach is based on the interval structure [ASU86] and the control dependence relation [FOW87], both of w...
Elimination algorithms for data flow analysis
- ACM Computing Surveys
, 1986
"... A unified model of a family of data flow algorithms, called elimination methods, is presented. The algorithms, which gather information about the definition and use of data in a program or a set of programs, are characterized by the manner in which they solve the systems of equations that describe d ..."
Abstract
-
Cited by 51 (8 self)
- Add to MetaCart
A unified model of a family of data flow algorithms, called elimination methods, is presented. The algorithms, which gather information about the definition and use of data in a program or a set of programs, are characterized by the manner in which they solve the systems of equations that describe data flow problems of interest. The unified model
Identifying loops using DJ graphs
, 1995
"... Loop identification is a necessary step in loop transformations for high-performance architectures. The Tarjan intervals are single-entry, strongly connected subgraphs, so they closely reflect the loop structure of a program [Tar74]. They have been used for loop identification. In this paper we give ..."
Abstract
-
Cited by 26 (0 self)
- Add to MetaCart
Loop identification is a necessary step in loop transformations for high-performance architectures. The Tarjan intervals are single-entry, strongly connected subgraphs, so they closely reflect the loop structure of a program [Tar74]. They have been used for loop identification. In this paper we give a simple algorithm for identifying both reducible and irreducible loops using DJ graphs. Our method can be considered as a generalization of Tarjan's interval-finding algorithm, since we can identify nested intervals (or loops) even in the presence of irreducibility. i Contents 1 Introduction 1 2 Background and Notation 1 3 Reducible and Irreducible Loops 3 4 Our Algorithm 6 5 Conclusion and Related Work 10 List of Figures 1 An example of a flowgraph and its DJ graph : : : : : : : : : : : : : : : : : : : : 2 2 Examples of reducible and irreducible flowgraphs : : : : : : : : : : : : : : : : : : 4 3 An irreducible flowgraph with two irreducible loops : : : : : : : : : : : : : : : : : 6 4 ...
Parallelizing Nonnumerical Code with Selective Scheduling and Software Pipelining
- ACM Transactions on Programming Languages and Systems
, 1997
"... this article, we introduce a new code-scheduling technique for irregular ILP called "selective scheduling" which can be used as a component for superscalar and VLIW compilers. Selective scheduling can compute a wide set of independent operations across all execution paths based on renaming and forwa ..."
Abstract
-
Cited by 25 (6 self)
- Add to MetaCart
this article, we introduce a new code-scheduling technique for irregular ILP called "selective scheduling" which can be used as a component for superscalar and VLIW compilers. Selective scheduling can compute a wide set of independent operations across all execution paths based on renaming and forward-substitution and can compute available operations across loop iterations if combined with software pipelining. This scheduling approach has better heuristics for determining the usefulness of moving one operation versus moving another and can successfully find useful code motions without resorting to branch profiling. The compiletime overhead of selective scheduling is low due to its incremental computation technique and its controlled code duplication. We parallelized the SPEC integer benchmarks and five AIX utilities without using branch probabilities. The experiments indicate that a fivefold speedup is achievable on realistic resources with a reasonable overhead in compilation time and code expansion and that a solid speedup increase is also obtainable on machines with fewer resources. These results improve previously known characteristics of irregular ILP.
Experience with the SETL optimizer
- ACM Transactions on Programming Languages and Systems
, 1983
"... The structure of an existing optimizer for the very high-level, set theoretically oriented programming language SETL is described, and its capabilities are illustrated. The use of novel techniques (supported by state-of-the-art interprocedural program analysis methods) enables the optimizer to accom ..."
Abstract
-
Cited by 22 (0 self)
- Add to MetaCart
The structure of an existing optimizer for the very high-level, set theoretically oriented programming language SETL is described, and its capabilities are illustrated. The use of novel techniques (supported by state-of-the-art interprocedural program analysis methods) enables the optimizer to accomplish various sophisticated optimizations, the most significant of which are the automatic selection of data representations and the systematic elimination of superfluous copying operations. These techniques allow quite sophisticated data-structure choices to be made automatically. Categories and Subject Descriptors: D.3.2 [Programmiug Languages]: Language Classifications--very high-level languages; SETL; D.3.4 [Programming Languages]: Processors--compUers; opti-mization; 1.2.2 [Artificial Intelligence]: Automatic Programming--automatic analysis of algo-rithms; program modification; program transformation
Automatic Generation Of Data-Flow Analyzers: A Tool For Building Optimizers
, 1993
"... Modern compilers generate good code by performing global optimizations. Unlike other functions of the compiler such as parsing and code generation which examine only one statement or one basic block at a time, optimizers examine large parts of a program and coordinate changes in widely separated par ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Modern compilers generate good code by performing global optimizations. Unlike other functions of the compiler such as parsing and code generation which examine only one statement or one basic block at a time, optimizers examine large parts of a program and coordinate changes in widely separated parts of a program. Thus optimizers use more complex data structures and consume more time. To generate the best code, optimizers perform not one global transformation, but many in concert. These transformations can interact in unforeseen ways. This dissertation concerns the building of optimizers that are modular and extensible. It espouses an optimizer architecture, first proposed by Kildall, in which each phase is based on a data-flow analysis (DFA) of the program and on an optimization function that transforms the program. To support the architecture, a set of abstractions---flow values, flow functions, path simplification rules, action routines---is provided. A tool called Sharlit turns a DFA specification consisting of these abstractions into a solver for a DFA problem. At the heart of Sharlit is an algorithm called path simplification, an extension of Tarjan's fast path algorithm. Path simplification unifies several powerful DFA solution techniques. By using path simplification rules, compiler writers can construct a wide range of data-flow analyzers, from simple iterative ones, to solvers that use local analysis, interval analysis, or sparse data-flow evaluation. Sharlit frees compiler writers from the details of how these various solution techniques. The compiler writer can view the program representation as a simple flow graph in which each instruction is a node. Data structures to represent basic blocks and other regions are automatically generated. Sharlit promotes ...
Program Dependence Graphs for the Rest of Us
, 1993
"... This report presents new control dependence analysis techniques that succeed in constructing a control dependence graph (CDG) in all of the common cases without requiring either the control flow graph or the auxiliary structures needed by the fully general algorithm. In the worst case, the intermedi ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
This report presents new control dependence analysis techniques that succeed in constructing a control dependence graph (CDG) in all of the common cases without requiring either the control flow graph or the auxiliary structures needed by the fully general algorithm. In the worst case, the intermediate structures built by our algorithms are used to derive a simplified form of the control flow graph that is then used by the general algorithm. In this eventuality, the general algorithm may run more quickly, since a portion of its analysis has already been performed. The report also presents an adaptation of Tarjan's interval analysis algorithm for data flow analysis that uses the control dependence graph instead of the control flow graph. Using the CDG-based analysis algorithm allows us to construct a program dependence graph (PDG) without first constructing a control flow graph. This approach offers several advantages over the conventional models. It eliminates a complete program repres...
Efficient data flow analysis using DJ-graphs: Elimination methods revisited
, 1995
"... In this paper we present a new approach to elimination based data flow analysis that uses a program representation called the DJ Graph. The skeleton of the DJ graph of a program is the dominator tree of its flowgraph (whose edges are called D edges in this paper), and the tree skeleton is augmented ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
In this paper we present a new approach to elimination based data flow analysis that uses a program representation called the DJ Graph. The skeleton of the DJ graph of a program is the dominator tree of its flowgraph (whose edges are called D edges in this paper), and the tree skeleton is augmented with join edges (called J edges in this paper). Unlike the previous elimination methods, which first reduce a flowgraph to a single node, our approach only eliminate J edges from the DJ graph in a bottom-up fashion during the reduction process, while maintainting the dominator tree structure (which may be compressed). We propose two methods for eliminating variables: (1) eager elimination method, and (2) delayed elimination method. With eager elimination, we first perform variable elimination on the DJ-graph in a bottom-up manner. Once we determine the solution for the root node, we propagate this information in a top-down fashion on the dominator tree and determine the corresponding solutio...
Notes on Graph Algorithms Used in Optimizing Compilers
, 1995
"... Frameworks for Data-Flow Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.5 Solutions of Abstract Data Flow Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.6 Two More Data-Flow Analysis Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Frameworks for Data-Flow Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.5 Solutions of Abstract Data Flow Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.6 Two More Data-Flow Analysis Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.7 How Many Iterations are Needed? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.8 Algorithms Based on Reducibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.8.1 Allen and Cocke's Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.8.2 Schwartz and Sharir's Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.8.3 Dealing With Non-Reducible Flow Graphs . . . . . . . . . . . . . . . . . . . . . . . . . 89 Chapter 1 Depth-First Walks We will be working with directed graphs in this set of notes. Such graphs are used in compilers for modeling internal representations of programs being comp...
Data Flow Terminology and Representations
"... This document provides a brief tutorial on the representation of data dependences between individual instructions and of the flow of data through the program. 1. Terminology ..."
Abstract
- Add to MetaCart
This document provides a brief tutorial on the representation of data dependences between individual instructions and of the flow of data through the program. 1. Terminology

