feat(rocke): add rocke-client skeleton#8928
Conversation
❌ 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 |
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.
Removed since tests are incorrectly flagging (they are present). |
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
*This pull request uses carry forward flags. Click here to find out more.
🚀 New features to boost your workflow:
|
## 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.
Summary
Adds a skeleton
rocKEclientproject underdnn-providers/hip-kernel-provider/rocKE-client, gated by the rocKE provider flag from PR #8864. When enabled, the project builds and installslibrocKEclient.sobeside 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
HIPKERNELPROVIDER_ENABLE_ROCKE=ONbuilds rocKE, rocKEclient, hipDNN, and hip-kernel-provider together.rocKEclientfrom the installed plugin directory.ROCKE_ENGINEname/id mapping and defaultRocKEContextinstantiation.git commit.Testing Checklist
git commit -m "feat(hipdnn): add rocKEclient provider plugin skeleton" && git commit -m "test(hipdnn): cover rocKEclient skeleton wiring"- Status: Passedcmake --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: Passedcmake --build build-rocke-client-full-install && cmake --install build-rocke-client-full-install --prefix build-rocke-client-full-install/install- Status: Passedctest --test-dir build-rocke-client-full-install/install/bin/rocKEclient --output-on-failure- Status: Passedcmake --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: PassedTechnical Changes
rocKE-clientC++ project with version generation, plugin SDK wiring,rocKEclientshared-library target, and install rules for the hipDNN engine plugin directory.hipdnn_plugin_sdk/EnginePluginImpl.inlusing rocKEclient container, handle, context, settings, and skeleton engine types.ROCKE_ENGINEID and implements a skeleton engine that advertises the ID but returns no applicability and rejects workspace/context creation withHIPDNN_PLUGIN_STATUS_NOT_APPLICABLE.rocKE-clientinto the existingHIPKERNELPROVIDER_ENABLE_ROCKEblock beside the merged rocKE project so both build as part of hip-kernel-provider only when the flag is enabled.ROCKE_ENGINEregistry coverage, defaultRocKEContextconstruction coverage, and an installed CTest entry that verifies hipDNN loadsrocKEclientfrom the installed plugin path.