-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gh-128515: Add BOLT build to CI #128845
base: main
Are you sure you want to change the base?
gh-128515: Add BOLT build to CI #128845
Conversation
29351fc
to
1d7ab1e
Compare
Copied from the JIT workflow
Interesting, edit: This occurs because |
I encountered a couple blockers for aarch64, a failed assertion in the instrumented binary
and (after hacking past that) a segfault in BOLT
I dropped aarch64 in 684ece4 — we can add it later. |
A few tests are failing after BOLT optimization. I'd appreciate some guidance on that.
|
The timing on this actually seems pretty reasonable at 13 minutes. We could expand this to perform other build optimizations, e.g., PGO, to verify they're working as intended? Right now it's just BOLT though. |
Two things
|
Can you expand on this comment?
Sounds good to me — should I open an issue to investigate why they fail too? Like is the profiler actually broken? |
Because we skip several tests with BOLTed binary, PGO + LTO can not check the regression issue where tests are skipped. Currently, PGO + LTO is the standard optimization policy of the CPython project.
Yeah, we should; maybe @pablogsal is interested in this issue. |
# Do not test BOLT with free-threading, to conserve resources | ||
- bolt: true | ||
free-threading: true | ||
# BOLT currently crashes during instrumentation on aarch64 | ||
- os: ubuntu-24.04-aarch64 | ||
bolt: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have strong feelings about this pattern (using exclude
instead of include
), but liked that I could document why we're not running the additional cases.
@@ -246,10 +250,17 @@ jobs: | |||
exclude: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not a strong opinion, but I would prefer to have just 1, 2, or 3 jobs with bolt. unless it is absolutely needed.
We can move some very specific builds to buildbots, while maintatining the bare minimum in CI.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just one job with BOLT — I think in the future we'd want a second job for aarch64 once that's unblocked. Are you suggesting I should frame this as an include
instead? ref #128845 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes! Sorry for not being clear :)
Adds BOLT test coverage to CI, which will allow us to prevent regressions and move towards stabilization of this feature.
Of note:
test_pickle
case from the profiling corpus because we use a RO file system for builds