-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
JIT: Move profile checking back until just before inlining #101011
JIT: Move profile checking back until just before inlining #101011
Conversation
Fixes the following areas with proper profile updates: * GDV chaining * instrumentation-introduces flow * OSR step blocks * fgSplitEdge (used by instrumentation) Adds checking bypasses for: * callfinally pair tails * original method entries in OSR methods Contributes to dotnet#93020
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
@amanasifkhalid PTAL Modest number of diffs from some of the profile changes. FYI getting this checking past inlining is going to require some more work. Need to think about it a bit. |
/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo |
Azure Pipelines successfully started running 4 pipeline(s). |
Stress shows a number of related failures, so this needs more work. |
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.
Preliminary pass LGTM
/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo |
Pull request contains merge conflicts. |
/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo |
Azure Pipelines successfully started running 4 pipeline(s). |
The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce. |
I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout. |
jit-format is failing because we can't extract the compile commands...
Looks like this is getting fixed in #101297. |
/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 5 pipeline(s). |
libraries-jitstress and libraries-pgo seem like they may be unrelated. But pgostress is related. Will keep trying to repro this locally. |
/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 5 pipeline(s). |
@amanasifkhalid think this is ready... |
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.
LGTM, thanks for seeing this through!
We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?
} | ||
} | ||
|
||
// No matter what, the minimum weight is zero |
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.
// No matter what, the minimum weight is zero | |
// No matter what, the minimum weight is zero |
|
I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs). Also will fix the comment issue you noted above. |
…1011) Fixes the following areas with proper profile updates: * GDV chaining * instrumentation-introduces flow * OSR step blocks * fgSplitEdge (used by instrumentation) Adds checking bypasses for: * callfinally pair tails * original method entries in OSR methods Contributes to dotnet#93020
Fixes the following areas with proper profile updates:
Adds checking bypasses for:
Contributes to #93020