Results 1 
4 of
4
Optimal and efficient speculationbased partial redundancy elimination
 in ‘1st IEEE/ACM International Symposium on Code Generation and Optimization
, 2003
"... Existing profileguided partial redundancy elimination (PRE) methods use speculation to enable the removal of partial redundancies along more frequently executed paths at the expense of introducing additional expression evaluations along less frequently executed paths. While being capable of minimiz ..."
Abstract

Cited by 12 (3 self)
 Add to MetaCart
Existing profileguided partial redundancy elimination (PRE) methods use speculation to enable the removal of partial redundancies along more frequently executed paths at the expense of introducing additional expression evaluations along less frequently executed paths. While being capable of minimizing the number of expression evaluations in some cases, they are, in general, not computationally optimal in achieving this objective. In addition, the experimental results for their effectiveness are mostly missing. This work addresses the following three problems: (1) Is the computational optimality of speculative PRE solvable in polynomial time? (2) Is edge profiling — less costly than path profiling — sufficient to guarantee the computational optimality? (3) Is the optimal algorithm (if one exists) lightweight enough to be used efficiently in a dynamic compiler? In this paper, we provide positive answers to the first two problems and promising results to the third. We present an algorithm that analyzes edge insertion points based on an edge profile. Our algorithm guarantees optimally that the total number of computations for an expression in the transformed code is always minimized with respect to the edge profile given. This implies that edge profiling, which is less costly than path profiling, is sufficient to guarantee this optimality. The key in the development of our algorithm lies in the removal of some nonessential edges (and consequently, all resulting nonessential nodes) from a flow graph so that the problem of finding an optimal code motion is reduced to one of finding a minimal cut in the reduced (flow) graph thus obtained. We have implemented our algorithm in Intel’s Open Runtime Platform (ORP). Our preliminary results over a number of Java benchmarks show that our algorithm is lightweight and can be potentially a practical component in a dynamic compiler. As a result, our algorithm can also be profitably employed in a profileguided static compiler, in which compilation cost can often be sacrificed for code efficiency.
A lifetime optimal algorithm for speculative PRE
 ACM Transactions on Architecture and Code Optimization
"... A lifetime optimal algorithm, called MCPRE, is presented for the first time that performs speculative PRE based on edge profiles. In addition to being computationally optimal in the sense that the total number of dynamic computations for an expression in the transformed code is minimized, MCPRE is ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
A lifetime optimal algorithm, called MCPRE, is presented for the first time that performs speculative PRE based on edge profiles. In addition to being computationally optimal in the sense that the total number of dynamic computations for an expression in the transformed code is minimized, MCPRE is also lifetime optimal since the lifetimes of introduced temporaries are also minimized. The key in achieving lifetime optimality lies not only in finding a unique minimum cut on a transformed graph of a given CFG but also in performing a dataflow analysis directly on the CFG to avoid making unnecessary code insertions and deletions. The lifetime optimal results are rigorously proved. We evaluate our algorithm in GCC against three previously published PRE algorithms, namely, MCPREcomp (Qiong and Xue’s computationally optimal version of MCPRE), LCM (Knoop, Rüthing and Steffen’s lifetime optimal algorithm for performing nonspeculative PRE) and CMPPRE (Bodik, Gupta and Soffa’s PRE algorithm based on codemotion preventing (CMP) regions, which is speculative but not computationally optimal). We report and analyze our experimental results, obtained from both actual program execution and instrumentation, for all 22 C, C++ and FORTRAN 77 benchmarks from SPECcpu2000 on an Itanium 2 computer system. Our results show that MCPRE (or MCPREcomp) is capable of eliminating more partial redundancies than both LCM and CMPPRE (especially in functions with complex control flow), and in addition, MCPRE inserts temporaries with shorter lifetimes than MCPREcomp. Each of both benefits has contributed to the performance improvements in benchmark programs at the costs of only small compiletime and codesize increases in some benchmarks.
Permission to Make Digital Or Hard Copies of All Or Part of This Work for
 In Proceedings of UIST 2000
, 2000
"... A number of recent systems have provided rich facilities for manipulating the timelines of applications. Such timelines represent the history of an application's use in some session, and captures the effects of the user's interactions with that application. Applications can use timeline manipulation ..."
Abstract
 Add to MetaCart
A number of recent systems have provided rich facilities for manipulating the timelines of applications. Such timelines represent the history of an application's use in some session, and captures the effects of the user's interactions with that application. Applications can use timeline manipulation techniques prosaically as a way to provide undo and redo within an application context; more interestingly, they can use these same techniques to make an application's history directly manipulable in richer ways by users. This paper presents a number of extensions to current techniques for representing and managing application timelines. The first extension captures causal relationships in timelines via a nested transaction mechanism. This extension addresses a common problem in historybased applications, namely, how to represent application state as a set of atomic, incremental operations. The second extension presents a model for "multilevel" time, in which the histories of a set of interrelated artifacts can be represented by both "local" and "global" timelines. This extension allows the histories of related objects in an application to be manipulated independently from one another.
Optimizing for Space and Time Usage . . .
 IN PROCEEDINGS OF THE 2004 ACM SIGPLAN/SIGBED CONFERENCE ON LANGUAGES, COMPILERS, AND TOOLS FOR EMBEDDED SYSTEMS
, 2004
"... Speculative partial redundancy elimination (SPRE) uses execution profiles to improve the expected performance of programs. We show how the problem of placing expressions to achieve the optimal expected performance can be mapped to a particular kind of network flow problem and hence solved by well kn ..."
Abstract
 Add to MetaCart
Speculative partial redundancy elimination (SPRE) uses execution profiles to improve the expected performance of programs. We show how the problem of placing expressions to achieve the optimal expected performance can be mapped to a particular kind of network flow problem and hence solved by well known techniques. Our solution is sufficiently efficient to be used in practice. Furthermore, the objective function may be chosen so that reduction in space requirements is the primary goal and execution time is secondary. One surprising result that an explosion in size may occur if speed is the sole goal, and consideration of space usage is therefore important.