Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5fa905a
UCP/PROTO/RNDV: Isolate remote system device namespace
jeffnvidia Jul 21, 2026
8e90a98
UCP/TEST: Cover remote RNDV sysdev namespace
jeffnvidia Aug 25, 2026
d093cd3
UCP/RNDV: Model mtype lanes by staging device
jeffnvidia Aug 26, 2026
638f131
UCP/RNDV: Own mtype probe selection parameters
jeffnvidia Aug 27, 2026
f1549fe
UCP/TEST: Gate RNDV mtype abort on selection
jeffnvidia Aug 27, 2026
d32210a
UCP/TEST: Directly check mtype staging lanes
jeffnvidia Aug 27, 2026
de96cc6
UCP/RNDV: Fix mtype helper spacing
jeffnvidia Aug 27, 2026
2d5daed
UCP/RNDV: Apply code formatting
jeffnvidia Aug 28, 2026
8936637
UCP/RNDV: Prepare mtype probe parameters
jeffnvidia Aug 30, 2026
f8e568c
UCP/TEST: Gate mtype sysdev checks by endpoint
jeffnvidia Aug 30, 2026
093ce68
UCP/TEST: Align RNDV abort state members
jeffnvidia Aug 30, 2026
0555af1
UCP/TEST: Reuse mtype mock system devices
jeffnvidia Aug 31, 2026
f2a4ba2
UCP/TEST: Drop unrelated RNDV abort test changes
jeffnvidia Aug 31, 2026
c18ccce
UCP/PROTO: Separate mtype selection and reachability devices
jeffnvidia Sep 1, 2026
2203456
UCP/PROTO: Check selected buffer reachability for zcopy
jeffnvidia Sep 1, 2026
9a15675
UCP/TEST: Exercise mtype staging reachability
jeffnvidia Sep 2, 2026
80e5456
UCP/TEST: Use real devices for mtype reachability
jeffnvidia Sep 2, 2026
6ddfebc
UCP/TEST: Align mock device members
jeffnvidia Sep 2, 2026
77a30b0
UCP/TEST: Restore topology after mtype mock tests
jeffnvidia Sep 2, 2026
afbf29a
UCP/TEST: Restore topology when mtype init skips
jeffnvidia Sep 3, 2026
2bcee46
UCP/TEST: Address mtype sysdev review comments
jeffnvidia Sep 3, 2026
950be0a
UCP/TEST: Clean up remote sysdev regression
jeffnvidia Sep 4, 2026
4ccf8ff
Merge branch 'master' into agent/fix-rndv-remote-sysdev
tvegas1 Sep 7, 2026
68bf9df
Merge remote-tracking branch 'origin/master' into agent/fix-rndv-remo…
jeffnvidia Sep 10, 2026
a869ff3
UCP/PROTO: Clarify RNDV reachability rationale
jeffnvidia Sep 10, 2026
f13cc89
UCP/PROTO: Consolidate RNDV reachability checks
jeffnvidia Sep 10, 2026
eda461f
UCP/PROTO: Clarify RNDV topology diagnostics
jeffnvidia Sep 10, 2026
656978e
UCP/TEST: Strengthen RNDV fragment device check
jeffnvidia Sep 10, 2026
b4c1410
UCP/PROTO: Preserve topology estimate for remote RNDV
jeffnvidia Sep 10, 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
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ Ivan Kochin <ikochin@nvidia.com>
Jakir Kham <jakirkham@gmail.com>
Jason Gunthorpe <jgg@mellanox.com>
Jeff Daily <jeff.daily@amd.com>
Jeffrey Mahou <jmahou@nvidia.com>
Jianxin Xiong <jianxin.xiong@intel.com>
John Snyder <jms285@duke.edu>
Jonas Zhou <JonasZhou@zhaoxin.com>
Expand Down
24 changes: 14 additions & 10 deletions src/ucp/proto/proto_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,7 @@ ucp_proto_common_filter_min_frag(const ucp_proto_init_params_t *params,
ucp_md_index_t md_index = context->tl_rscs[rsc_index].md_index;
const uct_md_attr_v2_t *md_attr = &context->tl_mds[md_index].attr;
const uct_iface_attr_t *iface_attr;
ucs_sys_device_t lane_sys_dev;
size_t max_iov, tl_min_frag, tl_max_frag;

/* Check memory registration capabilities for zero-copy case */
Expand Down Expand Up @@ -532,6 +533,19 @@ ucp_proto_common_filter_min_frag(const ucp_proto_init_params_t *params,
ucs_memory_type_names[reg_mem_type]);
return 0;
}

/* The lane's device and the memory that will actually be registered
* on it (which may differ from select_param's buffer, e.g. a staging
* fragment for mtype protocols) must be topologically reachable. */
lane_sys_dev = ucp_proto_common_get_sys_dev(params, lane);
if (!ucs_topo_is_reachable(lane_sys_dev,
common_params->reg_mem_info.sys_dev)) {
ucs_trace("%s: no reachability between lane_sys_dev=%u and "
"reg_mem_sys_dev=%u",
lane_desc, lane_sys_dev,
common_params->reg_mem_info.sys_dev);
return 0;
}
}

iface_attr = ucp_proto_common_get_iface_attr(params, lane);
Expand Down Expand Up @@ -593,7 +607,6 @@ ucp_proto_common_find_lanes(const ucp_proto_init_params_t *params,
ucp_md_index_t md_index;
ucp_lane_map_t lane_map;
char lane_desc[64];
ucs_sys_device_t lane_sys_dev;
ucs_status_t status;

if (max_lanes == 0) {
Expand Down Expand Up @@ -716,15 +729,6 @@ ucp_proto_common_find_lanes(const ucp_proto_init_params_t *params,
}
Comment thread
jeffnvidia marked this conversation as resolved.
Resolved
}

/* The two devices must also have internal reachability */
lane_sys_dev = context->tl_rscs[rsc_index].tl_rsc.sys_device;
if (!ucs_topo_is_reachable(lane_sys_dev, select_param->sys_dev)) {
ucs_trace("%s: no reachability between lane_sys_dev=%u and "
"sys_dev=%u",
lane_desc, lane_sys_dev, select_param->sys_dev);
continue;
}

ucs_trace("%s: added as lane %d", lane_desc, lane);
lanes[num_lanes++] = lane;
}
Expand Down
9 changes: 5 additions & 4 deletions src/ucp/rndv/proto_rndv.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,11 +368,12 @@ static ucp_proto_select_param_t ucp_proto_rndv_remote_select_param_init(
select_param->dt_class,
&mem_info, select_param->sg_count);
} else {
/* If we know the remote buffer parameters, these are actually the local
* parameters for the remote protocol
*/
mem_info.sys_dev = init_params->rkey_config_key->sys_dev;
mem_info.type = init_params->rkey_config_key->mem_type;
/* If the local and remote memory types match, use the local system
* device as a namespace-safe proxy for remote protocol estimation. */
mem_info.sys_dev = (mem_info.type == select_param->mem_type) ?
select_param->sys_dev :
UCS_SYS_DEVICE_ID_UNKNOWN;
mem_info.flags = ucp_proto_rndv_rkey_mem_flags_estimate(init_params);
ucp_proto_select_param_init(&remote_select_param, params->remote_op_id,
op_attr_mask, params->remote_op_flags,
Expand Down
5 changes: 4 additions & 1 deletion test/gtest/ucp/test_ucp_peer_failure.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1013,8 +1013,11 @@ UCS_TEST_P(test_ucp_peer_failure_rndv_put_ppln_abort, rtr_mtype)
rndv_progress_failure_test(rndv_mode::put_ppln, true);
}

/* Use host staging so this test still selects rndv/put/mtype when CUDA
* fragments are unreachable from the network lane. The user buffer remains
* CUDA. */
UCS_TEST_P(test_ucp_peer_failure_rndv_put_ppln_abort, pipeline,
"RNDV_FRAG_SIZE=host:8K,cuda:8K")
"RNDV_FRAG_MEM_TYPES=host", "RNDV_FRAG_SIZE=host:8K")
Comment thread
tvegas1 marked this conversation as resolved.
Resolved
Comment thread
jeffnvidia marked this conversation as resolved.
Resolved
{
rndv_progress_failure_test(rndv_mode::put_ppln, true);
}
Expand Down
Loading