Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
c6fe342
test(rccl): add host microtests for the GIN host proxy
aduforest Oct 15, 2026
53517f8
test(rccl): address ARGUS review of the GIN host proxy microtests
aduforest Oct 15, 2026
ce9ba3c
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 16, 2026
488dabe
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 19, 2026
7c99f7c
test(rccl): guard the GIN DMA-BUF export fake and tests on HIP >= 7.0
aduforest Oct 19, 2026
84d01cb
test(rccl): link the shared HIP and logging fakes into the GIN host p…
aduforest Oct 19, 2026
caa3d4a
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 19, 2026
c754099
test(rccl): move the DMA-BUF export hook next to the other export sea…
aduforest Oct 19, 2026
a1d0df3
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 20, 2026
dfbfcd9
test(rccl): host-only suites declare num_gpus 0
aduforest Oct 21, 2026
12c7fdd
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 21, 2026
af1169b
test(rccl): address review on the GIN host proxy microtests
aduforest Oct 21, 2026
37937e7
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 21, 2026
842d79e
test(rccl): GIN host proxy microtests per review
aduforest Oct 22, 2026
2f5d178
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 22, 2026
b4fddeb
test(rccl): free what a failed GIN proxy CreateContext leaves behind …
aduforest Oct 22, 2026
d03e8e7
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 22, 2026
1045a3e
test(rccl): turn Won't Do bug pins into plain tests (pre-merge harden…
aduforest Oct 22, 2026
edb6f7f
Merge remote-tracking branch 'origin/develop' into users/aduforest/ai…
aduforest Oct 24, 2026
87935e0
test(rccl): leave ci-precheckin.json to the CI owners
aduforest Oct 24, 2026
a4c3914
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
25 changes: 25 additions & 0 deletions projects/rccl/test/host/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,15 @@ function(rccl_define_micro_source_lists)
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroGinHostProxy -- src/gin/gin_host_proxy.cc + src/gin/proxy_gpucontext/. Own
# binary: gin-plugin-init-test.cc in rccl-UnitTestsMicro defines ncclGinProxy and ncclGinProxyVersion.
set(TEST_MICRO_GIN_HOST_PROXY_SOURCE_FILES
gin-host-proxy-test.cc
fakes/hip_fakes.cc
fakes/nccl_fakes.cc
../common/main_altrsmi.cpp
PARENT_SCOPE)

# rccl-UnitTestsMicroClientSupport -- src/ras/client_support.cc. Its own binary: this test's
# inline stand-ins for ncclSocketsSameNode/rasPeerInfoToString/rasPeerToString (client_support.cc's
# callees into src/ras/peers.cc) collide with the REAL peers.cc compiled into rccl-UnitTestsMicro
Expand Down Expand Up @@ -1081,6 +1090,22 @@ rccl_add_micro_binary(rccl-UnitTestsMicroWarpSpeed
SYMMETRIC_SCHED_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/scheduler/symmetric_sched.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_scheduler.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroGinHostProxy
# ---------------------------------------------------------------------------
rccl_add_micro_binary(rccl-UnitTestsMicroGinHostProxy
SOURCES ${TEST_MICRO_GIN_HOST_PROXY_SOURCE_FILES}
EXTRA_INCLUDES
${RCCL_HOST_HIPIFY_DIR}/src/include/plugin
${RCCL_HOST_HIPIFY_DIR}/src/include/nccl_device
EXTRA_DEFS
${_MICRO_MODE_DEFS}
GIN_HOST_PROXY_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/gin/gin_host_proxy.cc"
GPUCONTEXT_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/gin/proxy_gpucontext/gpucontext.cc"
GPUCONTEXT_V1_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/gin/proxy_gpucontext/gpucontext_v1.cc"
GPUCONTEXT_V2_CC_PATH="${RCCL_HOST_HIPIFY_DIR}/src/gin/proxy_gpucontext/gpucontext_v2.cc"
CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/../test_categories_micro_gin_host_proxy.yaml")

# ---------------------------------------------------------------------------
# rccl-UnitTestsMicroInit and variants
# ---------------------------------------------------------------------------
Expand Down
6 changes: 6 additions & 0 deletions projects/rccl/test/host/MICROTEST_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,11 @@ export colliding non-`static` symbols; otherwise a unit needs its own binary:
binaries cover both arms of both without a 2x2 cross product. init.cc compiles the *real* `argcheck.cc`/`archinfo.cc`/`utils.cc` ("oracle"
TUs) from the hipify tree rather than stubbing them; `--gc-sections` drops the
deep-path symbols the tests never reach. See `test_categories_micro_init.yaml`.
- **`rccl-UnitTestsMicroGinHostProxy`** — `gin/gin_host_proxy.cc` and the three
`gin/proxy_gpucontext/` writers (`GIN_HOST_PROXY_CC_PATH`, `GPUCONTEXT{,_V1,_V2}_CC_PATH`,
from `gin-host-proxy-test.cc`); suites `GinHostProxy*`. Its own binary:
`gin-plugin-init-test.cc` in `rccl-UnitTestsMicro` defines `ncclGinProxy` and
`ncclGinProxyVersion`. See `test_categories_micro_gin_host_proxy.yaml`.
- **`rccl-UnitTestsMicroWarpSpeed`** — `allgatherv_sched.cc` +
`symmetric_sched.cc` (via `ALLGATHERV_SCHED_CC_PATH`/`SYMMETRIC_SCHED_CC_PATH`,
both from `scheduler-test.cc`); suite `SchedulerMicrotest.*`. Its own binary,
Expand Down Expand Up @@ -916,6 +921,7 @@ cmake --build build -j"$(nproc)"
./build/rccl-UnitTestsMicroEnqueue # enqueue.cc tests
./build/rccl-UnitTestsMicroEnqueue-devlinker # same, RCCL_DEVICE_LINKER arm
./build/rccl-UnitTestsMicroSymKernels # sym_kernels.cc tests
./build/rccl-UnitTestsMicroGinHostProxy # src/gin/gin_host_proxy.cc + proxy_gpucontext/
./build/rccl-UnitTestsMicroTaskPrep # src/enqueue/task_prep/ + task_sched/ tests
./build/rccl-UnitTestsMicroConnect # src/graph/connect.cc Preset/Postset tests
./build/rccl-UnitTestsMicroDiagnostics # src/diagnostics/{p2p,ib_write_bw}.cc tests
Expand Down
20 changes: 20 additions & 0 deletions projects/rccl/test/host/fakes/hip_fakes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ ASSERT_HOOK_MATCHES_PROD(g_hipStreamWaitValue64, hipStreamWaitValue64);
ASSERT_HOOK_MATCHES_PROD(g_hipMemcpyBatchAsync, hipMemcpyBatchAsync);
#endif
ASSERT_HOOK_MATCHES_PROD(g_hipMemset, hipMemset);
#if HIP_VERSION >= 70000000
ASSERT_HOOK_MATCHES_PROD(g_hipMemGetHandleForAddressRange, hipMemGetHandleForAddressRange);
#endif
#define RCCL_ASSERT_INTERCEPTOR_HOOK(name, params) ASSERT_HOOK_MATCHES_PROD(g_##name, name);
RCCL_HIP_PROFILE_INTERCEPTORS_HOOKED(RCCL_ASSERT_INTERCEPTOR_HOOK)
#undef RCCL_ASSERT_INTERCEPTOR_HOOK
Expand Down Expand Up @@ -409,6 +412,14 @@ std::function<hipError_t(void*, const void*, size_t, hipMemcpyKind, hipStream_t)
g_hipMemcpyAsync = DefaultHipMemcpyAsync;
std::function<hipError_t(void*, int, size_t, hipStream_t)> g_hipMemsetAsync = DefaultHipMemsetAsync;
std::function<hipError_t(void*, int, size_t)> g_hipMemset = DefaultHipMemset;
#if HIP_VERSION >= 70000000
static hipError_t DefaultHipMemGetHandleForAddressRange(void*, hipDeviceptr_t, size_t, hipMemRangeHandleType,
Comment thread
aduforest marked this conversation as resolved.
Resolved
unsigned long long) {
return hipErrorNotSupported;
}
std::function<hipError_t(void*, hipDeviceptr_t, size_t, hipMemRangeHandleType, unsigned long long)>
g_hipMemGetHandleForAddressRange = DefaultHipMemGetHandleForAddressRange;
#endif
std::function<hipError_t(hipStream_t*, unsigned)> g_hipStreamCreateWithFlags = DefaultHipStreamCreateWithFlags;
std::function<hipError_t(hipStream_t)> g_hipStreamSynchronize = DefaultHipStreamSynchronize;
std::function<hipError_t(hipStream_t)> g_hipStreamDestroy = DefaultHipStreamDestroy;
Expand Down Expand Up @@ -668,6 +679,9 @@ void ResetHipFakes()
g_hipMemcpyAsync = DefaultHipMemcpyAsync;
g_hipMemsetAsync = DefaultHipMemsetAsync;
g_hipMemset = DefaultHipMemset;
#if HIP_VERSION >= 70000000
g_hipMemGetHandleForAddressRange = DefaultHipMemGetHandleForAddressRange;
#endif
g_hipStreamCreateWithFlags = DefaultHipStreamCreateWithFlags;
g_hipStreamSynchronize = DefaultHipStreamSynchronize;
g_hipStreamDestroy = DefaultHipStreamDestroy;
Expand Down Expand Up @@ -1009,6 +1023,12 @@ hipError_t hipMallocManaged(void** p, size_t size, unsigned int flags)
}
hipError_t hipMemcpy(void* d, const void* s, size_t n, hipMemcpyKind k) { return g_hipMemcpy(d, s, n, k); }
hipError_t hipMemset(void* dst, int value, size_t bytes) { return g_hipMemset(dst, value, bytes); }
#if HIP_VERSION >= 70000000
hipError_t hipMemGetHandleForAddressRange(void* handle, hipDeviceptr_t ptr, size_t size, hipMemRangeHandleType type,
unsigned long long flags) {
return g_hipMemGetHandleForAddressRange(handle, ptr, size, type, flags);
}
#endif
hipError_t hipDeviceSynchronize(void) { return hipErrorInvalidValue; }
// We define hipGetDevicePropertiesR0600, the versioned public HIP ABI symbol,
// rather than the unversioned hipGetDeviceProperties. Callers write
Expand Down
6 changes: 6 additions & 0 deletions projects/rccl/test/host/fakes/hip_fakes.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,12 @@ extern std::function<hipError_t(void* /*dst*/, int /*value*/, size_t /*bytes*/,
// hipSuccess -- the allocation seams hand out std::malloc'd host memory, so a
// buffer production zeroes is genuinely zero when a test reads it back.
extern std::function<hipError_t(void* /*dst*/, int /*value*/, size_t /*bytes*/)> g_hipMemset;
#if HIP_VERSION >= 70000000
// The DMA-BUF export (HIP >= 7.0). The default reports the export unsupported.
extern std::function<hipError_t(void* /*handle*/, hipDeviceptr_t /*ptr*/, size_t /*size*/,
Comment thread
aduforest marked this conversation as resolved.
Resolved
hipMemRangeHandleType /*type*/, unsigned long long /*flags*/)>
g_hipMemGetHandleForAddressRange;
#endif

extern std::function<hipError_t(hipStream_t* /*stream*/, unsigned /*flags*/)> g_hipStreamCreateWithFlags;
extern std::function<hipError_t(hipStream_t /*stream*/)> g_hipStreamSynchronize;
Expand Down
Loading
Loading