Repository navigation
docs(rdc): split the RDC 1.3.1 and 1.4.0 changelog sections - #13874
Merged
Merged
Conversation
RDC 1.4.0 ships in ROCm 10.2.0, not ROCm 10.1.0. ROCm 10.1.0 shipped RDC 1.3.1, which already contains the GetBlockNameStr() removal and the ECC totals fix (#10973). Move those two entries to a new "RDC 1.3.1 for ROCm 10.1.0" section and retitle the 1.4.0 section for ROCm 10.2.0. The RDC_FI_GPU_MEMORY_CUR_BANDWIDTH fix (#11634) stays under 1.4.0. It merged after the ROCm 10.1 branch point, so ROCm 10.1.0 does not contain it. Signed-off-by: Adam360x <Adam.pryor@amd.com>
✅ All Policy Checks Passed
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The documentation-only diff matches the intended release split and has no identified blocking issues.
No open issues 🎉
What changed in this PR
Corrects RDC’s changelog release assignments without changing entry text or runtime behavior.
Changes:
- Labels RDC 1.4.0 for ROCm 10.2.0.
- Moves the helper removal and ECC hang fix into RDC 1.3.1 for ROCm 10.1.0.
- Keeps the memory-bandwidth fix under RDC 1.4.0.
| File | Description |
|---|---|
| projects/rdc/CHANGELOG.md | Separates release sections and preserves existing entry text. |
Review effort: Balanced
1 task done
SwRaw
reviewed
Oct 21, 2026
The ROCm 10.1.0 release notes already list the RDC_FI_GPU_MEMORY_CUR_BANDWIDTH fix, but ROCm 10.1.0 does not include it. Instead of repeating that entry in full, say that the fix is now included and that ROCm 10.1.0 does not include it. Signed-off-by: Adam360x <Adam.pryor@amd.com>
Keep only the line saying that the RDC_FI_GPU_MEMORY_CUR_BANDWIDTH fix is now included, as the release notes review asked. Signed-off-by: Adam360x <Adam.pryor@amd.com>
SwRaw
approved these changes
Oct 26, 2026
marifamd
approved these changes
Oct 27, 2026
Contributor
TheRock Submodule Bump ActivityNewest first
|
adam360x
added a commit
that referenced
this pull request
Nov 3, 2026
## Motivation QA reported that `rdcd` aborts during `rdci diag -u -r 2 -g 1` on AMD Instinct MI455X (gfx1250) with ROCm build #265: ``` F0921 ... queue_controller.cpp:147] Could not find agent - 129205111608944 ``` The checks of the ROCr diagnostic module (`librdc_rocr.so`: Compute Queue ready, System memory check) build test objects that call `hsa_init()` and `hsa_shut_down()` themselves. Nothing else held a reference, so ROCr was unloaded and loaded again between them. `rdcd` always loads rocprofiler-sdk (the profiler module registers a tool at the first `hsa_init()`, even with `RDC_DISABLE_ROCP=1`), and rocprofiler-sdk does not support a ROCr reload. Depending on its version, the next queue creation aborts `rdcd` (`Could not find agent`) or fails, or the next profiler field read aborts it (`HSA Queue is not initialized`). ROCm 10.2.0 and develop are affected too, and not only on MI455X: with a 10.2.0 nightly on MI350X the checks pass, but the next profiler field read aborts `rdcd`. Keeping ROCr loaded exposed a second rocprofiler-sdk problem: it never destroys a queue it intercepted. With a queue per check, each `rdci diag` run left two queues and about 70 MB of VRAM in `rdcd`, until queue creation failed after 126 runs (MI455X allows 254 queues per process). So the checks now share one queue per GPU. ## Technical Details - **ROCr lifetime** (`RdcDiagnosticLib.cc`): the module takes one `hsa_init()` reference at its first check and releases it in `rdc_diag_destroy()`; the test objects' calls only move the count. If that `hsa_init()` fails, the run fails (`ROCr initialization failed`) before any check is built, and the next run retries. - **Shared queue**: `AcquireDiagQueue()` creates one 128-packet queue per GPU, destroyed by `rdc_diag_destroy()` (the System memory check used to create a 131072-packet queue per run). A mutex runs one check at a time, since they share the queues (and `MemoryAccess.cc` a global kernel-argument pointer). The unused `CreateQueue()` helper is removed. - **Cleanup** (`ComputeQueueTest.cc`, `MemoryAccess.cc`, `base_rocr_utils.cc`, `RdcRocrBase.*`): both checks release their signals, memory, file descriptors and loaded code objects on every path, including Skip and failure (`ScopeExit` guard in `common.h`). A copy that fails after it started no longer leaks its signal. - **gfx1250 kernels**: without them both checks reported Skip on MI455X. They are code object v4 (ROCm 10.1 compiler: `clang -x cl -Xclang -finclude-default-header -target amdgcn-amd-amdhsa -mcpu=gfx1250 -mcode-object-version=4 -O3`), because the checks fill in the v4 kernel arguments; the default v6 fails the System memory check. - **Tests**: new GPU-less `rdc_rocr_lifetime_tests` runs the module against fake HSA calls that count loads, references and objects: ROCr is loaded once, one queue per GPU, a failed `hsa_init()` loads nothing and is retried, and no check leaves objects behind. It is built with the module, installed with the RDC test package, and run in RDC CI by `tests/ci/test_gtest_runner.py`. `rdc_diag_kernel_tests` requires v4 gfx1250 kernels. - `CHANGELOG.md` entries. No public API, proto or struct changes (the changed headers are not installed). Trade-off: after the first `rdci diag`, `rdcd` keeps ROCr and one queue per GPU until it stops (MI455X: 3 KFD queues and about 149 MB of VRAM, flat across runs after the first), as it already does after the first profiler read. Changing the GPU partition mode then needs `rdcd` stopped, and a second `rdci diag` waits for the first. #13570 and #13874 also edit `CHANGELOG.md`; trial merges show the three PRs merge cleanly in any order. Not in this PR: - rocprofiler-sdk: support a ROCr reload and destroy the queues it intercepts (ROCM-33402). A process that creates and destroys a queue in a loop aborts after about 250 iterations under `rocprofv3 --pmc`. - Kernel arguments: the shipped gfx950 kernels (code object v6) and the gfx940-gfx942 binary search kernel (v5) declare 280-288 bytes of kernel arguments, while the checks fill in the 80-byte v4 layout. Release builds pass both checks on MI350X with them, but an assertion-enabled build aborts `rdcd` on the Compute Queue check's existing kernel-argument size assertion. v4 rebuilds match and pass on MI350X. ## Issue Tracking JIRA ID: ROCM-31379 ## Test Plan - 1x MI455X (gfx1250), Ubuntu 26.04: QA's build #265, ROCm 10.2.0, and a 10.2.0 BKC build of 2026-10-13. Each experiment runs its own `rdcd -u` in a private network namespace: N `rdci diag -u -r 2 -g 1` runs, a profiler `rdci dmon` (fields 805/806), one more diag; also profiler first. KFD queues and VRAM from `/sys/class/kfd/kfd/proc/<pid>/`. The module is built from this branch against each ROCm. - 8x MI350X (gfx950), Ubuntu 24.04, 10.2.0 nightly of 2026-10-22: on GPU 0, the stock module and this PR's module (release and assertion-enabled builds, shipped gfx950 kernels and v4 rebuilds); on a group of all 8 GPUs, this PR's release build with the shipped kernels, in both orders. - `rdc_rocr_lifetime_tests` and `rdc_diag_kernel_tests` (GCC 11) on this branch, against develop's module, and with each part of the fix removed; the CI wrapper; `pre-commit`. ## Test Result | MI455X | `rdci diag` runs | KFD queues / VRAM, run 1 → last | profiler after | `rdcd` exit | |---|---|---|---|---| | #265 stock | aborts in run 1 (`Could not find agent`) | - | - | 134 | | 10.2.0 stock | run 1 Skip (no gfx1250 kernels), run 2 fails queue creation | - | aborts | 134 | | BKC 10-13 stock | aborts in run 1 | - | - | 134 | | 10.2.0, ROCr kept loaded, a queue per check | 126 Pass, then Fail | 4 → 254 / 0.39 → 9.3 GB | aborts | 134 | | 10.2.0, this PR | 141/141 Pass | 3 → 3 / 149 → 149 MB | works | 0 | | #265, this PR | 21/21 Pass | 3 → 3 / 149 → 149 MB | works | 0 | | BKC 10-13, this PR | 21/21 Pass | 3 → 3 / 287 → 149 MB | works | 0 | - Pass = both checks Pass. Profiler read first: 3/3 on #265 and on the BKC build. Stock builds run clean with `HSA_TOOLS_DISABLE_REGISTER=1` (rocprofiler-sdk not registered with ROCr). On the BKC build `rdci` itself exits with SIGSEGV after printing (the client exit crash fixed on develop by #13296), which does not affect `rdcd`. - 8x MI350X: stock passes 3/3 diags on GPU 0, then the profiler read aborts `rdcd` (`HSA Queue is not initialized`, exit 134). This PR (release build, shipped kernels): 4/4 on GPU 0 and 11/11 on all 8 GPUs, every GPU passing both checks, including a run after the profiler read; 3/3 on all 8 GPUs with the profiler read first. KFD queues stay flat across runs (24 with all 8 GPUs) and `rdcd` exits 0. - gfx1250 kernels: v4 passes both checks; v6 fails the System memory check in a release build. - `rdc_rocr_lifetime_tests` 5/5 pass and 4 of 5 fail against develop's module; each of 14 mutants of the fix, and reverting either review fix, makes a test fail. The mutex is not unit-tested. `rdc_diag_kernel_tests`, the CI wrapper and pre-commit pass. ## Submission Checklist - [x] Look over the contributing guidelines at https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md. --------- Signed-off-by: Adam360x <Adam.pryor@amd.com>
1 task done
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
A release notes review found that the RDC changelog on develop mixes RDC 1.4.0 entries, which ship in ROCm 10.2.0, with entries that already shipped in ROCm 10.1.0 as RDC 1.3.1. #11722 opened the 1.4.0 section as "for ROCm 10.1.0" after ROCm 10.1 had branched, so later RDC entries landed under the wrong release.
Technical Details
## RDC 1.4.0 for ROCm 10.1.0to## RDC 1.4.0 for ROCm 10.2.0.## RDC 1.3.1 for ROCm 10.1.0with the two entries from feat(amdsmi): reland gpu_block_t expansion with rdc build fix #10973, which ROCm 10.1.0 contains:GetBlockNameStr()test helper.RDC_FI_ECC_*_TOTALhang on GPU blocks above bit 31.RDC_FI_GPU_MEMORY_CUR_BANDWIDTHfix (fix(rdc): report current memory bandwidth under DMA traffic #11634) under 1.4.0 as a one-line entry that says the fix is now included. fix(rdc): report current memory bandwidth under DMA traffic #11634 merged on 2026-09-15, after the ROCm 10.1 branch point (2026-09-08), and ROCm 10.1.0 does not contain it. The published ROCm 10.1.0 release notes already list this fix and can't be changed, so the 1.4.0 entry doesn't repeat the full description.Evidence:
therock-10.1pins rocm-systems7da43026e4f, which is also the rocm-systemstherock-10.1tag and the head ofrelease/therock-10.1. Its RDC version is 1.3.1.721f051b86c(feat(amdsmi): reland gpu_block_t expansion with rdc build fix #10973) is an ancestor of7da43026e4f.fc654c7c9db(fix(rdc): report current memory bandwidth under DMA traffic #11634) is not. Both are inrelease/bkc/therock-10.2-20261013.amdrocm-amdsmi10.110.1.0-3 reports version27.1.0+7da43026. Thelibrdc.soinamdrocm-rdc10.110.1.0-3 does not containderive_mem_activity_percent(), the function fix(rdc): report current memory bandwidth under DMA traffic #11634 added. The 10.2 nightly from 2026-10-21 does.Issue Tracking
No JIRA ticket. Reported in a release notes review.
Test Plan
Changelog-only change. A script moved the #10973 entries byte for byte and checked that the only added or removed non-blank lines are section headings. A second script replaced the #11634 entry by exact match and checked that it stays in the 1.4.0 section.
Test Result
projects/rdc/CHANGELOG.mdonly, +12/-8. pre-commit passes (it skips Markdown). Trial merges with develop and with the other open PR that edits this changelog are clean.