Skip to content

feat(rocke): add rocke-client skeleton#8928

Merged
BrianHarrisonAMD merged 3 commits into
developfrom
users/bharriso/rocke-client-skeleton
Jun 30, 2026
Merged

feat(rocke): add rocke-client skeleton#8928
BrianHarrisonAMD merged 3 commits into
developfrom
users/bharriso/rocke-client-skeleton

Conversation

@BrianHarrisonAMD

Copy link
Copy Markdown
Contributor

Summary

Adds a skeleton rocKEclient project under dnn-providers/hip-kernel-provider/rocKE-client, gated by the rocKE provider flag from PR #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

  • Commit hooks - git commit -m "feat(hipdnn): add rocKEclient provider plugin skeleton" && git commit -m "test(hipdnn): cover rocKEclient skeleton wiring" - Status: Passed
  • 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
  • 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
  • Installed rocKEclient smoke tests - ctest --test-dir build-rocke-client-full-install/install/bin/rocKEclient --output-on-failure - Status: Passed
  • 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.

@therock-pr-bot

therock-pr-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown

❌ PR Check — Action Required

Check Status Details
🌿 Branch Name ✅ Pass
📝 PR Title/Description ✅ Pass
Forbidden Files ✅ Pass
🧪 Unit Test ❌ Fail Error: Source/code files changed without an accompanying unit test.
Expected: add at least one test file named like test_<name>.py / test_<name>.cpp (or <name>_test.*).
Current: code file(s) changed: dnn-providers/hip-kernel-provider/rocke-client/src/PluginDefines.hpp, dnn-providers/hip-kernel-provider/rocke-client/src/PluginPublic.cpp, dnn-providers/hip-kernel-provider/rocke-client/src/RockeClientContainer.cpp, dnn-providers/hip-kernel-provider/rocke-client/src/RockeClientContainer.hpp, dnn-providers/hip-kernel-provider/rocke-client/src/RockeClientContext.hpp (+14 more); no test file found
🔎 pre-commit ✅ Pass
🚫 Draft PR 🔜 To Be Enabled
🚩 Feature Flag 🔜 To Be Enabled
📊 Code Coverage 🔜 To Be Enabled

⚠️ 1 policy check(s) failed. Please address the issues above before this PR can be Reviewed.

🚫 Please fix the failed policies

  • ❌ Unit Test

The Not ready to Review label was added to this PR. Once all policies pass, the label is removed automatically.

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

@therock-pr-bot

therock-pr-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown

🚫 Please fix the failed policies before requesting reviews.

The following policy checks failed:

  • ❌ Unit Test

The Not ready to Review label has been added to this PR.
Once all policies pass, the label will be removed automatically.

Rename the skeleton to follow the ROCm installed-library convention
(librocprofiler-sdk.so / librocm-core.so): artifact is librocke-client.so,
CMake project/target rocke-client, plugin name "rocke-client". C++ source
identifiers use the Miopen-style RockeClient* prefix; the rocke_client
namespace, ROCKE_CLIENT_* version macros, and the ROCKE_ENGINE id (FNV-1a
stable) are unchanged.

Also addresses review feedback on the skeleton:
- RockeClientContainer::copyEngineIds now derives ids from a single
  getEngineDefinitions() source of truth and honors the maxEngines cap via
  std::min, mirroring hip_kernel_provider Container.
- Add getDetails->destroyEngineDetails round-trip coverage (engine-level and
  C-API) so the only allocating path is exercised under sanitizer CI.
- Add zero-cap copyEngineIds coverage; drop a tautological context assertion.
@BrianHarrisonAMD BrianHarrisonAMD changed the title feat(rocKE): add rocKEclient skeleton feat(rocKE): add rocke-client skeleton Jun 29, 2026
@BrianHarrisonAMD

Copy link
Copy Markdown
Contributor Author

❌ PR Check — Action Required

Check Status Details
🌿 Branch Name ✅ Pass —
📝 PR Title/Description ❌ Fail Error: Title does not follow Conventional Commits style.
Expected: start with a valid type (feat, fix, docs, …).
Desired format: type(optional-scope): short description
Forbidden Files ✅ Pass —
🧪 Unit Test ❌ Fail Error: Source/code files changed without an accompanying unit test.
Expected: add at least one test file named like test_<name>.py / test_<name>.cpp (or <name>_test.*).
Current: code file(s) changed: dnn-providers/hip-kernel-provider/rocke-client/src/PluginDefines.hpp, dnn-providers/hip-kernel-provider/rocke-client/src/PluginPublic.cpp, dnn-providers/hip-kernel-provider/rocke-client/src/RockeClientContainer.cpp, dnn-providers/hip-kernel-provider/rocke-client/src/RockeClientContainer.hpp, dnn-providers/hip-kernel-provider/rocke-client/src/RockeClientContext.hpp (+14 more); no test file found
🔎 pre-commit ⏳ Pending ⏳ Still running…
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —

⚠️ 2 policy check(s) failed. Please address the issues above before this PR can be Reviewed.
🚫 Please fix the failed policies

  • ❌ PR Title/Description
  • ❌ Unit Test

The Not ready to Review label was added to this PR. Once all policies pass, the label is removed automatically.

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

Removed since tests are incorrectly flagging (they are present).

@BrianHarrisonAMD BrianHarrisonAMD changed the title feat(rocKE): add rocke-client skeleton feat(rocke): add rocke-client skeleton Jun 29, 2026
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

❌ Your project status has failed because the head coverage (76.92%) is below the target coverage (80.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #8928      +/-   ##
===========================================
- Coverage    71.31%   71.31%   -0.00%     
===========================================
  Files         2613     2613              
  Lines       409171   409171              
  Branches     61119    61119              
===========================================
- Hits        291790   291788       -2     
  Misses       95980    95980              
- Partials     21401    21403       +2     
Flag Coverage Δ *Carryforward flag
TensileLite 76.98% <ø> (ø) Carriedforward from 94abdbc
hipBLAS 90.81% <ø> (ø) Carriedforward from 94abdbc
hipBLASLt 41.36% <ø> (ø) Carriedforward from 94abdbc
hipCUB 82.68% <ø> (ø) Carriedforward from 94abdbc
hipDNN 86.51% <ø> (-<0.01%) ⬇️
hipFFT 50.17% <ø> (ø) Carriedforward from 94abdbc
hipRAND 76.12% <ø> (ø) Carriedforward from 94abdbc
hipSOLVER 69.18% <ø> (ø) Carriedforward from 94abdbc
hipSPARSE 86.55% <ø> (ø) Carriedforward from 94abdbc
rocBLAS 48.08% <ø> (ø) Carriedforward from 94abdbc
rocFFT 46.30% <ø> (ø) Carriedforward from 94abdbc
rocRAND 57.07% <ø> (ø) Carriedforward from 94abdbc
rocSOLVER 76.92% <ø> (ø) Carriedforward from 94abdbc
rocSPARSE 72.37% <ø> (ø) Carriedforward from 94abdbc
rocThrust 91.36% <ø> (ø) Carriedforward from 94abdbc

*This pull request uses carry forward flags. Click here to find out more.

Files with missing lines Coverage Δ
.../include/hipdnn_data_sdk/utilities/EngineNames.hpp 100.00% <ø> (ø)

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@BrianHarrisonAMD BrianHarrisonAMD enabled auto-merge (squash) June 30, 2026 00:20
@BrianHarrisonAMD BrianHarrisonAMD merged commit b86c200 into develop Jun 30, 2026
59 of 76 checks passed
@BrianHarrisonAMD BrianHarrisonAMD deleted the users/bharriso/rocke-client-skeleton branch June 30, 2026 01:48
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants