• DocumentCode
    3582182
  • Title

    SamplePGO - The Power of Profile Guided Optimizations without the Usability Burden

  • Author

    Novillo, Diego

  • Author_Institution
    Google Canada Ltd., Toronto, ON, Canada
  • fYear
    2014
  • Firstpage
    22
  • Lastpage
    28
  • Abstract
    Profile-guided optimizations (PGO) offer more optimization opportunities that are typically hard to obtain with static heuristics and techniques. In several application domains, significant performance can be gained by using runtime profiles to guide optimization. However, traditional PGO techniques that rely on compiler instrumentation are difficult enough to use that they have not become very popular.This paper describes SamplePGO, an LLVM implementation of a profile-guided technique that addresses the usability problem. Instead of using compiler-generated instrumentation to generate profiles, it relies on profile information gathered by external sampling profilers. These profilers use commonly available hardware counters to inspect the execution of a program.In our experience with large applications in video/image processing, logs processing, web search and ads, we have obtained, in our GCC implementation, performance improvements of up to 30% using SamplePGO over statically optimized code.While the LLVM implementation is fully functional as of LLVM 3.5, not many optimization passes in LLVM make use of profile information. Therefore, the speedups we have been able to obtain using LLVM are much more modest (up to 5% over statically optimized code).
  • Keywords
    optimisation; program compilers; GCC implementation; LLVM implementation; SamplePGO; Web search; compiler instrumentation; logs processing; profile guided optimizations; static heuristics; usability burden; video/image processing; Hardware; Instruments; Optimization; Performance gain; Radiation detectors; Runtime; Usability;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    LLVM Compiler Infrastructure in HPC (LLVM-HPC), 2014
  • Type

    conf

  • DOI
    10.1109/LLVM-HPC.2014.8
  • Filename
    7069298