Skip to content

Conversation

@kunalspathak
Copy link
Contributor

If a method needs consecutive register, we do not use *minimal() register allocation strategy added in #96386. The reason being that in some cases, the *minimal might allocate registers that will sometime obstruct us from allocating consecutive registers. Also, to handle consecutive registers scenarios in *minimal() methods eats up the massive TP gain that we see in Arm64 for MinOpts because of the checks we need to add if refPosition needs consecutive register or not. I forgot to add a condition for consecutive register while deciding the selection heuristics.

Fixes: #97638

@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 29, 2024
@ghost ghost assigned kunalspathak Jan 29, 2024
@ghost
Copy link

ghost commented Jan 29, 2024

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

If a method needs consecutive register, we do not use *minimal() register allocation strategy added in #96386. The reason being that in some cases, the *minimal might allocate registers that will sometime obstruct us from allocating consecutive registers. Also, to handle consecutive registers scenarios in *minimal() methods eats up the massive TP gain that we see in Arm64 for MinOpts because of the checks we need to add if refPosition needs consecutive register or not. I forgot to add a condition for consecutive register while deciding the selection heuristics.

Fixes: #97638

Author: kunalspathak
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@ryujit-bot
Copy link

Diff results for #97657

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,029,386 contexts (927,368 MinOpts, 1,102,018 FullOpts).

MISSED contexts: 109 (0.01%)

Overall (-41,352 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,533,064 -372
benchmarks.run_tiered.osx.arm64.checked.mch 15,508,464 -220
coreclr_tests.run.osx.arm64.checked.mch 483,586,020 -40,760
MinOpts (-41,352 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,373,348 -372
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,272 -220
coreclr_tests.run.osx.arm64.checked.mch 330,172,768 -40,760

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,070,850 contexts (937,853 MinOpts, 1,132,997 FullOpts).

MISSED contexts: 139 (0.01%)

Overall (-41,352 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 46,609,220 -372
benchmarks.run_tiered.windows.arm64.checked.mch 15,506,140 -220
coreclr_tests.run.windows.arm64.checked.mch 496,298,628 -40,760
MinOpts (-41,352 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,258,192 -372
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,748 -220
coreclr_tests.run.windows.arm64.checked.mch 339,674,404 -40,760

Details here


Throughput diffs

Throughput diffs for osx/arm64 ran on windows/x64

MinOpts (-0.01% to +0.00%)
Collection PDIFF
libraries.pmi.osx.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97657

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,259,470 contexts (1,008,044 MinOpts, 1,251,426 FullOpts).

MISSED contexts: 159 (0.01%)

Overall (-41,352 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 79,903,244 -372
benchmarks.run_tiered.linux.arm64.checked.mch 22,276,872 -220
coreclr_tests.run.linux.arm64.checked.mch 509,740,232 -40,760
MinOpts (-41,352 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,548,372 -372
benchmarks.run_tiered.linux.arm64.checked.mch 17,338,964 -220
coreclr_tests.run.linux.arm64.checked.mch 348,907,856 -40,760

Details here


@kunalspathak
Copy link
Contributor Author

@dotnet/jit-contrib

@kunalspathak kunalspathak merged commit e6dbaba into dotnet:main Jan 30, 2024
@kunalspathak kunalspathak deleted the checked-release branch January 30, 2024 19:52
@github-actions github-actions bot locked and limited conversation to collaborators Mar 1, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JIT: checked/release diffs

3 participants