Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
192abf0
test(rccl): add host microtests for debug.cc
aduforest Oct 15, 2026
b1c93d3
test(rccl): add host microtests for misc/api_trace.cc
aduforest Oct 15, 2026
e179c1f
test(rccl): add host microtests for misc/recorder.cc
aduforest Oct 15, 2026
0ba29dc
test(rccl): add host microtests for misc/latency_profiler
aduforest Oct 15, 2026
0312f49
test(rccl): add host microtests for commDump.cc and timer.h
aduforest Oct 15, 2026
e85cf00
test(rccl): skip assert-only recorder parse tests under NDEBUG, trim …
aduforest Oct 15, 2026
3fe1868
test(rccl): share a recording ncclDebugLog fake, tidy review nits
aduforest Oct 15, 2026
a1a1a3b
test(rccl): fix in-build links of the Debug and ApiTrace microtests
aduforest Oct 15, 2026
15ef633
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 16, 2026
8e97c91
test(rccl): KnownBug_ pins and an eight-rank CollTrace fake
aduforest Oct 16, 2026
57fbe78
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 19, 2026
5211ad4
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 19, 2026
5dd1a04
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 19, 2026
037b96c
test(rccl): reuse shared fakes in the debug/trace/recorder microtests
aduforest Oct 19, 2026
af606a6
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 20, 2026
46dcf8b
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 20, 2026
b696bb7
test(rccl): host-only suites declare num_gpus 0
aduforest Oct 21, 2026
6937cdd
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 21, 2026
ce094c8
test(rccl): pin coll-trace and comm-dump paths by behaviour per review
aduforest Oct 21, 2026
cd1363d
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 22, 2026
db300a1
test(rccl): fix CollTrace ppc64le link, NVTX-off arm and recorder UB …
aduforest Oct 22, 2026
c717367
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 22, 2026
4e3dd5a
test(rccl): drop KnownBug pins for bugs closed as won't-do
aduforest Oct 22, 2026
4f7c2d1
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 24, 2026
083ef57
test(rccl): check the CollTrace worker loop by its queries per review
aduforest Oct 24, 2026
9fa5834
test(rccl): leave ci-precheckin.json to develop
aduforest Oct 24, 2026
462ee05
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions projects/rccl/src/include/recorder.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
/* Copyright © Advanced Micro Devices, Inc., or its affiliates. */

#ifndef RCCL_RECORDER_H_
#define RCCL_RECORDER_H_

#include <fstream>
#include <sstream>
#include <vector>
Expand Down Expand Up @@ -146,3 +149,5 @@ class Recorder {
void parseJsonEntry(const char* entry, std::vector<rcclApiCall>& calls);
void parseBinLog();
} // namespace rccl

#endif // RCCL_RECORDER_H_
98 changes: 98 additions & 0 deletions projects/rccl/test/host/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@ function(rccl_define_micro_source_lists)
param-registry-test.cc # src/param/param_registry.cc
ras-client-test.cc
group-test.cc
comm-dump-test.cc # src/commDump.cc
timer-test.cc # src/include/timer.h
devcomm-test.cc
wrap-test.cc
dev-runtime-test.cc
Expand All @@ -239,6 +241,8 @@ function(rccl_define_micro_source_lists)
fakes/rma_fakes.cc
fakes/comm_fakes.cc
fakes/recorder_fakes.cc
fakes/profiler_fakes.cc
fakes/roctx_fakes.cc
fakes/utils_fakes.cc
fakes/collective_stubs.cc
fakes/devcomm_fakes.cc
Expand Down Expand Up @@ -275,9 +279,11 @@ function(rccl_define_micro_source_lists)
fakes/env_fakes.cc
fakes/os_fakes.cc
fakes/proxy_fakes.cc
fakes/profiler_fakes.cc
fakes/rccl_wrap_fakes.cc
fakes/recorder_fakes.cc
fakes/register_stubs.cc
fakes/roctx_fakes.cc
fakes/strongstream_stubs.cc
fakes/sym_kernels_fakes.cc
fakes/sym_kernels_index_fakes.cc
Expand Down Expand Up @@ -355,6 +361,7 @@ function(rccl_define_micro_source_lists)
fakes/libc_interposers.cc
fakes/mem_manager_fakes.cc
fakes/os_fakes.cc
fakes/profiler_fakes.cc
fakes/rccl_wrap_fakes.cc
fakes/recorder_fakes.cc
fakes/rocmwrap_fakes.cc
Expand Down Expand Up @@ -459,9 +466,11 @@ function(rccl_define_micro_source_lists)
fakes/group_fakes.cc
fakes/os_fakes.cc
fakes/proxy_fakes.cc
fakes/profiler_fakes.cc
fakes/rccl_wrap_fakes.cc
fakes/recorder_fakes.cc
fakes/register_stubs.cc
fakes/roctx_fakes.cc
fakes/sched_stubs.cc
fakes/strongstream_stubs.cc
fakes/sym_kernels_fakes.cc
Expand All @@ -473,6 +482,42 @@ function(rccl_define_micro_source_lists)
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroDebug -- src/debug.cc. Own binary: it is the real ncclDebugLog, which
# every shared fake set also defines.
set(TEST_MICRO_DEBUG_SOURCE_FILES
debug-test.cc
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroApiTrace -- src/misc/api_trace.cc. Own binary: it defines the public
# NCCL_API entry points that fakes/api_trace_fakes.cc supplies elsewhere.
set(TEST_MICRO_API_TRACE_SOURCE_FILES
api-trace-test.cc
fakes/debug_fakes.cc
fakes/recorder_fakes.cc
fakes/roctx_fakes.cc
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroRecorder -- src/misc/recorder.cc. Own binary: it is the real
# rccl::Recorder, which fakes/recorder_fakes.cc supplies elsewhere.
set(TEST_MICRO_RECORDER_SOURCE_FILES
recorder-test.cc
fakes/debug_fakes.cc
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroCollTrace -- src/misc/latency_profiler/*.cc. Own binary: its ncclDebugLog,
# HIP event and bootstrap seams would collide with the shared fakes.
set(TEST_MICRO_COLL_TRACE_SOURCE_FILES
coll-trace-test.cc
fakes/debug_fakes.cc
fakes/collectives_fakes.cc
fakes/env_fakes.cc
fakes/strongstream_stubs.cc
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroCe -- src/ce_coll.cc. Its own binary: every other target links ce_fakes.cc.
set(TEST_MICRO_CE_SOURCE_FILES
ce-coll-test.cc
Expand All @@ -490,9 +535,11 @@ function(rccl_define_micro_source_lists)
fakes/devcomm_fakes.cc # ncclTeamLsa
fakes/env_fakes.cc
fakes/os_fakes.cc
fakes/profiler_fakes.cc
fakes/rccl_wrap_fakes.cc # rcclParamCeAllReduce, rcclParamCeArStagingBytes
fakes/recorder_fakes.cc
fakes/rma_fakes.cc
fakes/roctx_fakes.cc
fakes/strongstream_stubs.cc
fakes/tuning_fakes.cc
${RCCL_HOST_HIPIFY_DIR}/src/misc/argcheck.cc
Expand Down Expand Up @@ -545,6 +592,7 @@ function(rccl_define_micro_source_lists)
fakes/env_fakes.cc
fakes/devcomm_fakes.cc
fakes/os_fakes.cc
fakes/profiler_fakes.cc
fakes/strongstream_stubs.cc
fakes/recorder_fakes.cc
${RCCL_HOST_HIPIFY_DIR}/src/misc/argcheck.cc
Expand Down Expand Up @@ -639,11 +687,13 @@ function(rccl_define_micro_source_lists)
fakes/env_fakes.cc # src/misc/param.cc + getenv interposition
fakes/group_fakes.cc # src/group.cc
fakes/os_fakes.cc # src/os/linux.cc aligned alloc
fakes/profiler_fakes.cc # src/plugin/profiler.cc proxy-trace dump
fakes/proxy_fakes.cc # src/proxy.cc
fakes/rccl_wrap_fakes.cc # src/rccl_wrap.cc
fakes/recorder_fakes.cc # src/recorder.cc
fakes/register_stubs.cc # src/register/*.cc
fakes/rma_fakes.cc # src/rma/*.cc
fakes/roctx_fakes.cc # src/misc/roctx.cc
fakes/sched_stubs.cc # src/scheduler/*.cc + deep launch paths
fakes/strongstream_stubs.cc # src/misc/strongstream.cc
fakes/sym_kernels_fakes.cc # src/sym_kernels.cc
Expand Down Expand Up @@ -1116,6 +1166,7 @@ function(rccl_standalone_setup)
add_library(rccl-source-wrappers STATIC
mem_manager_src_wrapper.cc
mem_manager_wrapper_test.cc
fakes/roctx_fakes.cc
bootstrap_wrapper.cc
init_stubs.cpp
wrapper_link_stubs.cpp
Expand Down Expand Up @@ -1378,6 +1429,7 @@ rccl_add_micro_binary(rccl-UnitTestsMicro
RAS_PEERS_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/ras/peers.cc"
RAS_DIAGNOSTICS_ENV_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/ras/diagnostics_env.cc"
RAS_PARAM_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/ras/ras_param.cc"
COMM_DUMP_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/commDump.cc"
# graph/tuning.cc keeps the basename, so add_file_unique() renames this one.
TUNING_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/tuning/tuning_tmp.cc"
TUNING_GENERAL_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/tuning/tuning_general.cc"
Expand Down Expand Up @@ -1601,6 +1653,52 @@ rccl_add_micro_binary(rccl-UnitTestsMicroRmaProxy
RMA_PROXY_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/rma/rma_proxy.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_rma_proxy.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroDebug
# ---------------------------------------------------------------------------
rccl_add_micro_binary(rccl-UnitTestsMicroDebug
SOURCES ${TEST_MICRO_DEBUG_SOURCE_FILES}
EXTRA_DEFS
${_MICRO_MODE_DEFS}
DEBUG_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/debug.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_debug.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroApiTrace
# ---------------------------------------------------------------------------
rccl_add_micro_binary(rccl-UnitTestsMicroApiTrace
SOURCES ${TEST_MICRO_API_TRACE_SOURCE_FILES}
# The rocprofiler-register branch would need librocprofiler-register, so api_trace.cc's
# RCCL_ROCPROFILER_REGISTER block is not built here and not in this binary's coverage.
REMOVE_DEFS RCCL_ROCPROFILER_REGISTER=1
EXTRA_DEFS
${_MICRO_MODE_DEFS}
API_TRACE_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/misc/api_trace.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_api_trace.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroRecorder
# ---------------------------------------------------------------------------
rccl_add_micro_binary(rccl-UnitTestsMicroRecorder
SOURCES ${TEST_MICRO_RECORDER_SOURCE_FILES}
EXTRA_DEFS
${_MICRO_MODE_DEFS}
RECORDER_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/misc/recorder.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_recorder.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroCollTrace
# ---------------------------------------------------------------------------
rccl_add_micro_binary(rccl-UnitTestsMicroCollTrace
SOURCES ${TEST_MICRO_COLL_TRACE_SOURCE_FILES}
EXTRA_DEFS
${_MICRO_MODE_DEFS}
COLL_TRACE_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/misc/latency_profiler/CollTrace.cc"
COLL_TRACE_EVENT_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/misc/latency_profiler/CollTraceEvent.cc"
COLL_TRACE_FUNC_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/misc/latency_profiler/CollTraceFunc.cc"
COLL_TRACE_UTILS_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/misc/latency_profiler/CollTraceUtils.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_coll_trace.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroWarpSpeed -- tests for ENABLE_WARP_SPEED
# ---------------------------------------------------------------------------
Expand Down
35 changes: 35 additions & 0 deletions projects/rccl/test/host/MICROTEST_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ export colliding non-`static` symbols; otherwise a unit needs its own binary:
`Sym*` CTest pattern). Each kernel `__global__` is neutered to an ordinary
host stub (see the file's own header comment) so the 84 generated function
pointers link without the HIP runtime.
- `commDump.cc` (`COMM_DUMP_CC_PATH`, from `comm-dump-test.cc`); suite
`CommDumpMicrotest.*`. Reads the dump back from `fakes/profiler_fakes.cc`.
- `include/timer.h` built with `ENABLE_TIMER`, from `timer-test.cc`; suite
`TimerMicrotest.*`. Header-only, no `_CC_PATH` macro needed; x86-64 only,
as that arm uses `__rdtsc`.
- `rccl_wrap.cc` (`WRAP_CC_PATH`, from `wrap-test.cc`); suites
`WrapMicrotest.*`, `WrapMicrotestIsolated.*`. Shared dependency seams live
in their production-TU owners (`ce_fakes.cc`, `sym_kernels_fakes.cc`,
Expand Down Expand Up @@ -456,6 +461,29 @@ export colliding non-`static` symbols; otherwise a unit needs its own binary:
cannot drive. Topologies come from XML built in `TopoScene.h`; HIP and amd-smi come from
`fakes/hip_fakes.cc` and `fakes/amdsmi_fakes.cc`, the other externals from
`fakes/graph_fakes.cc`. See `test_categories_micro_topo.yaml`.

- **`rccl-UnitTestsMicroDebug`** — `debug.cc` (via `DEBUG_CC_PATH`, from
`debug-test.cc`); suite `Debug*`. Its own binary because it is the real
`ncclDebugLog`, which every shared fake set also defines. See
`test_categories_micro_debug.yaml`.

- **`rccl-UnitTestsMicroApiTrace`** — `misc/api_trace.cc` (via `API_TRACE_CC_PATH`,
from `api-trace-test.cc`); suite `ApiTrace*`. Its own binary because it defines
the public `NCCL_API` entry points that `fakes/api_trace_fakes.cc` supplies
elsewhere. Built without `RCCL_ROCPROFILER_REGISTER`, so the rocprofiler-register
block is not covered. See `test_categories_micro_api_trace.yaml`.

- **`rccl-UnitTestsMicroRecorder`** — `misc/recorder.cc` (via `RECORDER_CC_PATH`,
from `recorder-test.cc`); suite `Recorder*`. Its own binary because it is the
real `rccl::Recorder`, which `fakes/recorder_fakes.cc` supplies elsewhere. See
`test_categories_micro_recorder.yaml`.

- **`rccl-UnitTestsMicroCollTrace`** — `misc/latency_profiler/CollTrace{,Event,Func,Utils}.cc`
(via `COLL_TRACE{,_EVENT,_FUNC,_UTILS}_CC_PATH`, all from `coll-trace-test.cc`);
suites `CollTrace*`. Its own binary because its `ncclDebugLog`, HIP event and
bootstrap seams would collide with the shared fakes. See
`test_categories_micro_coll_trace.yaml`.

- **`rccl-UnitTestsMicroDiagnostics`**: `src/diagnostics/p2p.cc` (via
`DIAG_P2P_CC_PATH`, suite `DiagP2pMicrotest.*`) and `src/diagnostics/ib_write_bw.cc`
(via `DIAG_IB_WRITE_BW_CC_PATH`, suite `DiagIbWriteBwMicrotest.*`). Its own binary: it fakes the
Expand Down Expand Up @@ -623,6 +651,7 @@ symbol.
| `src/bootstrap.cc` | `fakes/bootstrap_stubs.cc` |
| `src/ce_coll.cc` (targets that do not compile the real file) | `fakes/ce_fakes.cc` |
| `src/collectives.cc` | `fakes/collectives_fakes.cc` |
| `src/debug.cc` (`ncclDebugLog` recorder for binaries that cannot link `nccl_fakes.cc`, which owns it everywhere else) | `fakes/debug_fakes.cc` |
| `src/dev_runtime.cc` (targets that do not compile the real file) | `fakes/dev_runtime_fakes.cc` |
| `src/diagnostics.cc` (`ncclDiagChildRun*` external-tool runners) | `fakes/diagnostics_fakes.cc` |
| externals `src/dev_runtime.cc` reaches (`rccl-UnitTestsMicro`, which compiles it) | `fakes/dev_runtime_micro_fakes.cc` |
Expand All @@ -649,11 +678,13 @@ symbol.
| `src/misc/mlx5dvwrap.cc` | `fakes/mlx5dvwrap_fakes.cc` |
| `src/misc/param.cc` + `getenv` interposition | `fakes/env_fakes.cc` |
| `src/misc/rocmwrap.cc` | `fakes/rocmwrap_fakes.cc` |
| `src/misc/roctx.cc` (`roctx_scoped_range_in`, recorded) | `fakes/roctx_fakes.cc` |
| `src/misc/socket.cc` | `fakes/socket_fakes.cc` |
| `src/misc/strongstream.cc` | `fakes/strongstream_stubs.cc` |
| `src/misc/utils.cc` | `fakes/utils_fakes.cc` |
| `src/os/linux.cc` | `fakes/os_fakes.cc` |
| `src/plugin/env.cc` | `fakes/env_plugin_fakes.cc` |
| `src/plugin/profiler.cc` (`ncclProfilerProxyTraceDumpIfAny`, recorded) | `fakes/profiler_fakes.cc` |
| `src/plugin/gin.cc`, `src/gin/gin_host.cc` (targets that do not compile the real file) | `fakes/gin_fakes.cc` |
| `src/plugin/profiler.cc` (`ncclProfilerCallback`, until it has its own fakes file) | `fakes/nccl_fakes.cc` |
| `src/proxy.cc` | `fakes/proxy_fakes.cc` |
Expand Down Expand Up @@ -1062,6 +1093,10 @@ cmake --build build -j"$(nproc)"
./build/rccl-UnitTestsMicroDdaColl # src/algorithms/dda/*/dda_*.cu launchers
./build/rccl-UnitTestsMicroEnqueue # enqueue.cc tests
./build/rccl-UnitTestsMicroEnqueue-devlinker # same, RCCL_DEVICE_LINKER arm
./build/rccl-UnitTestsMicroCollTrace # misc/latency_profiler tests
./build/rccl-UnitTestsMicroRecorder # misc/recorder.cc tests
./build/rccl-UnitTestsMicroApiTrace # misc/api_trace.cc tests
./build/rccl-UnitTestsMicroDebug # debug.cc tests
./build/rccl-UnitTestsMicroSymKernels # sym_kernels.cc tests
./build/rccl-UnitTestsMicroTaskPrep # src/enqueue/task_prep/ + task_sched/ tests
./build/rccl-UnitTestsMicroConnect # src/graph/connect.cc Preset/Postset tests
Expand Down
Loading
Loading