-
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: profile synthesis blend and repair modes #83567
Conversation
Implement blend and repair modes for synthesis. Blend merges a bit of synthesized data into an existing PGO data set; repair tries to fix any local inconsistencies (via heuristics). Both run count construction afterwards. Trust blended data like we trust dynamic data. Probably will want more nuance here (eg trust dynamic blend, but not static blend) but this is sufficent for now. Also implement random and reverse modes; these will ultimately be used for stress testing (not called anywhere yet). Parameterize some of the magic constants that have cropped up. Add blend mode as a new weekend pgo stress mode; fix the other synthesis mode I added recently to pgo stress to set the config properly. Contributes to dotnet#82964.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsImplement blend and repair modes for synthesis. Blend merges a bit of synthesized data into an existing PGO data set; repair tries to fix any local inconsistencies (via heuristics). Both run count construction afterwards. Trust blended data like we trust dynamic data. Probably will want more nuance here (eg trust dynamic blend, but not static blend) but this is sufficent for now. Also implement random and reverse modes; these will ultimately be used for stress testing (not called anywhere yet). Parameterize some of the magic constants that have cropped up. Add blend mode as a new weekend pgo stress mode; fix the other synthesis mode I added recently to pgo stress to set the config properly. Contributes to #82964.
|
@jakobbotsch PTAL Example of blend mode in action:
|
Mono failure is known: #81123. |
3 diffs in asp.net, because runtime/src/coreclr/jit/importer.cpp Lines 13022 to 13033 in 3c38189
We have
and so previously we'd determine that the entry weight was different than zero, and now we think it is not. This is an OSR method and we currently don't have a good mechanism for determining the appropriate entry weight for such methods. We set the weight to 1% of the weight of the target block, guessing that the loop that inspired OSR must have executed at least 100 times. Since there are just a handful of diffs I'll leave it as is. |
Implement blend and repair modes for synthesis. Blend merges a bit of synthesized data into an existing PGO data set; repair tries to fix any local inconsistencies (via heuristics). Both run count construction afterwards.
Trust blended data like we trust dynamic data. Probably will want more nuance here (eg trust dynamic blend, but not static blend) but this is sufficent for now.
Also implement random and reverse modes; these will ultimately be used for stress testing (not called anywhere yet).
Parameterize some of the magic constants that have cropped up.
Add blend mode as a new weekend pgo stress mode; fix the other synthesis mode I added recently to pgo stress to set the config properly.
Contributes to #82964.