@@ -56,6 +56,9 @@ build_project() {
5656
5757build_suite () {
5858 local suite_dir=" $PROJECT_ROOT /test/unittest/$SUITE "
59+ if [[ " $SUITE " == device_api_unified_ir ]]; then
60+ suite_dir=" $PROJECT_ROOT /test/unittest/device_api"
61+ fi
5962 local -a args=(" ${FLAGCX_CI_TEST_MAKE_ARGS[@]} " )
6063
6164 if declare -F flagcx_ci_build_suite_override > /dev/null; then
@@ -109,6 +112,82 @@ run_device_api() {
109112 build/bin/test_device_ir_inter " ${flags[@]} "
110113}
111114
115+ run_device_api_unified_ir () {
116+ local suite_dir=" $PROJECT_ROOT /test/unittest/device_api"
117+ local -a common_env=(
118+ -x FLAGCX_USE_HETERO_COMM=1
119+ -x FLAGCX_VMM_ENABLE=0
120+ -x FLAGCX_IB_GID_INDEX=3
121+ -x NCCL_DEBUG=INFO
122+ -x NCCL_DEBUG_SUBSYS=INIT
123+ -x NCCL_NVLS_ENABLE=0
124+ -x NCCL_IB_GID_INDEX=3
125+ -x LD_LIBRARY_PATH
126+ )
127+ local -a intra_env=(
128+ " ${common_env[@]} "
129+ -x FLAGCX_DEBUG=TRACE
130+ -x FLAGCX_DEBUG_SUBSYS=ALL
131+ )
132+ local -a inter_env=(
133+ " ${common_env[@]} "
134+ -x FLAGCX_DEBUG=INFO
135+ -x FLAGCX_DEBUG_SUBSYS=PROXY
136+ )
137+ local -a intra_fallback_env=(
138+ " ${intra_env[@]} "
139+ -x FLAGCX_DEVICE_ONE_SIDED_FORCE_NET=1
140+ )
141+ local -a inter_fallback_env=(
142+ " ${inter_env[@]} "
143+ -x FLAGCX_DEVICE_ONE_SIDED_FORCE_NET=1
144+ )
145+ local -a intra_flags=(-b 1K -e 16M -f 2 -R 1)
146+ local -a inter_flags=(-b 1K -e 16M -f 2 -R 1)
147+ # Two sizes cover both initial and reused signal/shadow/counter state while
148+ # keeping the forced-fallback regression reasonably small.
149+ local -a fallback_flags=(-b 1K -e 2K -f 2 -R 1)
150+
151+ declare -p FLAGCX_CI_NODE1_MPI_ARGS > /dev/null 2>&1 || {
152+ echo " The platform set_env script must define FLAGCX_CI_NODE1_MPI_ARGS" >&2
153+ exit 1
154+ }
155+ declare -p FLAGCX_CI_NODE2_MPI_ARGS > /dev/null 2>&1 || {
156+ echo " The platform set_env script must define FLAGCX_CI_NODE2_MPI_ARGS" >&2
157+ exit 1
158+ }
159+ : " ${FLAGCX_CI_INTRA_NP:? The platform set_env script must define FLAGCX_CI_INTRA_NP} "
160+ : " ${FLAGCX_CI_NODE_NP:? The platform set_env script must define FLAGCX_CI_NODE_NP} "
161+
162+ cd " $suite_dir "
163+
164+ # Keep P2P enabled so the intra test covers signal/counter buffers and their
165+ # shadows. The INTER team below crosses the two logical nodes through NET.
166+ mpirun -np " $FLAGCX_CI_INTRA_NP " --allow-run-as-root " ${intra_env[@]} " \
167+ build/bin/test_device_ir_unified_intra " ${intra_flags[@]} "
168+
169+ mpirun --allow-run-as-root \
170+ -np " $FLAGCX_CI_NODE_NP " " ${inter_env[@]} " " ${FLAGCX_CI_NODE1_MPI_ARGS[@]} " \
171+ build/bin/test_device_ir_unified_inter " ${inter_flags[@]} " \
172+ : -np " $FLAGCX_CI_NODE_NP " " ${inter_env[@]} " " ${FLAGCX_CI_NODE2_MPI_ARGS[@]} " \
173+ build/bin/test_device_ir_unified_inter " ${inter_flags[@]} "
174+
175+ # Fault injection: disable only one-sided data/signal IPC. Barriers retain
176+ # their IPC transport so these runs specifically validate IPC-to-Net
177+ # fallback for S18-S25.
178+ mpirun -np " $FLAGCX_CI_INTRA_NP " --allow-run-as-root \
179+ " ${intra_fallback_env[@]} " \
180+ build/bin/test_device_ir_unified_intra " ${fallback_flags[@]} "
181+
182+ mpirun --allow-run-as-root \
183+ -np " $FLAGCX_CI_NODE_NP " " ${inter_fallback_env[@]} " \
184+ " ${FLAGCX_CI_NODE1_MPI_ARGS[@]} " \
185+ build/bin/test_device_ir_unified_inter " ${fallback_flags[@]} " \
186+ : -np " $FLAGCX_CI_NODE_NP " " ${inter_fallback_env[@]} " \
187+ " ${FLAGCX_CI_NODE2_MPI_ARGS[@]} " \
188+ build/bin/test_device_ir_unified_inter " ${fallback_flags[@]} "
189+ }
190+
112191run_suite () {
113192 local suite_dir=" $PROJECT_ROOT /test/unittest/$SUITE "
114193 local -a args=(" ${FLAGCX_CI_TEST_MAKE_ARGS[@]} " )
@@ -155,6 +234,9 @@ run_suite() {
155234 device_api)
156235 run_device_api
157236 ;;
237+ device_api_unified_ir)
238+ run_device_api_unified_ir
239+ ;;
158240 * )
159241 echo " Unsupported unit test suite: $SUITE " >&2
160242 exit 2
@@ -163,7 +245,7 @@ run_suite() {
163245}
164246
165247case " $SUITE " in
166- device_api|symmem)
248+ device_api|device_api_unified_ir| symmem)
167249 ;;
168250 adaptor|core|p2p|rma|runner|service)
169251 build_googletest
0 commit comments