Skip to content
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: Unify preheader/exit weight calculation logic #98407

Merged
merged 4 commits into from
Feb 14, 2024

Conversation

jakobbotsch
Copy link
Member

@jakobbotsch jakobbotsch commented Feb 14, 2024

The preheader/exit weight calculation is essentially the same logic, so unify it to use the logic from the exit weight calculation. This also fixes a bug in the preheader weight calculation introduced by my recent change where we sometimes mistakenly used the weight of the newly inserted preheader instead of the header block to compute a likelihood.

The bug was here:

prevEntering->VisitRegularSuccs(this, [&, preheader](BasicBlock* succ) {
if (succ == preheader)
{
loopEnterCount += succ->bbWeight;
}
else
{
succsHaveProfileWeights &= succ->hasProfileWeight();
loopSkipCount += succ->bbWeight;
}
return BasicBlockVisit::Continue;
});

The succ == preheader case should have computed the loopEnterCount as loop->GetHeader()->bbWeight which is what the logic used to do before #96843. Of course this estimate is itself questionable, but better than using the newly inserted preheader's weight, which is always 100.

Fix #98370

The preheader/exit weight calculation is essentially the same logic, so
unify to use the logic from the exit weight calculation. This also fixes
a bug in the preheader weight calculation introduced by my recent change
where we sometimes mistakenly used the weight of the newly inserted
preheader instead of the header block to compute a likelihood.
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Feb 14, 2024
@ghost ghost assigned jakobbotsch Feb 14, 2024
@ghost
Copy link

ghost commented Feb 14, 2024

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

Issue Details

The preheader/exit weight calculation is essentially the same logic, so unify it to use the exit weight. This also fixes a bug in the preheader weight calculation introduced by my recent change where we sometimes mistakenly used the weight of the newly inserted preheader instead of the header block to compute a likelihood.

The bug was here:

prevEntering->VisitRegularSuccs(this, [&, preheader](BasicBlock* succ) {
if (succ == preheader)
{
loopEnterCount += succ->bbWeight;
}
else
{
succsHaveProfileWeights &= succ->hasProfileWeight();
loopSkipCount += succ->bbWeight;
}
return BasicBlockVisit::Continue;
});

The succ == preheader case should have computed the loopEnterCount as loop->GetHeader()->bbWeight which is what the logic used to do before #96843. Of course this estimate is itself questionable, but better than using the newly inserted preheader's weight, which is always 100.

Fix #98370

Author: jakobbotsch
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@jakobbotsch
Copy link
Member Author

cc @dotnet/jit-contrib PTAL @AndyAyersMS

Diffs

@ryujit-bot
Copy link

Diff results for #98407

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,528,537 contexts (1,004,581 MinOpts, 1,523,956 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 14 (0.00%)

Overall (-29,788 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 76,874,216 +932
coreclr_tests.run.linux.arm64.checked.mch 519,008,504 -4,612
libraries.pmi.linux.arm64.checked.mch 76,408,548 +8
libraries_tests.run.linux.arm64.Release.mch 381,196,980 -26,168
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,776,632 +52
FullOpts (-29,788 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 52,855,092 +932
coreclr_tests.run.linux.arm64.checked.mch 167,159,812 -4,612
libraries.pmi.linux.arm64.checked.mch 76,288,564 +8
libraries_tests.run.linux.arm64.Release.mch 166,340,440 -26,168
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,373,832 +52

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,531,978 contexts (984,938 MinOpts, 1,547,040 FullOpts).

MISSED contexts: 1 (0.00%)

Overall (-39,315 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 70,289,863 -11,013
coreclr_tests.run.linux.x64.checked.mch 406,612,560 -1,237
libraries_tests.run.linux.x64.Release.mch 328,179,344 -27,077
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,495,626 +12
FullOpts (-39,315 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 46,554,417 -11,013
coreclr_tests.run.linux.x64.checked.mch 127,426,041 -1,237
libraries_tests.run.linux.x64.Release.mch 146,271,067 -27,077
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,923,477 +12

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,298,749 contexts (931,667 MinOpts, 1,367,082 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 4 (0.00%)

Overall (-14,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,443,664 +196
coreclr_tests.run.osx.arm64.checked.mch 506,637,424 -2,400
libraries_tests.run.osx.arm64.Release.mch 313,989,076 -12,732
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 160,850,036 +52
FullOpts (-14,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,023,356 +196
coreclr_tests.run.osx.arm64.checked.mch 160,573,356 -2,400
libraries_tests.run.osx.arm64.Release.mch 113,345,640 -12,732
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 147,791,220 +52

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,380,843 contexts (948,167 MinOpts, 1,432,676 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 9 (0.00%)

Overall (+1,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,877,980 +28,288
coreclr_tests.run.windows.arm64.checked.mch 505,233,188 -2,824
libraries.pmi.windows.arm64.checked.mch 79,982,336 +0
libraries_tests.run.windows.arm64.Release.mch 326,307,572 -23,920
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,286,836 +44
FullOpts (+1,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,606,200 +28,288
coreclr_tests.run.windows.arm64.checked.mch 163,737,212 -2,824
libraries.pmi.windows.arm64.checked.mch 79,862,352 +0
libraries_tests.run.windows.arm64.Release.mch 120,299,320 -23,920
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,227,448 +44

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,821,026 contexts (1,163,479 MinOpts, 1,657,547 FullOpts).

Overall (+30,637 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 52,608,133 +2,406
benchmarks.run_pgo.windows.x64.checked.mch 44,504,654 -3,239
coreclr_tests.run.windows.x64.checked.mch 439,646,774 -752
libraries.pmi.windows.x64.checked.mch 61,798,296 +0
libraries_tests.run.windows.x64.Release.mch 313,410,934 +32,188
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 149,402,191 +34
FullOpts (+30,637 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 32,118,953 +2,406
benchmarks.run_pgo.windows.x64.checked.mch 23,358,313 -3,239
coreclr_tests.run.windows.x64.checked.mch 135,052,700 -752
libraries.pmi.windows.x64.checked.mch 61,684,802 +0
libraries_tests.run.windows.x64.Release.mch 111,731,468 +32,188
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 138,773,678 +34

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,242,904 contexts (830,244 MinOpts, 1,412,660 FullOpts).

MISSED contexts: 73,620 (3.18%)

Overall (-3,540 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 64,894,920 -104
coreclr_tests.run.linux.arm.checked.mch 325,414,262 -490
libraries.pmi.linux.arm.checked.mch 50,071,348 +0
libraries_tests.run.linux.arm.Release.mch 240,123,024 -2,962
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 94,378,660 +16
FullOpts (-3,540 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 53,018,226 -104
coreclr_tests.run.linux.arm.checked.mch 112,926,114 -490
libraries.pmi.linux.arm.checked.mch 49,965,124 +0
libraries_tests.run.linux.arm.Release.mch 118,033,250 -2,962
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 84,348,834 +16

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,599,256 contexts (1,005,474 MinOpts, 1,593,782 FullOpts).

MISSED contexts: base: 625 (0.02%), diff: 667 (0.03%)

Overall (-5,415 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 348,869,835 -2,982
libraries_tests.run.windows.x86.Release.mch 197,770,313 -2,451
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 113,251,254 +18
FullOpts (-5,415 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 113,764,859 -2,982
libraries_tests.run.windows.x86.Release.mch 93,261,458 -2,451
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 104,321,435 +18

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.01%
FullOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.01%
FullOpts (-0.02% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.02%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.osx.arm64.Release.mch -0.01%
FullOpts (-0.02% to +0.00%)
Collection PDIFF
libraries_tests.run.osx.arm64.Release.mch -0.02%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.00% to +0.03%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch +0.03%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch +0.01%
FullOpts (-0.00% to +0.04%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch +0.04%

Throughput diffs for windows/x64 ran on windows/x64

FullOpts (-0.00% to +0.01%)
Collection PDIFF
libraries_tests.run.windows.x64.Release.mch +0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
FullOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.01%
FullOpts (-0.02% to +0.01%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%

Details here


Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.windows.x86.Release.mch -0.01%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.windows.x86.Release.mch -0.01%

Details here


@jakobbotsch jakobbotsch marked this pull request as ready for review February 14, 2024 14:02
@ryujit-bot
Copy link

Diff results for #98407

Assembly diffs

Assembly diffs for linux/arm64 ran on linux/x64

Diffs are based on 2,528,537 contexts (1,004,581 MinOpts, 1,523,956 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 14 (0.00%)

Overall (-29,788 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 76,874,216 +932
coreclr_tests.run.linux.arm64.checked.mch 519,008,504 -4,612
libraries.pmi.linux.arm64.checked.mch 76,408,548 +8
libraries_tests.run.linux.arm64.Release.mch 381,196,980 -26,168
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,776,632 +52
FullOpts (-29,788 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 52,855,092 +932
coreclr_tests.run.linux.arm64.checked.mch 167,159,812 -4,612
libraries.pmi.linux.arm64.checked.mch 76,288,564 +8
libraries_tests.run.linux.arm64.Release.mch 166,340,440 -26,168
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,373,832 +52

Assembly diffs for linux/x64 ran on linux/x64

Diffs are based on 2,531,978 contexts (984,938 MinOpts, 1,547,040 FullOpts).

MISSED contexts: 1 (0.00%)

Overall (-39,315 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 70,289,863 -11,013
coreclr_tests.run.linux.x64.checked.mch 406,612,560 -1,237
libraries_tests.run.linux.x64.Release.mch 328,179,344 -27,077
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,495,626 +12
FullOpts (-39,315 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 46,554,417 -11,013
coreclr_tests.run.linux.x64.checked.mch 127,426,041 -1,237
libraries_tests.run.linux.x64.Release.mch 146,271,067 -27,077
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,923,477 +12

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,298,749 contexts (931,667 MinOpts, 1,367,082 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 4 (0.00%)

Overall (-14,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,443,664 +196
coreclr_tests.run.osx.arm64.checked.mch 506,637,424 -2,400
libraries_tests.run.osx.arm64.Release.mch 313,989,076 -12,732
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 160,850,036 +52
FullOpts (-14,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,023,356 +196
coreclr_tests.run.osx.arm64.checked.mch 160,573,356 -2,400
libraries_tests.run.osx.arm64.Release.mch 113,345,640 -12,732
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 147,791,220 +52

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,380,843 contexts (948,167 MinOpts, 1,432,676 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 9 (0.00%)

Overall (+1,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,877,980 +28,288
coreclr_tests.run.windows.arm64.checked.mch 505,233,188 -2,824
libraries.pmi.windows.arm64.checked.mch 79,982,336 +0
libraries_tests.run.windows.arm64.Release.mch 326,307,572 -23,920
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,286,836 +44
FullOpts (+1,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,606,200 +28,288
coreclr_tests.run.windows.arm64.checked.mch 163,737,212 -2,824
libraries.pmi.windows.arm64.checked.mch 79,862,352 +0
libraries_tests.run.windows.arm64.Release.mch 120,299,320 -23,920
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,227,448 +44

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,821,026 contexts (1,163,479 MinOpts, 1,657,547 FullOpts).

Overall (+30,637 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 52,608,133 +2,406
benchmarks.run_pgo.windows.x64.checked.mch 44,504,654 -3,239
coreclr_tests.run.windows.x64.checked.mch 439,646,774 -752
libraries.pmi.windows.x64.checked.mch 61,798,296 +0
libraries_tests.run.windows.x64.Release.mch 313,410,934 +32,188
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 149,402,191 +34
FullOpts (+30,637 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 32,118,953 +2,406
benchmarks.run_pgo.windows.x64.checked.mch 23,358,313 -3,239
coreclr_tests.run.windows.x64.checked.mch 135,052,700 -752
libraries.pmi.windows.x64.checked.mch 61,684,802 +0
libraries_tests.run.windows.x64.Release.mch 111,731,468 +32,188
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 138,773,678 +34

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
MinOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
FullOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.01%
FullOpts (-0.02% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.02%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.osx.arm64.Release.mch -0.01%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
realworld.run.osx.arm64.checked.mch +0.01%
FullOpts (-0.02% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch -0.01%
libraries_tests.run.osx.arm64.Release.mch -0.02%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.00% to +0.03%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch +0.03%
MinOpts (-0.01% to +0.00%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch -0.01%
FullOpts (-0.00% to +0.04%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch +0.04%

Throughput diffs for windows/x64 ran on windows/x64

FullOpts (-0.00% to +0.01%)
Collection PDIFF
libraries_tests.run.windows.x64.Release.mch +0.01%

Details here


Throughput diffs for windows/x86 ran on linux/x86

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.windows.x86.Release.mch -0.01%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.windows.x86.Release.mch -0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
FullOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.01%
FullOpts (-0.02% to +0.01%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%

Details here


{
bool hasProfWeight = true;

// Inherit first estimate from the exit target; optEstimateEdgeLikelihood
assert(block->GetUniqueSucc() != nullptr);
// Inherit first estimate from the target target; optEstimateEdgeLikelihood
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Inherit first estimate from the target target; optEstimateEdgeLikelihood
// Inherit first estimate from the target; optEstimateEdgeLikelihood

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will include this as part of a future PR.

@ryujit-bot
Copy link

Diff results for #98407

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,528,537 contexts (1,004,581 MinOpts, 1,523,956 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 14 (0.00%)

Overall (-29,788 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 76,874,216 +932
coreclr_tests.run.linux.arm64.checked.mch 519,008,504 -4,612
libraries.pmi.linux.arm64.checked.mch 76,408,548 +8
libraries_tests.run.linux.arm64.Release.mch 381,196,980 -26,168
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,776,632 +52
FullOpts (-29,788 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 52,855,092 +932
coreclr_tests.run.linux.arm64.checked.mch 167,159,812 -4,612
libraries.pmi.linux.arm64.checked.mch 76,288,564 +8
libraries_tests.run.linux.arm64.Release.mch 166,340,440 -26,168
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,373,832 +52

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,531,978 contexts (984,938 MinOpts, 1,547,040 FullOpts).

MISSED contexts: 1 (0.00%)

Overall (-39,315 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 70,289,863 -11,013
coreclr_tests.run.linux.x64.checked.mch 406,612,560 -1,237
libraries_tests.run.linux.x64.Release.mch 328,179,344 -27,077
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,495,626 +12
FullOpts (-39,315 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 46,554,417 -11,013
coreclr_tests.run.linux.x64.checked.mch 127,426,041 -1,237
libraries_tests.run.linux.x64.Release.mch 146,271,067 -27,077
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,923,477 +12

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,298,749 contexts (931,667 MinOpts, 1,367,082 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 4 (0.00%)

Overall (-14,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,443,664 +196
coreclr_tests.run.osx.arm64.checked.mch 506,637,424 -2,400
libraries_tests.run.osx.arm64.Release.mch 313,989,076 -12,732
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 160,850,036 +52
FullOpts (-14,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,023,356 +196
coreclr_tests.run.osx.arm64.checked.mch 160,573,356 -2,400
libraries_tests.run.osx.arm64.Release.mch 113,345,640 -12,732
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 147,791,220 +52

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,380,843 contexts (948,167 MinOpts, 1,432,676 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 9 (0.00%)

Overall (+1,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,877,980 +28,288
coreclr_tests.run.windows.arm64.checked.mch 505,233,188 -2,824
libraries.pmi.windows.arm64.checked.mch 79,982,336 +0
libraries_tests.run.windows.arm64.Release.mch 326,307,572 -23,920
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,286,836 +44
FullOpts (+1,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,606,200 +28,288
coreclr_tests.run.windows.arm64.checked.mch 163,737,212 -2,824
libraries.pmi.windows.arm64.checked.mch 79,862,352 +0
libraries_tests.run.windows.arm64.Release.mch 120,299,320 -23,920
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,227,448 +44

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,821,026 contexts (1,163,479 MinOpts, 1,657,547 FullOpts).

Overall (+30,637 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 52,608,133 +2,406
benchmarks.run_pgo.windows.x64.checked.mch 44,504,654 -3,239
coreclr_tests.run.windows.x64.checked.mch 439,646,774 -752
libraries.pmi.windows.x64.checked.mch 61,798,296 +0
libraries_tests.run.windows.x64.Release.mch 313,410,934 +32,188
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 149,402,191 +34
FullOpts (+30,637 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 32,118,953 +2,406
benchmarks.run_pgo.windows.x64.checked.mch 23,358,313 -3,239
coreclr_tests.run.windows.x64.checked.mch 135,052,700 -752
libraries.pmi.windows.x64.checked.mch 61,684,802 +0
libraries_tests.run.windows.x64.Release.mch 111,731,468 +32,188
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 138,773,678 +34

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,242,904 contexts (830,244 MinOpts, 1,412,660 FullOpts).

MISSED contexts: 73,620 (3.18%)

Overall (-3,540 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 64,894,920 -104
coreclr_tests.run.linux.arm.checked.mch 325,414,262 -490
libraries.pmi.linux.arm.checked.mch 50,071,348 +0
libraries_tests.run.linux.arm.Release.mch 240,123,024 -2,962
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 94,378,660 +16
FullOpts (-3,540 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 53,018,226 -104
coreclr_tests.run.linux.arm.checked.mch 112,926,114 -490
libraries.pmi.linux.arm.checked.mch 49,965,124 +0
libraries_tests.run.linux.arm.Release.mch 118,033,250 -2,962
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 84,348,834 +16

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,599,256 contexts (1,005,474 MinOpts, 1,593,782 FullOpts).

MISSED contexts: base: 625 (0.02%), diff: 667 (0.03%)

Overall (-5,415 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 348,869,835 -2,982
libraries_tests.run.windows.x86.Release.mch 197,770,313 -2,451
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 113,251,254 +18
FullOpts (-5,415 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 113,764,859 -2,982
libraries_tests.run.windows.x86.Release.mch 93,261,458 -2,451
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 104,321,435 +18

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
MinOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
FullOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.01%
FullOpts (-0.02% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.02%

Throughput diffs for windows/x64 ran on windows/x64

FullOpts (-0.00% to +0.01%)
Collection PDIFF
libraries_tests.run.windows.x64.Release.mch +0.01%

Details here


Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.windows.x86.Release.mch -0.01%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.windows.x86.Release.mch -0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
FullOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.01%
FullOpts (-0.02% to +0.01%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%

Details here


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.

[Perf] Linux/x64: 16 Regressions on 2/5/2024 1:05:09 PM
3 participants