feat(hip-kernel-provider): Wire rocKE C++ smoke tests into provider CI lane#8864
Merged
Conversation
… lane Build and install the rocKE engine's two C++ smoke tests alongside the hip-kernel-provider tests so they run in TheRock's hip_kernel_provider CTest bucket, behind HIPKERNELPROVIDER_ENABLE_ROCKE_TESTS (defaults to HIPKERNELPROVIDER_ENABLE_TESTS). To get the C++ tests into TheRock's test artifact with no descriptor edit, the provider test artifact only captures bin/hip_kernel_provider*_test*, so in provider mode the two C++ smoke binaries are installed at bare bin/ under a <subdir>_<target>_test name (e.g. hip_kernel_provider_rocke_ir_serialize_roundtrip_test) and referenced from the provider CTestTestfile via "../". Standalone builds keep the plain target names under bin/ with the CTestTestfile in bin/rocke/. The Python import smoke and the rocke package cannot match that name pattern, so they are staged only in standalone mode; wiring them into the provider lane needs the rocke package added to TheRock's artifact descriptor and is deferred. Validated with a clang build+install in both modes: provider mode installs the two renamed C++ tests at bare bin/ and ctest passes 2/2 via "../"; standalone installs all three tests and passes 3/3. Co-authored-by: Cursor <cursoragent@cursor.com>
✅ All Checks Passed — Ready for Review
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
|
🎉 All checks passed! This PR is ready for review. |
Co-authored-by: Cursor <cursoragent@cursor.com>
Cover the gfx1151 WMMA compatibility entry point with a CPU-only delegation test so the PR bot sees test coverage for the wrapper change. Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify rocKE agent guidance for GPU numeric testing: require a real ROCm GPU and ROCm torch for local numeric lanes, and point users without local hardware to the remote Slurm-based test orchestrator. Also make cross-platform script guidance explicit, add dsl_docs authoring/optimization pointers, and document that torch should be preinstalled from the ROCm wheel index before resolving the rest of requirements.txt. Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify where new kernel builders, optimization recipes, workload case studies, and reusable optimization lessons should live. Add concise agent-facing rules and expand the authoring model with replayability and wiring expectations for accepted optimizations. Co-authored-by: Cursor <cursoragent@cursor.com>
Make the rocKE agent guidance easier to find by linking AGENTS.md from the engine build reference and from the CK DSL optimization utilities docs. Co-authored-by: Cursor <cursoragent@cursor.com>
shumway
reviewed
Jun 27, 2026
Move the AGENTS.md, requirements.txt, authoring-model, build-doc, and CK DSL utility README guidance updates out of the hip-kernel-provider C++ smoke wiring PR. They now live on users/yraparti/rocke-agent-guidance-docs to keep PRs separated by concern. Co-authored-by: Cursor <cursoragent@cursor.com>
Move the WMMA verify wrapper unit test out of the hip-kernel-provider C++ smoke wiring PR. The test now lives on users/yraparti/rocke-agent-guidance-docs to keep this PR focused on provider C++ smoke test wiring. Co-authored-by: Cursor <cursoragent@cursor.com>
Move the gfx1151 WMMA verify wrapper out of the hip-kernel-provider C++ smoke wiring PR. The wrapper now lives on users/yraparti/rocke-agent-guidance-docs with its corresponding unit test. Co-authored-by: Cursor <cursoragent@cursor.com>
shumway
reviewed
Jun 27, 2026
shumway
left a comment
Contributor
There was a problem hiding this comment.
This looks good to me. I still have more to learn about this CMake setup and how the local rocKE tests work and how they integrate into hipDNN provider testing, but I don't want that to block CI coverage. We should get @BrianHarrisonAMD 's approval before merging. Most importantly, we should test any path that Rock CI might run to make sure we can't break the large CI project at this PR or later. We want to make sure there aren't different build and test paths between presubmit CI testing and other CI across TheRock.
Make the rocKE provider integration opt-in by default so it is not built or included in TheRock unless explicitly enabled. Rename the option to HIPKERNELPROVIDER_ENABLE_ROCKE because it gates the entire rocKE subdirectory, not just the smoke tests. Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh the rocKE CTest install comment to match the current provider-mode layout: CTest metadata is appended to the provider subdir, while C++ smoke binaries install at bare bin/ with hip_kernel_provider*_test names so TheRock's existing test artifact patterns capture them. Co-authored-by: Cursor <cursoragent@cursor.com>
This was referenced Jun 29, 2026
This was referenced Jun 29, 2026
BrianHarrisonAMD
added a commit
that referenced
this pull request
Jun 30, 2026
## Summary Adds a skeleton `rocKEclient` project under `dnn-providers/hip-kernel-provider/rocKE-client`, gated by the rocKE provider flag from [PR #8864](#8864). When enabled, the project builds and installs `librocKEclient.so` beside the existing hip-kernel-provider plugin so hipDNN can load it, while the skeleton reports no applicable engines yet. This is the start of the rocKE client library, and will be directly exposing the hipDNN provider API to start with. Later on rocKE client & rocKE provider will be split into two different projects. JIRA ID : AICK-1470 ## Risk Assessment Low risk. This adds opt-in provider build/install and plugin-loading infrastructure, plus a new engine ID, but it is gated off by default and the new plugin intentionally rejects all graphs so it does not change existing dispatch behavior unless explicitly enabled. ## ASIC Coverage ASIC-independent wiring only. The plugin currently performs no GPU execution, exposes no supported operation surface, and returns no applicable engines for every graph; passing standard PR CI plus the local opt-in build/load smoke tests is sufficient, with no dedicated multi-arch sweep required for this skeleton. ## Testing Summary - Full opt-in provider configure/build/install validated that `HIPKERNELPROVIDER_ENABLE_ROCKE=ON` builds rocKE, rocKEclient, hipDNN, and hip-kernel-provider together. - Installed smoke tests validated the plugin metadata, engine ID query, non-applicability behavior, and hipDNN loading `rocKEclient` from the installed plugin directory. - Targeted unit coverage validates the registered `ROCKE_ENGINE` name/id mapping and default `RocKEContext` instantiation. - Commit hooks completed through `git commit`. ## Testing Checklist - [x] Commit hooks - `git commit -m "feat(hipdnn): add rocKEclient provider plugin skeleton" && git commit -m "test(hipdnn): cover rocKEclient skeleton wiring"` - Status: Passed - [x] Full opt-in provider configure - `cmake --preset hip-kernel-provider -B build-rocke-client-full-install -DHIPKERNELPROVIDER_ENABLE_ROCKE=ON -DHIPKERNELPROVIDER_ENABLE_TESTS=OFF -DROCKE_CLIENT_ENABLE_TESTS=ON -DENABLE_ASM_SDPA_ENGINE=OFF -DENABLE_HIP_MLOPS_ENGINE=ON -DENABLE_CLANG_TIDY=OFF -DENABLE_CLANG_FORMAT=OFF` - Status: Passed - [x] Full opt-in provider build/install - `cmake --build build-rocke-client-full-install && cmake --install build-rocke-client-full-install --prefix build-rocke-client-full-install/install` - Status: Passed - [x] Installed rocKEclient smoke tests - `ctest --test-dir build-rocke-client-full-install/install/bin/rocKEclient --output-on-failure` - Status: Passed - [x] Targeted EngineNames and rocKEclient tests - `cmake --preset hip-kernel-provider -B build-rocke-client-test-expansion -DHIPKERNELPROVIDER_ENABLE_ROCKE=ON -DHIPKERNELPROVIDER_ENABLE_TESTS=OFF -DROCKE_CLIENT_ENABLE_TESTS=ON -DENABLE_ASM_SDPA_ENGINE=OFF -DENABLE_HIP_MLOPS_ENGINE=ON -DENABLE_CLANG_TIDY=OFF -DENABLE_CLANG_FORMAT=OFF && cmake --build build-rocke-client-test-expansion --target hipdnn_data_sdk_tests rocke_client_tests rocke_client_integration_tests && ./build-rocke-client-test-expansion/bin/hipdnn_data_sdk_tests --gtest_filter='TestEngineNames.*' && ./build-rocke-client-test-expansion/bin/rocke_client_tests --gtest_filter='TestRocKEContext.*:TestRocKEContainer.*:TestRocKEEngine.*:TestPluginPublic.*' && ./build-rocke-client-test-expansion/bin/rocke_client_integration_tests` - Status: Passed - [ ] PR CI - GitHub PR checks - Status: Pending ## Technical Changes - Adds the `rocKE-client` C++ project with version generation, plugin SDK wiring, `rocKEclient` shared-library target, and install rules for the hipDNN engine plugin directory. - Exposes the hipDNN engine plugin C API through `hipdnn_plugin_sdk/EnginePluginImpl.inl` using rocKEclient container, handle, context, settings, and skeleton engine types. - Registers a `ROCKE_ENGINE` ID and implements a skeleton engine that advertises the ID but returns no applicability and rejects workspace/context creation with `HIPDNN_PLUGIN_STATUS_NOT_APPLICABLE`. - Wires `rocKE-client` into the existing `HIPKERNELPROVIDER_ENABLE_ROCKE` block beside the merged rocKE project so both build as part of hip-kernel-provider only when the flag is enabled. - Adds unit and integration smoke tests, including explicit `ROCKE_ENGINE` registry coverage, default `RocKEContext` construction coverage, and an installed CTest entry that verifies hipDNN loads `rocKEclient` from the installed plugin path.
JP-Fernando
pushed a commit
that referenced
this pull request
Jul 1, 2026
…I lane (#8864) ## Summary ISSUE ID : AICK-1470 - Build + install the rocKE engine's two C++ smoke tests alongside the hip-kernel-provider tests, behind `HIPKERNELPROVIDER_ENABLE_ROCKE_TESTS` (defaults to `HIPKERNELPROVIDER_ENABLE_TESTS`), so they run in TheRock's `hip_kernel_provider` CTest bucket. - To land in TheRock's test artifact **with no descriptor edit**: that artifact only captures `bin/hip_kernel_provider*_test*`, so in provider mode the two C++ smoke binaries install at bare `bin/` under a `<subdir>_<target>_test` name (e.g. `hip_kernel_provider_rocke_ir_serialize_roundtrip_test`) and are referenced from the provider `CTestTestfile.cmake` via `../`. - Standalone builds are unchanged: plain target names under `bin/`, CTestTestfile in `bin/rocke/`, all three smoke tests (incl. the Python import smoke) registered. - Restore the gfx1151 WMMA GEMM verification module path with a wrapper so `test_wmma_gemm` can launch the existing f16 verifier. ## Why the Python smoke is deferred in the provider lane The Python import smoke (`rocke_installed_smoke.py`) imports the `rocke` package and reads `core/arch/data/arch_specs.json`. Neither the script (a `.py`) nor the package (a directory tree) can match the `bin/hip_kernel_provider*_test*` Ant-style glob, and the package isn't routed into the provider test artifact today. So it would be "Not Run" in the provider lane. It remains fully exercised in standalone mode; wiring it into the provider lane needs the `rocke` package added to TheRock's `ml-libs/artifact-hipkernelprovider.toml` `test` component (or a self-contained zipapp) and is left as a follow-up. ## Test plan - [x] Provider mode (`-DROCKE_INSTALL_PROVIDER_CTEST_SUBDIR=hip_kernel_provider -DROCKE_INSTALL_STANDALONE_CTEST=OFF`): clang build+install puts the two renamed C++ tests at bare `bin/`; ctest passes 2/2 resolving via `../`. - [x] Standalone mode: clang build+install puts all three tests under `bin/`; ctest passes 3/3. - [x] `cmake-lint` (pre-commit) passes on all changed CMake files. - [ ] CI: confirm the two C++ smoke tests run (not "Not Run") in TheRock's hip-kernel-provider lane. Made with [Cursor](https://cursor.com) --------- Co-authored-by: Cursor <cursoragent@cursor.com>
JP-Fernando
pushed a commit
that referenced
this pull request
Jul 1, 2026
## Summary Adds a skeleton `rocKEclient` project under `dnn-providers/hip-kernel-provider/rocKE-client`, gated by the rocKE provider flag from [PR #8864](#8864). When enabled, the project builds and installs `librocKEclient.so` beside the existing hip-kernel-provider plugin so hipDNN can load it, while the skeleton reports no applicable engines yet. This is the start of the rocKE client library, and will be directly exposing the hipDNN provider API to start with. Later on rocKE client & rocKE provider will be split into two different projects. JIRA ID : AICK-1470 ## Risk Assessment Low risk. This adds opt-in provider build/install and plugin-loading infrastructure, plus a new engine ID, but it is gated off by default and the new plugin intentionally rejects all graphs so it does not change existing dispatch behavior unless explicitly enabled. ## ASIC Coverage ASIC-independent wiring only. The plugin currently performs no GPU execution, exposes no supported operation surface, and returns no applicable engines for every graph; passing standard PR CI plus the local opt-in build/load smoke tests is sufficient, with no dedicated multi-arch sweep required for this skeleton. ## Testing Summary - Full opt-in provider configure/build/install validated that `HIPKERNELPROVIDER_ENABLE_ROCKE=ON` builds rocKE, rocKEclient, hipDNN, and hip-kernel-provider together. - Installed smoke tests validated the plugin metadata, engine ID query, non-applicability behavior, and hipDNN loading `rocKEclient` from the installed plugin directory. - Targeted unit coverage validates the registered `ROCKE_ENGINE` name/id mapping and default `RocKEContext` instantiation. - Commit hooks completed through `git commit`. ## Testing Checklist - [x] Commit hooks - `git commit -m "feat(hipdnn): add rocKEclient provider plugin skeleton" && git commit -m "test(hipdnn): cover rocKEclient skeleton wiring"` - Status: Passed - [x] Full opt-in provider configure - `cmake --preset hip-kernel-provider -B build-rocke-client-full-install -DHIPKERNELPROVIDER_ENABLE_ROCKE=ON -DHIPKERNELPROVIDER_ENABLE_TESTS=OFF -DROCKE_CLIENT_ENABLE_TESTS=ON -DENABLE_ASM_SDPA_ENGINE=OFF -DENABLE_HIP_MLOPS_ENGINE=ON -DENABLE_CLANG_TIDY=OFF -DENABLE_CLANG_FORMAT=OFF` - Status: Passed - [x] Full opt-in provider build/install - `cmake --build build-rocke-client-full-install && cmake --install build-rocke-client-full-install --prefix build-rocke-client-full-install/install` - Status: Passed - [x] Installed rocKEclient smoke tests - `ctest --test-dir build-rocke-client-full-install/install/bin/rocKEclient --output-on-failure` - Status: Passed - [x] Targeted EngineNames and rocKEclient tests - `cmake --preset hip-kernel-provider -B build-rocke-client-test-expansion -DHIPKERNELPROVIDER_ENABLE_ROCKE=ON -DHIPKERNELPROVIDER_ENABLE_TESTS=OFF -DROCKE_CLIENT_ENABLE_TESTS=ON -DENABLE_ASM_SDPA_ENGINE=OFF -DENABLE_HIP_MLOPS_ENGINE=ON -DENABLE_CLANG_TIDY=OFF -DENABLE_CLANG_FORMAT=OFF && cmake --build build-rocke-client-test-expansion --target hipdnn_data_sdk_tests rocke_client_tests rocke_client_integration_tests && ./build-rocke-client-test-expansion/bin/hipdnn_data_sdk_tests --gtest_filter='TestEngineNames.*' && ./build-rocke-client-test-expansion/bin/rocke_client_tests --gtest_filter='TestRocKEContext.*:TestRocKEContainer.*:TestRocKEEngine.*:TestPluginPublic.*' && ./build-rocke-client-test-expansion/bin/rocke_client_integration_tests` - Status: Passed - [ ] PR CI - GitHub PR checks - Status: Pending ## Technical Changes - Adds the `rocKE-client` C++ project with version generation, plugin SDK wiring, `rocKEclient` shared-library target, and install rules for the hipDNN engine plugin directory. - Exposes the hipDNN engine plugin C API through `hipdnn_plugin_sdk/EnginePluginImpl.inl` using rocKEclient container, handle, context, settings, and skeleton engine types. - Registers a `ROCKE_ENGINE` ID and implements a skeleton engine that advertises the ID but returns no applicability and rejects workspace/context creation with `HIPDNN_PLUGIN_STATUS_NOT_APPLICABLE`. - Wires `rocKE-client` into the existing `HIPKERNELPROVIDER_ENABLE_ROCKE` block beside the merged rocKE project so both build as part of hip-kernel-provider only when the flag is enabled. - Adds unit and integration smoke tests, including explicit `ROCKE_ENGINE` registry coverage, default `RocKEContext` construction coverage, and an installed CTest entry that verifies hipDNN loads `rocKEclient` from the installed plugin path.
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.
Summary
ISSUE ID : AICK-1470
HIPKERNELPROVIDER_ENABLE_ROCKE_TESTS(defaults toHIPKERNELPROVIDER_ENABLE_TESTS), so they run in TheRock'ship_kernel_providerCTest bucket.bin/hip_kernel_provider*_test*, so in provider mode the two C++ smoke binaries install at barebin/under a<subdir>_<target>_testname (e.g.hip_kernel_provider_rocke_ir_serialize_roundtrip_test) and are referenced from the providerCTestTestfile.cmakevia../.bin/, CTestTestfile inbin/rocke/, all three smoke tests (incl. the Python import smoke) registered.test_wmma_gemmcan launch the existing f16 verifier.Why the Python smoke is deferred in the provider lane
The Python import smoke (
rocke_installed_smoke.py) imports therockepackage and readscore/arch/data/arch_specs.json. Neither the script (a.py) nor the package (a directory tree) can match thebin/hip_kernel_provider*_test*Ant-style glob, and the package isn't routed into the provider test artifact today. So it would be "Not Run" in the provider lane. It remains fully exercised in standalone mode; wiring it into the provider lane needs therockepackage added to TheRock'sml-libs/artifact-hipkernelprovider.tomltestcomponent (or a self-contained zipapp) and is left as a follow-up.Test plan
-DROCKE_INSTALL_PROVIDER_CTEST_SUBDIR=hip_kernel_provider -DROCKE_INSTALL_STANDALONE_CTEST=OFF): clang build+install puts the two renamed C++ tests at barebin/; ctest passes 2/2 resolving via../.bin/; ctest passes 3/3.cmake-lint(pre-commit) passes on all changed CMake files.Made with Cursor