Abstract
Modern optimizing compilers apply a fixed sequence of optimizations, which we call a compilation sequence, to each program that they compile. These compilers let the user modify their behavior in a small number of specified ways, using command-line flags (e.g.,-O1,-O2,...). For five years, we have been working with compilers that automatically select an appropriate compilation sequence for each input program. These adaptive compilers discover a good compilation sequence tailored to the input program, the target machine, and a user-chosen objective function. We have shown, as have others, that program-specific sequences can produce better results than any single universal sequence [1, 7, 10, 21, 23] Our adaptive compiler looks for compilation sequences in a large and complex search space. Its typical compilation sequence includes 10 passes (with possible repeats) chosen from the 16 available—there are 1610 or [1,099,511,627,776] such sequences. To learn about the properties of such spaces, we have studied subspaces that consist of 10 passes drawn from a set of 5 (510 or 9,765,625 sequences). These 10-of-5 subspaces are small enough that we can analyze them thoroughly but large enough to reflect important properties of the full spaces.This paper reports, in detail, on our analysis of several of these subspaces and on the consequences of those observed properties for the design of search algorithms.
Similar content being viewed by others
References
Almagor L, Cooper KD, Grosul A, Harvey TJ, Reeves SW, Subramanian D, Torczon L, Waterman T (2004) Finding effective compilation sequences. In: Proceedings of the ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems, pp. 231–239
Alpern B, Wegman MN, Zadeck FK (1988) Detecting equality of variables in programs. In: Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, San Diego, CA, USA, pp. 1–11
Briggs P, Cooper KD (1994) Effective partial redundancy elimination. SIGPLAN Notices proceedings of the ACM SIGPLAN ’94 Conference on Programming Language Design and Implementation 29(6):159–170
Briggs P, Cooper KD, Simpson LT (1997) Value numbering. Software–Practice Exper 27(6):701–724
Chaitin GJ, Auslander MA, Chandra AK, Cocke J, Hopkins ME, Markstein PW (1981) Register allocation via graph coloring. Comput Langu 6(1):47–57
Click C, KD Cooper (1995) Combining analyses, combining optimizations. ACM Transactions on Programming Languages and Systems 17(2):181–196
Cooper KD, Schielke PJ, Subramanian D (1999) Optimizing for reduced code space using genetic algorithms. In: 1999 Acm sigplan Workshop on Languages, Compilers, and Tools for Embedded Systems (Lctes), pages 1–9
Cooper KD, Schielke PJ, Subramanian D (1999) Optimizing for reduced code space using genetic algorithms. In: 1999 Acm sigplan Workshop on Languages, Compilers, and Tools for Embedded Systems (Lctes), pp. 1–9
Cooper KD, Simpson LT, Vick CA (2001) Operator strength reduction. ACM Transactions on Programming Languages and Systems, to appear
Cooper KD, Subramanian D, Torczon L (2001) Adaptive optimizing compilers for the 21st century. In: Proceedings of the 2001 LACSI symposium. Los Alamos Computer Science Institute, Available at http://www.cs.rice.edu/˜keith/Adapt
Cooper KD, Torczon L (2003) Engineering a compiler. Morgan-Kaufmann Publishers
Cytron R, Ferrante J, Rosen BK, Wegman MN, Zadeck FK (1991) Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems (TOPLAS) 13(4):451–490
Davidson JW, Fraser CW (1980) The design and application of a retargetable peephole optimizer. ACM Transactions on Programming Languages and Systems (TOPLAS) 2(2):191–202
Forsythe GE, Malcolm MA, Moler CB (1977) Computer Methods for Mathematical Computations. Prentice-Hall, Englewood Cliffs, NJ, USA
Goedecker S, Hoisie A (2001) Performance Optimization of Numerically Intensive Codes. SIAM, Philadelphia, PA, USA
Knoop J, RÜthing O, Steffen B (1992) Lazy code motion. SIGPLAN Notices, In: Proceedings of the ACM SIGPLAN ’92 Conference on Programming Language Design and Implementation 27(7):224–234
Morel E, Renvoise C (1979) Global optimization by suppression of partial redundancies. Communications of the ACM 22(2):96–103
Pollock LL (1986) An Approach to Incremental Compilation of Optimized Code. PhD thesis, University of Pittsburgh, Department of Computer Science
Robison AD (2001) Impact of economics on compiler optimization. In: Proceedings of the ACM 2001 Java Grande Conference, Stanford University, pp. 1–10
Simpson LT (1996) Value-Driven Redundancy Elimination. PhD thesis, Rice University
Triantafyllis S, Vachharajani M, Vachharajani N, August DI (2003) Compiler optimization-space exploration. In: Proceedings of the ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems
Wegman M, Zadeck FK (1991) Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems, 13(2):181–210
Whitfield DL, Soffa ML (1997) An approach for exploring code improving transformations. ACM Transactions on Programming Languages and Systems (TOPLAS) 19(6):1053–1084
Zhao M, Childers B, Soffa ML (2003) Predicting the impact of optimizations for embedded systems. In: Proceedings of the ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems, pp. 1–11
Author information
Authors and Affiliations
Additional information
This work has been supported by the Los Alamos Computer Science Institute and by the National Science Foundation through grant CCR-0205303.
Rights and permissions
About this article
Cite this article
Cooper, K.D., Grosul, A., Harvey, T.J. et al. Exploring the structure of the space of compilation sequences using randomized search algorithms. J Supercomput 36, 135–151 (2006). https://doi.org/10.1007/s11227-006-7954-5
Issue Date:
DOI: https://doi.org/10.1007/s11227-006-7954-5