From dd37d215fdca677d2ff00d142ee5cf055e2636d7 Mon Sep 17 00:00:00 2001 From: "systems-assistant[bot]" <221163467+systems-assistant[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 18:01:18 -0400 Subject: [PATCH] Add documentation describing ROCPROFSYS_USE_RCCP (#110) * Add documentation describing ROCPROFSYS_USE_RCCP Signed-off-by: David Galiffi * Update wordlist Signed-off-by: David Galiffi * Update CHANGELOGS.md --------- Signed-off-by: David Galiffi Co-authored-by: David Galiffi --- projects/rocprofiler-systems/.wordlist.txt | 2 ++ projects/rocprofiler-systems/CHANGELOG.md | 1 + .../docs/data/rccl-comm-recv.png | Bin 0 -> 34404 bytes .../docs/how-to/configuring-runtime-options.rst | 16 ++++++++++++++++ 4 files changed, 19 insertions(+) create mode 100644 projects/rocprofiler-systems/docs/data/rccl-comm-recv.png diff --git a/projects/rocprofiler-systems/.wordlist.txt b/projects/rocprofiler-systems/.wordlist.txt index 19f383ce6e..dd6a6219c0 100644 --- a/projects/rocprofiler-systems/.wordlist.txt +++ b/projects/rocprofiler-systems/.wordlist.txt @@ -30,6 +30,8 @@ ppc proc proto Pthreads +RCCL +RCCLP rocDecode rocdecode ROCprofiler diff --git a/projects/rocprofiler-systems/CHANGELOG.md b/projects/rocprofiler-systems/CHANGELOG.md index 88de0f6a25..dea0591f5c 100644 --- a/projects/rocprofiler-systems/CHANGELOG.md +++ b/projects/rocprofiler-systems/CHANGELOG.md @@ -18,6 +18,7 @@ Full documentation for ROCm Systems Profiler is available at [https://rocm.docs. - Replaced ROCm SMI backend with AMD SMI backend for collecting GPU metrics. - ROCprofiler-SDK is now used to trace RCCL API and collect communication counters. + - Use the setting `ROCPROFSYS_USE_RCCLP = ON` to enable profiling and tracing of RCCL application data. - Updated the Dyninst submodule to v13.0. - Set the default value of `ROCPROFSYS_SAMPLING_CPUS` to `none`. diff --git a/projects/rocprofiler-systems/docs/data/rccl-comm-recv.png b/projects/rocprofiler-systems/docs/data/rccl-comm-recv.png new file mode 100644 index 0000000000000000000000000000000000000000..3e597cf9dbb0b87d67a1f78228762a788e23789d GIT binary patch literal 34404 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