aboutsummaryrefslogtreecommitdiff
path: root/bolt/utils
AgeCommit message (Collapse)AuthorFilesLines
2024-07-25[BOLT] Update Docker to use Ubuntu 24.04 (#99421)Tristan Ross1-2/+2
Updates the Dockerfile to use Ubuntu 24.04 due to CMake wanting a newer version. Can be tested by trying to build the Docker image currently in main and then try building the Docker image in this PR.
2023-12-01[BOLT][utils] Bump default time threshold to 2s in nfc-stat-parserAmir Ayupov1-1/+1
2023-12-01[BOLT][utils] Remove heatmap mode detection from wrapper scriptAmir Ayupov1-2/+1
Heatmap mode has been moved to a separate tool. Drop the support in llvm-bolt-wrapper.
2023-11-28[BOLT][utils] Bump default time threshold to 1s in nfc-stat-parserAmir Ayupov1-1/+1
2023-11-11[BOLT][Utils] Add nfc-stat-parser.py (#71979)Amir Ayupov1-0/+125
Add a utility to parse output from llvm-bolt-wrapper script and detect individual and aggregate time/memory swings. The wrapper reports wall time and peak RSS for each BOLT invocation. Exit code: The utility exits with non-zero exit code if any individual test has time or memory swing larger than `threshold_single` (default 10%), or the aggregate (geometric mean) swing larger than `threshold_agg` (default 5%). Short tests where BOLT wall time is less than `check_longer_than` seconds (default 0.5s) are excluded from threshold calculation. Output: The script prints test results exceeding the individual threshold, and geomean values if it exceeds aggregate results. In `--verbose` mode all individual results are printed (short time results are marked with '?'). Example usage: ``` $ cd ~/llvm-build # build folder where NFC testing was invoked $ python3 ~/llvm-project/bolt/utils/nfc-stat-parser.py \ --check_longer_than 0.1 `find -name timing.log` ./tools/bolt/test/runtime/X86/exceptions-pic.test/ -88.46% -0.13% Geomean -19.78% +0.37% $ echo $? 1 ```
2023-07-18[BOLT][Utils] Pass cmp-rev to nfc-check-setupAmir Ayupov1-2/+7
Pass the revision to checkout to (cmp-rev) as nfc-check-setup option. Simpifies the comparison against arbitrary commit, not just the previous one. Reviewed By: #bolt, rafauler Differential Revision: https://reviews.llvm.org/D155657
2023-07-17[BOLT][Utils] Add dot2html module entry pointAmir Ayupov1-0/+4
2023-05-25[NFC][Py Reformat] Reformat python files in the rest of the dirsTobias Hieta3-143/+228
This is an ongoing series of commits that are reformatting our Python code. This catches the last of the python files to reformat. Since they where so few I bunched them together. Reformatting is done with `black`. If you end up having problems merging this commit because you have made changes to a python file, the best way to handle that is to run git checkout --ours <yourfile> and then reformat it with black. If you run into any problems, post to discourse about it and we will try to help. RFC Thread below: https://discourse.llvm.org/t/rfc-document-and-standardize-python-code-style Reviewed By: jhenderson, #libc, Mordante, sivachandra Differential Revision: https://reviews.llvm.org/D150784
2023-05-16[BOLT][Wrapper] Fix off-by-one in find_section upper limitJob Noorman1-1/+1
find_section used to match offsets equal to file_offset + size causing offsets to sometimes be attributed to the wrong section. Reviewed By: Amir Differential Revision: https://reviews.llvm.org/D149047
2023-04-24[BOLT][Wrapper] Fix off-by-one when parsing 'cmp' outputJob Noorman1-1/+2
The byte offsets in the output of 'cmp' start from 1, not from 0 as the current parser assumes. This caused mismatched bytes to sometimes be attributed to the wrong section. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D149046
2023-02-09[BOLT][Wrapper] Don't compare output upon error exit codeAmir Ayupov1-16/+20
Fix llvm-bolt-wrapper to skip output file checks if llvm-bolt exits with error code. Test Plan: - checkout to revision with invalid NFC mismatch in `is-strip.s` test (e.g. 056af487831fb573e6895901d1e48f93922f9635~) - run `nfc-check-setup.py` - run `bin/llvm-lit -a tools/bolt/test/X86/is-strip.s` Reviewed By: #bolt, rafauler Differential Revision: https://reviews.llvm.org/D143614
2022-08-26[BOLT][UTILS] Stash including untracked in nfc-check-setupAmir Ayupov1-1/+1
The command to detect whether the stash is needed is `git status --porcelain` which includes untracked files by default. We want to stash untracked files as well as they may affect compilation (LLVM CMake checks that all source files should be included in CMakeLists). Update the stash command to include untracked files as well. Reviewed By: #bolt, rafauler Differential Revision: https://reviews.llvm.org/D132610
2022-08-17[BOLT][UTILS] Add nfc-check-setup --switch-back optionAmir Ayupov1-10/+23
Add an option to switch repo revision back, handling stashing automatically. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D128243
2022-06-03[BOLT][UTILS] Usability improvements for nfc-check-setupAmir Ayupov1-4/+27
# Stash local changes before checkout. # Print a message that the source repository revision has been changed, with instructions to switch back. # Make the script executable. # Print sample instructions how to run bolt tests. # Assume that llvm-bolt-wrapper script is in the same source directory. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D126941
2022-06-01[BOLT][UTILS] Add dot2html helper tool to embed dot into htmlAmir Ayupov2-0/+114
To be rendered in browser using d3-graphviz. Example: {F23169510} Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D126218
2022-02-04[BOLT] Add nfc-check-setup scriptAmir Ayupov1-0/+59
Add the script to set up llvm-bolt-wrapper. The intended use is to run NFC checks manually and automatically on a buildbot. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D118516
2022-01-28[BOLT] Imported llvm-bolt-wrapper scriptAmir Ayupov1-0/+397
Commit history in chronological order: [BOLT] llvm-bolt-wrapper: added wrapper for bolt binary matching Summary: Wrapper to compare two versions of BOLT to see if they produce the same output binary given the same input. (cherry picked from FBD26626137) [BOLT] llvm-bolt-wrapper: support for no-output tests and heatmap mode Summary: - Added an option `skip_binary_cmp` to support invocations that don't output a binary - Minor fixes for heatmap mode, timeout, log comparison - Rearranged in-line config example to be copy-pasteable (cherry picked from FBD26822016) [BOLT] llvm-bolt-wrapper: merge stdout/stderr, search for config in script dir (cherry picked from FBD27529335) [BOLT] llvm-bolt-wrapper: handle /dev/null Summary: Fixed the wrapper to preserve `-o /dev/null` and skip binary matching for such invocations. (cherry picked from FBD28013747) [BOLT] llvm-bolt-wrapper: handle cases where output binary doesn't exist Summary: Handle invocations where output binary is not generated (e.g. due to an expected assertion or exit with BOLT-ERROR) and skip binary comparison in such cases. (cherry picked from FBD28080158) [BOLT] llvm-bolt-wrapper: handle boltdiff mode Summary: Handle `llvm-boltdiff` invocation similarly to `perf2bolt` (cherry picked from FBD28080157) [BOLT] llvm-bolt-wrapper: find section with mismatch Summary: For mismatching ELF files, find section with mismatch and print sections table with highlighted mismatch section. (cherry picked from FBD28087231) [BOLT] llvm-bolt-wrapper: ignore-build-id in perf2bolt mode Summary: When perf2bolt fails to match build-id from perf output for cmp binary, we need to use -ignore-build-id option to override the strict checking behavior. (cherry picked from FBD28087232) [BOLT] llvm-bolt-wrapper: suppress -bolt-info=0 in heatmap mode Summary: Heatmap mode is incompatible with `-bolt-info=0` used to suppress binary differences. Remove it. (cherry picked from FBD28087230) [BOLT] llvm-bolt-wrapper: add config-generator mode Summary: llvm-bolt-wrapper config can be generated by the script itself. It makes the workflow more reliable compared to preparing the config manually. (cherry picked from FBD28358939) [BOLT] llvm-bolt-wrapper: fix mismatch reporting Summary: 1. Fixed header comparison issue where headers were skipped due to `skip_end == 0` (`lst[:-n]` does not work if n==0). 2. Detect color support while printing mismatching section: - use bold color if terminal supports ANSI escape codes, - otherwise print ">" at mismatching section. 3. Remove extra 0x before mismatching offset. (cherry picked from FBD28691979) [BOLT] llvm-bolt-wrapper: handle perf2bolt tests with ignore-build-id Summary: `ignore-build-id` must be passed not more than once. Account for that. (cherry picked from FBD29830266) [BOLT] llvm-bolt-wrapper: fix running subprocesses in parallel Summary: The commands were running sequentially due to the use of blocking `communicate` call, which is needed when stdout/stderr are directed to a pipe. Fix this behavior by directing the output to a file. (cherry picked from FBD29951863)
2022-01-12[BOLT] Update repo location in DockerfileAmir Ayupov1-1/+1
2021-12-23[bughunter.sh][NFC] Fix license and file descriptionMaksim Panchenko1-6/+8
Summary: Convert bughunter.sh to the new LLVM license and fix file-description comments. (cherry picked from FBD33298823)
2021-11-23[BOLT] Import bughunter scriptAmir Ayupov1-0/+264
Summary: Import the script and update it to use `-funcs-file-no-regex` (cherry picked from FBD32636025)
2021-10-23[BOLT] Add DockerfileMaksim Panchenko1-0/+31
Summary: Dockerfile based on Ubuntu:20.04. Fixes facebookincubator/BOLT#214. (cherry picked from FBD31883210)