commit | 7f4febde1030b8bb409cc56a50e575ff08fcd6ae | [log] [tgz] |
---|---|---|
author | Amir Ayupov <aaupov@fb.com> | Tue May 13 13:20:13 2025 -0700 |
committer | GitHub <noreply@github.com> | Tue May 13 13:20:13 2025 -0700 |
tree | bbb2df9c35bc906d1916e1b80575e1d959a5846c | |
parent | 3b3adefd58826ca4dfd87df8099766d416c54341 [diff] |
[BOLT][heatmap] Compute section utilization and partition score (#139193) Heatmap groups samples into buckets of configurable size (`--block-size` flag with 64 bytes as the default =X86 cache line size). Buckets are mapped to containing sections; for buckets that cover multiple sections, they are attributed to the first overlapping section. Buckets not mapped to a section are reported as unmapped. Heatmap reports **section hotness** which is a percentage of samples attributed to the section. Define **section utilization** as a percentage of buckets with non-zero samples relative to the total number of section buckets. Also define section **partition score** as a product of section hotness (where total excludes unmapped buckets) and mapped utilization, ranging from 0 to 1 (higher is better). The intended use of new metrics is with **production profile** collected from BOLT-optimized binary. In this case the partition score of .text (hot text if function splitting is enabled) reflects **optimization profile** representativeness and the quality of hot-cold splitting. Partition score of 1 means that all samples fall into hot text, and all buckets (cache lines) in hot text are exercised, equivalent to perfect hot-cold splitting. Test Plan: updated heatmap-preagg.test
Welcome to the LLVM project!
This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.
The LLVM project has multiple components. The core of the project is itself called “LLVM”. This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.
C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.
Other components include: the libc++ C++ standard library, the LLD linker, and more.
Consult the Getting Started with LLVM page for information on building and running LLVM.
For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.
Join the LLVM Discourse forums, Discord chat, LLVM Office Hours or Regular sync-ups.
The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.