7,482 papers · page 259 of 375
Chung-Hsing Hsu, Ulrich Kremer
This paper presents the design and implementation of a compiler algorithm that effectively optimizes programs for energy usage using dynamic voltage scaling (DVS). The algorithm identifies program regions where the CPU can be slowed down with negligible performance loss. It is im…
Tatsushi Inagaki, Tamiya Onodera, Hideaki Komatsu, Toshio Nakatani
Software prefetching is a promising technique to hide cache miss latencies, but it remains challenging to effectively prefetch pointer-based data structures because obtaining the memory address to be prefetched requires pointer dereferences. The recently proposed stride prefetchi…
Pramod G. Joisha, Prithviraj Banerjee
Static array storage optimization in MATLAB.
Andrew A. Lamb, William Thies, Saman P. Amarasinghe
As more complex DSP algorithms are realized in practice, there is an increasing need for high-level stream abstractions that can be compiled without sacrificing efficiency. Toward this end, we present a set of aggressive optimizations that target linear sections of a stream progr…
Sorin Lerner, Todd D. Millstein, Craig Chambers
We describe a technique for automatically proving compiler optimizations sound, meaning that their transformations are always semantics-preserving. We first present a domain-specific language, called Cobalt, for implementing optimizations as guarded rewrite rules. Cobalt optimiza…
Ben Liblit, Alex Aiken, Alice X. Zheng, Michael I. Jordan
We propose a low-overhead sampling infrastructure for gathering information from the executions experienced by a program's user community. Several example applications illustrate ways to use sampled instrumentation to isolate bugs. Assertion-dense code can be transformed to share…
Jin Lin, Tong Chen, Wei-Chung Hsu, Pen-Chung Yew, Roy Dz-Ching Ju, Tin-Fook Ngai, Sun Chan
Christoph von Praun, Thomas R. Gross
A compiler for multi-threaded object-oriented programs needs information about the sharing of objects for a variety of reasons: to implement optimizations, to issue warnings, to add instrumentation to detect access violations that occur at runtime. An Object Use Graph (OUG) stati…
Mark Stephenson, Saman P. Amarasinghe, Martin C. Martin, Una-May O'Reilly
Compiler writers have crafted many heuristics over the years to approximately solve NP-hard problems efficiently. Finding a heuristic that performs well on a broad range of applications is a tedious and difficult process. This paper introduces Meta Optimization, a methodology for…
Michelle Mills Strout, Larry Carter, Jeanne Ferrante
Toshio Suganuma, Toshiaki Yasue, Toshio Nakatani
Method inlining and data flow analysis are two major optimization components for effective program transformations, however they often suffer from the existence of rarely or never executed code contained in the target method. One major problem lies in the assumption that the comp…
Fen Xie, Margaret Martonosi, Sharad Malik
Kamen Yotov, Xiaoming Li, Gang Ren, Michael Cibulskis, Gerald DeJong, María Jesús Garzarán, David A. Padua, Keshav Pingali + 2 more
Empirical program optimizers estimate the values of key optimization parameters by generating different program versions and running them on the actual hardware to determine which values give the best performance. In contrast, conventional compilers use models of programs and mac…
Umut A. Acar, Guy E. Blelloch, Robert Harper
We present a framework for applying memoization selectively. The framework provides programmer control over equality, space usage, and identification of precise dependences so that memoization can be applied according to the needs of an application. Two key properties of the fram…
David F. Bacon, Perry Cheng, V. T. Rajan
Now that the use of garbage collection in languages like Java is becoming widely accepted due to the safety and software engineering benefits it provides, there is significant interest in applying garbage collection to hard real-time systems. Past approaches have generally suffer…
Thomas Ball, Mayur Naik, Sriram K. Rajamani
There is significant room for improving users' experiences with model checking tools. An error trace produced by a model checker can be lengthy and is indicative of a symptom of an error. As a result, users can spend considerable time examining an error trace in order to understa…
Gilles Barthe, Horatiu Cirstea, Claude Kirchner, Luigi Liquori
International audience
Hans-Juergen Boehm
We compare two different facilities for running cleanup actions for objects that are about to reach the end of their life.Destructors, such as we find in C++, are invoked synchronously when an object goes out of scope. They make it easier to implement cleanup actions for objects …
Ahmed Bouajjani, Javier Esparza, Tayssir Touili
We present a generic aproach to the static analysis of concurrent programs with procedures. We model programs as communicating pushdown systems. It is known that typical dataflow problems for this model are undecidable, because the emptiness problem for the intersection of contex…
Chandrasekhar Boyapati, Barbara Liskov, Liuba Shrira
Ownership types provide a statically enforceable way of specifying object encapsulation and enable local reasoning about program correctness in object-oriented languages. However, a type system that enforces strict object encapsulation is too constraining: it does not allow effic…