JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

JIT: Move profile checking back until just before inlining - #101011

Merged
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a
Apr 22, 2024
Merged

JIT: Move profile checking back until just before inlining#101011
AndyAyersMS merged 7 commits into
dotnet:mainfrom
AndyAyersMS:BlockWeightConsistency2a

Conversation

@AndyAyersMS

Copy link
Copy Markdown
Member

Fixes the following areas with proper profile updates:

  • GDV chaining
  • instrumentation-introduces flow
  • OSR step blocks
  • fgSplitEdge (used by instrumentation)

Adds checking bypasses for:

  • callfinally pair tails
  • original method entries in OSR methods

Contributes to #93020

Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 13, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid PTAL
cc @dotnet/jit-contrib

Modest number of diffs from some of the profile changes.

FYI getting this checking past inlining is going to require some more work. Need to think about it a bit.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Stress shows a number of related failures, so this needs more work.

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Preliminary pass LGTM

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Pull request contains merge conflicts.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 4 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

@amanasifkhalid

amanasifkhalid commented Apr 18, 2024

Copy link
Copy Markdown
Contributor

The failures (at least pgostress so far) are proving difficult to repro. Starting to worry that having this checking on by default is going to be counterproductive, if we keep seeing a long tail of rare cases that don't get properly handled and are hard to capture/reproduce.

I suppose if inlining and block layout are most likely to benefit from a robust profile, and your current work has ensured profiles are consistent for the majority of methods up to inlining, then maybe it makes sense to scale back our broader goals for profile consistency to just up to inlining? We can always just re-run profile repair right before doing layout.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

jit-format is failing because we can't extract the compile commands...

;; linux Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -[18:02:22] Running: /tmp/tmpk8nyid8a/jitutils/bin/jit-format -a x64 -b Checked -o linux -r /__w/1/s --verbose --projects dll --cross
Formatting jit directory.
Can't find compile_commands.json file. Running configure.
Running: /__w/1/s/src/coreclr/build-runtime.sh x64 Checked configureonly -cmakeargs -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -cross
There was an error running CMake to generate compile_commands.json. Please run build-runtime.sh configureonly
;; windows
Formatting jit directory.
Neither compile_commands.json exists, nor is there a build log. Running CMake to generate compile_commands.json.
Running: D:\a\_work\1\s\src\coreclr\build-runtime.cmd x64 Checked -configureonly -ninja
BUILD: Starting Build at 18:09:12.60
BUILD: Commencing CoreCLR product build
BUILD: Checking prerequisites
BUILD: Using CMake from C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
BUILD: Number of processor cores 2
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
BUILD: Commencing build of native components for windows.x64.Checked
BUILD: Using environment: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.9.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
BUILD: Regenerating the Visual Studio solution
Calling "D:\a\_work\1\s\eng\native\gen-buildsys.cmd" "D:\a\_work\1\s\src\coreclr" "D:\a\_work\1\s\artifacts\obj\coreclr\windows.x64.Checked" vs2022 x64 windows "-DCMAKE_BUILD_TYPE=Checked" "-DCLR_CMAKE_TARGET_ARCH=x64" "-DCLR_CMAKE_TARGET_OS=windows" "-DCLI_CMAKE_FALLBACK_OS=win10" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=" "-DCLR_CMAKE_PGO_OPTIMIZE=0" Not searching for unused variables given on the command line.
-- The C compiler identification is MSVC 19.39.33523.0
-- The CXX compiler identification is MSVC 19.39.33523.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/ml64.exe
-- Performing Test HAVE_DIRENT_D_TYPE
-- Performing Test HAVE_DIRENT_D_TYPE - Failed
-- Looking for getauxval

Looks like this is getting fixed in #101297.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

libraries-jitstress and libraries-pgo seem like they may be unrelated.

But pgostress is related. Will keep trying to repro this locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Finally caught one

image

BB77 and BB80 are mis-weighted (likely just BB80) -- seems like multi-guess GDV is not quite right.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-coreclr libraries-pgo, runtime-coreclr jitstress, runtime-coreclr pgostress, runtime-coreclr pgo, runtime-coreclr libraries-jitstress

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 5 pipeline(s).

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid think this is ready...

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for seeing this through!

We briefly discussed not continuing this validation past inlining for now, as inlining and block layout (and hot-cold splitting) are probably the opt passes that benefit most from high-quality profile data, and we can simply re-run profile repair right before the latter to ensure it has a useful profile to work with. Plus, the stress failures these consistency checks have triggered seem to be a pain to diagnose. Are you planning on stopping here for now?

}
}

// No matter what, the minimum weight is zero

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
// No matter what, the minimum weight is zero
// No matter what, the minimum weight is zero

@amanasifkhalid

Copy link
Copy Markdown
Contributor

libraries-pgo failure looks unrelated, and SPMI failures are #101070.

@AndyAyersMS
AndyAyersMS merged commit aaebdd8 into dotnet:mainApr 22, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Are you planning on stopping here for now?

I will probably keep pushing on this for the next week or two; would be nice to be able to validate more of the flow optimizations (which generally should have local repairs).

Also will fix the comment issue you noted above.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
…1011)
Fixes the following areas with proper profile updates:
* GDV chaining
* instrumentation-introduces flow
* OSR step blocks
* fgSplitEdge (used by instrumentation)
Adds checking bypasses for:
* callfinally pair tails
* original method entries in OSR methods
Contributes to dotnet#93020
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 23, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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.

2 participants

@AndyAyersMS@amanasifkhalid