From 0fd61905448f1029c01f2c4b5ed8e4587ac6e844 Mon Sep 17 00:00:00 2001 From: ryanhankins Date: Fri, 21 Feb 2025 15:18:26 -0600 Subject: [PATCH] Set NULL MR descriptor, where no MR is needed. This avoids the case where the provider does not require registration of local buffers. Signed-off-by: ryanhankins --- src/nccl_ofi_sendrecv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nccl_ofi_sendrecv.c b/src/nccl_ofi_sendrecv.c index 6261fc57d..2c2c98e2c 100644 --- a/src/nccl_ofi_sendrecv.c +++ b/src/nccl_ofi_sendrecv.c @@ -503,7 +503,7 @@ static int sendrecv_recv_conn_post(nccl_net_ofi_sendrecv_listen_comm_t *l_comm, ssize_t rc = 0; int ret = 0; int dev_id = l_comm->base.base.dev_id; - void *desc = fi_mr_desc(mr); + void *desc = mr ? fi_mr_desc(mr) : NULL; /* Post a buffer for receiving connection requests */ rc = fi_trecv(l_comm->local_ep, buffer, size, @@ -2086,7 +2086,8 @@ static ssize_t sendrecv_send_comm_send_connect_message(nccl_net_ofi_sendrecv_sen ssize_t rc = 0; uint64_t max_tag = device->max_tag; nccl_ofi_connection_info_t *conn_info = (nccl_ofi_connection_info_t *)s_comm->conn_info->ptr; - void *desc = fi_mr_desc(((sendrecv_freelist_regmr_handle_t *)s_comm->conn_info->mr_handle)->mr_handle); + struct fid_mr *mr_handle = ((sendrecv_freelist_regmr_handle_t *)s_comm->conn_info->mr_handle)->mr_handle; + void *desc = mr_handle ? mr_handle : NULL; /* If connecting to self, pass along the send req so that the accept side can clean up the request */