-
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
Regressions from loop alignment fixes #71646
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. |
Coming from #70936 |
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsRun Information
Regressions in Benchstone.BenchI.HeapSort
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Benchstone.BenchI.HeapSort*' PayloadsHistogramBenchstone.BenchI.HeapSort.Test
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
Regressions in Benchstone.BenchF.MatInv4
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Benchstone.BenchF.MatInv4*' PayloadsHistogramBenchstone.BenchF.MatInv4.Test
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
Investigating Investigating further on why we end up in situation where loop block appears before loop top is because at one point, we compact two blocks, I can think of 3 possible ways to solve this problem:
JitDump extract
|
I was just about to investigate this (seems like we're both assigned). From the dump:
That should tell us that we're compacting blocks that potentially have quite different execution frequencies (note in the before picture BB07 has much higher weight that BB25) and that we need to tread carefully. Some thoughts:
|
Sure, but then the compacted block should have the |
? If we block compaction there is no compacted block, BB07 lives on as is and says it belongs to L01 like it does now. |
Ah you meant "block" as a verb, and I read that as "noun" :) |
Right, we could block (== not allow) compaction of these blocks. |
Are you going to work on a fix? If so, I'll unassign myself. If not, I'm happy to take this over. |
I can do it. |
I just think that we should prohibit compacting if the 2 blocks are part of different loops? Edit: Or make sure to retain the JITDump
|
By the way, changing just that condition would remove the 1st empty, which changes the bbNum and that upsets LSRA and we see lot of diffs around it. |
I'm not sure what "that condition" refers to... Your proposed change is probably fine, but I trust the pred count and align flag a bit more than I trust the loop index. |
I meant to not allow block compaction if 2nd block has alignment flag.
True, but |
Run Information
Regressions in Benchstone.BenchI.HeapSort
Test Report
Repro
Payloads
Baseline
Compare
Histogram
Benchstone.BenchI.HeapSort.Test
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in Benchstone.BenchF.MatInv4
Test Report
Repro
Payloads
Baseline
Compare
Histogram
Benchstone.BenchF.MatInv4.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: