Repository navigation
ci(hrr): add HRR CI with a capture gate - #12794
Closed
danielbolsson wants to merge 6 commits into
Closed
danielbolsson wants to merge 6 commits into
danielbolsson wants to merge 6 commits into
Conversation
Bring the HRR CI workflow and its test tooling over from hrr-development: host-only unit suite on Linux and Windows, a multi-arch build of CLR with capture shims plus projects/hrr, and integration suites on every GPU family with a runner, reported per platform and family. HRR capture is compiled in only under HIP_HRR_CAPTURE_ENABLED, which has no CMake option. A "Capture enabled?" gate job turns it off for a manual capture=false run, for HRR_CAPTURE_ENABLED=false in repository variables, or when the CLR guard is gone. Every other job then skips instead of failing, and "HRR CI Summary" resolves to success so it can be a required check. Also define HRR_HAVE_HSA for the integration binary so the HSA cases are compiled and match the expected-case manifest.
Catch2 attaches a failure inside a SECTION to the "Case/Section" record only, and a case whose assertions all sit in sections has no record under its own name. Counting only slash-free names printed PASS for a case with a failing section, and dropped section-only cases entirely. Group records by top-level case in run_catch2.py and summarize_junit.py, failure ahead of skip ahead of pass. Also dump the Catch2 transcript for any non-zero status other than 4 when no case failed, so a crash at exit after some skips still leaves a log. Add unit tests for the three helper scripts.
- Start on every pull request and filter paths in the gate, so a required "HRR CI Summary" always reports; run on pushes to develop so PRs find a warm ccache, and save the cache only there instead of per run. - Install in the integration jobs the exact SDK version the build job used, so capture amdhip64 cannot meet a newer ROCr. - Select the hidden [hrr] driver cases (API-matrix tiers, kernel-arg and HSA first-touch cases) with "[hrr]~[direct]"; default selection skipped them. - Publish no check run for fork pull requests, whose token is read-only. - Match the capture macro by name outside comments and warn when it is missing. - Fix the RUNPATH comment and the [cpu] case count, and run the helper tests in the Linux unit job.
❌ PR Check — Action Required
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
|
🚫 Please fix the failed policies before requesting reviews. The following policy checks failed:
The |
Signed-off-by: Daniel Olsson <daniel.olsson@amd.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
HRR has no CI on
develop. The suites exist onhrr-development(#12517, a not-for-merge integration draft); this brings the CI itself ontodevelopso every HRR PR gets it, and makes it skip cleanly when HRR capture is not enabled.Technical Details
.github/workflows/hrr-ci.yml: host-only unit suite (ubuntu, windows), a multi-arch build of CLR with the capture shims plusprojects/hrr, and integration suites on every GPU family with a runner, with per-family reporting. Starts on every pull request; the gate job skips it when no HRR path changed (projects/hrr/**exceptskills/,projects/clr/hipamd/src/hrr/**, the workflow and the runner-config action), soHRR CI Summaryalways reports and can be a required check. Also runs on pushes to develop touching those paths, which seeds the ccache that pull requests restore; only develop saves it.[hrr]driver cases with[hrr]~[direct].run_catch2.py,summarize_junit.py,check_expected_cases.pyand the expected-case manifests, with unit tests that run in the Linux unit job.HRR_HAVE_HSAfor the integration binary so the HSA cases are compiled and match the manifest.HIP_HRR_CAPTURE_ENABLED(hip_capture.cpp); no CMake option exists for it. ACapture enabled?gate job turns it off for a manualcapture=falserun, repository variableHRR_CAPTURE_ENABLED=false/0, or when the guard is gone fromhip_capture.cpp. Every other job then skips, not fails.HRR CI Summaryresolves to success when capture is off and fails on any failed or unexpectedly skipped job, so it can be a required check.projects/clr. Test-source and CLR changes that live in the HRR stack (feat(hrr): record pointed-to payloads and replay the handler families #10641 and below) are not included.Not in scope:
Multi-Arch CI Summarybelongs totherock-multi-arch-ci.ymland is unaffected. It already builds HRR through thehrrentry intherock_matrix.py.Risk: low for
develop(new workflow, path-filtered). Integration jobs on this branch run against develop's test sources and have not been run end to end; see below.Test Plan
actionlint: no findings other than the custom self-hosted runner labels.Test Result
Pending CI.
Submission Checklist