Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/3049832.3049845acmconferencesArticle/Chapter ViewAbstractPublication PagescgoConference Proceedingsconference-collections
Article

ThinLTO: scalable and incremental LTO

Published: 04 February 2017 Publication History

Abstract

Cross-Module Optimization (CMO) is an effective means for improving runtime performance, by extending the scope of optimizations across source module boundaries. Two CMO approaches are Link-Time Optimization (LTO) and Lightweight Inter-Procedural Optimization (LIPO). However, each of these solutions has limitations that prevent it from being enabled by default. ThinLTO is a new approach that attempts to address these limitations, with a goal of being enabled more broadly. ThinLTO aims to be as scalable as a regular non-LTO build, enabling CMO on large applications and machines without large memory configurations, while also integrating well with distributed and incremental build systems. This is achieved through fast purely summary-based Whole-Program Analysis (WPA), the only serial step, without reading or writing the program’s Intermediate Representation (IR). Instead, CMO is applied during fully parallel optimization backends.
This paper describes the motivation behind ThinLTO, its overall design, and current implementation in LLVM. Results from SPEC cpu2006 benchmarks and several large real-world applications illustrate that ThinLTO can scale as well as a non-LTO build while enabling most of the CMO performed with a full LTO build.

References

[1]
G. Aigner and U. Hölzle. Eliminating virtual function calls in C++ programs. In Proceedings of the 10th European Conference on Object-Oriented Programming, ECCOP ’96, 1996.
[2]
AMD. Using the x86 open64 compiler suite. Advanced Micro Devices, 2011.
[3]
A. Ayers, S. de Jong, J. Peyton, and R. Schooler. Scalable cross-module optimization. In Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, PLDI ’98, pages 301–312, New York, NY, USA, 1998. ACM.
[4]
R. Cohn and P. G. Lowney. Feedback directed optimization in Compaq’s compilation tools for Alpha. In Proceedings of the Second Workshop on Feedback-Directed Optimization, held in conjunction with MICRO-33, pages 3–12, Nov. 1999.
[5]
K. D. Cooper, K. Kennedy, and L. Torczon. Interprocedural optimization: Eliminating unnecessary recompilation. In Proceedings of the 1986 SIGPLAN Symposium on Compiler Construction, SIGPLAN ’86, pages 58–67, New York, NY, USA, 1986. ACM.
[6]
K. D. Cooper, M. W. Hall, and L. Torczon. An experiment with inline substitution. Softw. Pract. Exper., May 1991.
[7]
J. W. Davidson and A. M. Holler. A study of a c function inliner. Softw. Pract. Exper., Aug. 1988.
[8]
Free Software Foundation, Inc. GCC, the GNU compiler collection, 2016 (accessed 29-November-2016).
[9]
T. Glek and J. Hubicka. Optimizing real world applications with GCC link time optimization. CoRR, 2010.
[10]
Google. Bazel, 2015 (accessed 29-November-2016).
[11]
M. W. Hall. Managing Interprocedural Optimization. PhD thesis, Houston, TX, USA, 1991. UMI Order No. GAX91- 36029.
[12]
Itanium C++ ABI. Vague linkage, 2001 (accessed 29-November-2016).
[13]
R. Ju, S. Chan, F. Chow, X. Feng, and W. Chen. Open research compiler (ORC): Beyond version 1.0. In Tutorial presented at the 11th International Conference on Parallel Architectures and Compilation Techniques, Sept. 2002.
[14]
C. Lattner and V. Adve. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proceedings of International Symposium on Code Generation and Optimization (CGO), Mar 2004.
[15]
X. D. Li, R. Ashok, and R. Hundt. Lightweight feedbackdirected cross-module optimization. In Proceedings of International Symposium on Code Generation and Optimization (CGO), 2010.
[16]
X. D. Li, R. Ashok, and R. Hundt. LIPO - profile feedback based lightweight IPO, 2013 (accessed 29-November-2016).
[17]
Microsoft Corporation. Speeding up the incremental developer build scenario, 2014 (accessed 29-November- 2016).
[18]
S. Moon, X. D. Li, R. Hundt, D. R. Chakrabarti, L. A. Lozano, U. Srinivasan, and S.-M. Liu. Syzygy - a framework for scalable cross-module ipo. In Proceedings of the International Symposium on Code Generation and Optimization: Feedbackdirected and Runtime Optimization, CGO ’04, 2004.
[19]
R. Muth, S. Debray, S. Watterson, K. D. Bosschere, and V. E. E. Informatiesystemen. Alto: A link-time optimizer for the Compaq Alpha. Software - Practice and Experience, 31: 67–101, 1999.
[20]
A. Srivastava and D. W. Wall. A practical system for intermodule code optimization at link-time. Research Report, 1992.
[21]
The Chromium Projects. Chromium, 2016 (accessed 29-November-2016).
[22]
The LLVM Foundation. clang: a C language family frontend for LLVM, 2016 (accessed 29-November-2016).
[23]
The LLVM Foundation. The LLVM compiler infrastructure, 2016 (accessed 29-November-2016).
[24]
The LLVM Foundation. LLVM bitcode file format, 2016 (accessed 29-November-2016).
[25]
The LLVM Foundation. LLVM language reference manual, 2016 (accessed 29-November-2016).
[26]
C. Tice, T. Roeder, P. Collingbourne, S. Checkoway, U. Erlingsson, L. Lozano, and G. Pike. Enforcing forward-edge control-flow integrity in gcc & llvm. In Proceedings of the 23rd USENIX Conference on Security Symposium, SEC’14, pages 941–955, Berkeley, CA, USA, 2014. USENIX Association. ISBN 978-1-931971-15-7.
[27]
L. Van Put, D. Chanet, B. De Bus, B. De Sutter, and K. De Bosschere. DIABLO: a reliable, retargetable and extensible link-time rewriting framework. In International Symposium on Signal Processing and Information Technology, pages 7–12, 2005.

Cited By

View all
  • (2024)Optimistic and Scalable Global Function MergingProceedings of the 25th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems10.1145/3652032.3657575(46-57)Online publication date: 20-Jun-2024
  • (2024)Binary Folding Compression for Efficient Software DistributionProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3636006(169-176)Online publication date: 8-Apr-2024
  • (2023)A Multi-threaded Fast Hardware Compiler for HDLsProceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction10.1145/3578360.3580254(25-36)Online publication date: 17-Feb-2023
  • Show More Cited By
  1. ThinLTO: scalable and incremental LTO

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    CGO '17: Proceedings of the 2017 International Symposium on Code Generation and Optimization
    February 2017
    317 pages
    ISBN:9781509049318

    Sponsors

    Publisher

    IEEE Press

    Publication History

    Published: 04 February 2017

    Check for updates

    Author Tags

    1. Cross-module
    2. Inter-procedural
    3. Link-Time Optimization
    4. Optimization

    Qualifiers

    • Article

    Conference

    CGO '17
    Sponsor:

    Acceptance Rates

    CGO '17 Paper Acceptance Rate 26 of 116 submissions, 22%;
    Overall Acceptance Rate 312 of 1,061 submissions, 29%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)22
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 01 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Optimistic and Scalable Global Function MergingProceedings of the 25th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems10.1145/3652032.3657575(46-57)Online publication date: 20-Jun-2024
    • (2024)Binary Folding Compression for Efficient Software DistributionProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3636006(169-176)Online publication date: 8-Apr-2024
    • (2023)A Multi-threaded Fast Hardware Compiler for HDLsProceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction10.1145/3578360.3580254(25-36)Online publication date: 17-Feb-2023
    • (2022)Scalable size inliner for mobile applications (WIP)Proceedings of the 23rd ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems10.1145/3519941.3535074(116-120)Online publication date: 14-Jun-2022
    • (2022)Efficient profile-guided size optimization for native mobile applicationsProceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction10.1145/3497776.3517764(243-253)Online publication date: 19-Mar-2022
    • (2021)Inlining for Code Size ReductionProceedings of the 25th Brazilian Symposium on Programming Languages10.1145/3475061.3475081(17-24)Online publication date: 27-Sep-2021
    • (2020)Instead of rewriting foreign code for machine learning, automatically synthesize fast gradientsProceedings of the 34th International Conference on Neural Information Processing Systems10.5555/3495724.3496770(12472-12485)Online publication date: 6-Dec-2020
    • (2019)JumpswitchesProceedings of the 2019 USENIX Conference on Usenix Annual Technical Conference10.5555/3358807.3358832(285-299)Online publication date: 10-Jul-2019
    • (2019)SoftSKUProceedings of the 46th International Symposium on Computer Architecture10.1145/3307650.3322227(513-526)Online publication date: 22-Jun-2019
    • (2019)To unify or not to unify: a case study on unified builds (in WebKit)Proceedings of the 28th International Conference on Compiler Construction10.1145/3302516.3307347(42-52)Online publication date: 16-Feb-2019
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media