forked from google/autofdo
-
Notifications
You must be signed in to change notification settings - Fork 0
AutoFDO
License
Apache-2.0, Apache-2.0 licenses found
Licenses found
Apache-2.0
LICENSE
Apache-2.0
COPYING
rwalkr/autofdo
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The repository contains a tool to convert perf.data profile to AutoFDO profile that can be used by GCC and LLVM. Each compiler is supported by a different tool. For GCC, use 'create_gcov'. For LLVM, use 'create_llvm_prof'. LLVM version 5 or higher is required. The two tools have compatible command line flags. However, the outputs are incompatible. You cannot use the profile generated for GCC in LLVM and vice-versa. Install dependencies: sudo apt-get -y install autoconf automake git libelf-dev libssl-dev pkg-config Clone the repository using the following command: git clone --recursive https://github.com/google/autofdo.git Note: `--recursive` fetches https://github.com/google/perf_data_converter.git, which contains quipper, and https://github.com/google/protobuf.git. Full build instructions are in the INSTALL file, most can just install the above dependencies, and: aclocal -I .; autoheader; autoconf; automake --add-missing -c ./configure # or --with-llvm=$(which llvm-config-5.0) make -j$(nproc) Usage: ./create_gcov --binary=BINARY --profile=PERF_PROFILE --gcov=OUTPUT ./create_llvm_prof --binary=BINARY --profile=PERF_PROFILE --out=OUTPUT Inputs: --profile: PERF_PROFILE collected using linux perf (with last branch record). In order to collect this profile, you will need to have an Intel CPU that have last branch record (LBR) support. You also need to have your linux kernel configured with LBR support. To profile: # perf record -c PERIOD -e EVENT -b -o perf.data -- ./command EVENT is refering to BR_INST_RETIRED:TAKEN if available. For some architectures, BR_INST_EXEC:TAKEN also works. --binary: BINARY with debug info. You need to make sure the binary name is the same as the binary you run during profiling. Additionally, you will need to have debug info (i.e. line table) availabe in the binary. This means that you need to compile the binary with "-gmlt" or "-g1". For LLVM, you alse need to have -fdebug-info-for-profiling. Output: For create_gcov: An AutoFDO profile in gcov format. To use the profile with AutoFDO, you need to use the google gcc branch (gcc.gnu.org/svn/gcc/branches/google/gcc-4_8), and pass the following flag to GCC: -fauto-profile=PROFILE_FILE For create_llvm_prof: An AutoFDO profile in LLVM format. To use the profile with LLVM, you need to use the flag -fprofile-sample-use=PROFILE_FILE. This feature is available in LLVM 3.5 and later.
About
AutoFDO
Resources
License
Apache-2.0, Apache-2.0 licenses found
Licenses found
Apache-2.0
LICENSE
Apache-2.0
COPYING
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- C++ 65.3%
- Shell 22.0%
- Makefile 6.7%
- M4 3.0%
- C 1.5%
- HTML 1.4%
- CSS 0.1%