-
Notifications
You must be signed in to change notification settings - Fork 4.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
Regression from hoisting out of nested loop #71059
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Some other: dotnet/perf-autofiling-issues#6211 and dotnet/perf-autofiling-issues#6276 |
There is some interesting diff to look into. Specially the Full diff: https://www.diffchecker.com/BDiOlcSB |
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsRun Information
Regressions in Benchstone.MDBenchI.MDGeneralArray
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Benchstone.MDBenchI.MDGeneralArray*' PayloadsHistogramBenchstone.MDBenchI.MDGeneralArray.Test
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
Regressions in Burgers
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Burgers*' PayloadsHistogramBurgers.Test3
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in Benchstone.BenchI.Array2
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Benchstone.BenchI.Array2*' PayloadsHistogramBenchstone.BenchI.Array2.Test
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
MD array regressions are fixed by #70271, but I will double check if without the hoisting PR, if it would have improved these benchmarks more. |
I spent some time investigating I do notice that post loophoist changes, the hot loop ends with "JCC erratum" and I am guessing that could be the reason for regression. |
Likewise for |
I added a flag to disable "hoisting expression out of nested loop" in kunalspathak@a29daa4 to see what the impact is on performance post #70271. Hoisting doesn't change the generated code as seen in https://www.diffchecker.com/wQsuJBye. Here, left is code generated without "hoisting out of nested loop" and right is code generated with "hoisting out of nested loop" (same as main). In fact, we hoist fetching upper/lower bounds out of nested loops as seen below. So, to conclude, there could be regression from hoisting changes because of increasing register pressure, but MD optimizations bring that down. Also, by verifying the code without loop hoisting, we don't see much difference and we can conclude that it has not blocked any further improvements that we see in #71059 (comment). There is no further action needed for this issue, so I am closing it. |
@kunalspathak, this regression showed up in multiple configurations while working on the monthly perf report. Should this regression be triaged as "by design"? Thanks! Benchstone.BenchI.Array2.Test
|
I re-checked the Other diffs are included in zip file for all the methods involved in the benchmark. I will call it as "by design". |
Run Information
Regressions in Benchstone.MDBenchI.MDGeneralArray
Test Report
Repro
Payloads
Baseline
Compare
Histogram
Benchstone.MDBenchI.MDGeneralArray.Test
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in Burgers
Test Report
Repro
Payloads
Baseline
Compare
Histogram
Burgers.Test3
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in Benchstone.BenchI.Array2
Test Report
Repro
Payloads
Baseline
Compare
Histogram
Benchstone.BenchI.Array2.Test
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: