Abstract:
Specializing programs with respect to run-time values has been shown to drastically improve code performance on realistic programs ranging from operating systems to graphics. Recently, various approaches to specializing code at run-time have been proposed. However, these approaches still suffer from shortcomings that limit their applicability: they are manual, too expensive, or require programs to be written in a dedicated language. We solve these problems by introducing new techniques to implement run-time specialization. The key to our approach is the use of code templates. Templates are automatically generated from ordinary programs and are optimized before run time, allowing high-quality code to be quickly generated at run time. Experimental results obtained on scientific and graphics code indicate that our approach is highly effective. Little run-time overhead is introduced, since code generation primarily consists of copying instructions. Run-time specialized programs run up to 1...
Citations
|
183
|
A General Approach for Run-Time Specialization and its Application to C
– Consel, Nol
- 1996
|
|
174
|
MetaML and multi-stage programming with explicit annotations
– Taha, Sheard
|
|
144
|
Optimizing ML with run-time code generation
– Lee, Leone
- 1996
|
|
101
|
C: a language for high-level, efficient, and machine-independent dynamic code generation
– Engler, Hsieh, et al.
- 1996
|
|
99
|
effective dynamic compilation
– Fast
- 1996
|
|
97
|
The Synthesis kernel
– Pu, Massalin, et al.
- 1988
|
|
72
|
A uniform approach for compile-time and run-time specialization
– Consel, Hornof, et al.
- 1996
|
|
58
|
A case for runtime code generation
– Keppel, Eggers, et al.
- 1991
|
|
56
|
Numerical Analysis
– Kincaid, Cheney
- 2002
|
|
52
|
Lightweight run-time code generation
– Leone, Lee
- 1994
|
|
47
|
Declarative Specialization of Object-Oriented Programs
– Volanschi, Consel, et al.
- 1997
|
|
43
|
A code generation interface for ANSI C
– Fraser, Hanson
- 1990
|
|
39
|
Hardware/software trade-offs for bitmap graphics on the Blit
– Pike, Locanthi, et al.
- 1985
|
|
37
|
Accurate binding-time analysis for imperative languages: Flow, context, and return sensitivity
– Hornof, Noy
|
|
21
|
Multiplication by Integer Constants
– Bernstein
- 1986
|
|
21
|
Two for the price of one: Composing partial evaluation and compilation
– Sperber, Thiemann
- 1997
|
|
19
|
A declarative approach to run-time code generation
– Leone, Lee
- 1996
|
|
18
|
Eoeective specialization of realistic programs via use sensitivity
– Hornof, Noy, et al.
- 1997
|
|
17
|
Binding-time analysis applied to mathematical algorithms
– Glück, Nakashige, et al.
- 1995
|
|
11
|
Resource-bounded partial evaluation
– Debray
- 1997
|
|
11
|
Fast bitblt() with asm() and cpp
– Locanthi
- 1987
|
|
9
|
JIT vs. Offline Compilers: Limits and Benefits of Bytecode Compilation
– Muller, Moura, et al.
- 1996
|
|
6
|
Static Analyses for the Effective Specialization of Realistic Applications
– Hornof
- 1997
|
|
2
|
Abstract Interpretation of Partial-Evaluation Algorithms
– Malmkjaer
- 1993
|
|
2
|
Sp'ecialisation dynamique de code par 'evaluation partielle
– Noel
- 1996
|
|
1
|
QuaC: Binary optimization for fast runtime code generation in C
– Yarvin, Sah
- 1994
|