Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
06c380a
UCP/DEVICE: Make memh and local_addr optional for counter operations
michal-shalev Oct 11, 2025
a494c52
Merge branch 'master' into optional-memh-localaddr-counter-ops
michal-shalev Oct 13, 2025
60a1131
UCP/DEVICE: PR fixes
michal-shalev Oct 13, 2025
6a3eb78
UCP/DEVICE: PR fixes 2.0
michal-shalev Oct 13, 2025
205b01e
UCP/DEVICE: PR fixes 3.0
michal-shalev Oct 13, 2025
589b0b4
UCP/DEVICE: PR fixes 4.0
michal-shalev Oct 13, 2025
4573621
UCP/DEVICE: PR fixes 5.0
michal-shalev Oct 13, 2025
b0eff73
UCP/DEVICE: Update perftest
michal-shalev Oct 13, 2025
10646cd
UCP/DEVICE: Update perftest 2.0
michal-shalev Oct 13, 2025
534057b
UCP/DEVICE: PR fixes 6.0
michal-shalev Oct 13, 2025
dc11fd6
UCP/DEVICE: CI fix
michal-shalev Oct 13, 2025
c718cec
UCP/DEVICE: PR fixes 7.0
michal-shalev Oct 13, 2025
2288f1b
UCP/DEVICE: PR fixes 8.0
michal-shalev Oct 15, 2025
b1f2ad0
UCP/DEVICE: PR fixes 9.0
michal-shalev Oct 15, 2025
5c3b023
UCP/DEVICE: PR fixes 10.0
michal-shalev Oct 16, 2025
06a662e
UCP/DEVICE: PR fixes 11.0
michal-shalev Oct 20, 2025
777d06a
UCP/DEVICE: PR fixes 12.0
michal-shalev Oct 20, 2025
62e6732
UCP/DEVICE: PR fixes 13.0
michal-shalev Oct 20, 2025
8219c47
UCP/DEVICE: Fix code style
michal-shalev Oct 20, 2025
025a1a0
UCP/DEVICE: PR fixes 14.0
michal-shalev Oct 20, 2025
e46a302
UCP/DEVICE: Fix documentation
michal-shalev Oct 20, 2025
c70739c
UCP/DEVICE: Add ucp_device_detect_uct_memh
michal-shalev Oct 20, 2025
af75f5c
UCP/DEVICE: Add tests
michal-shalev Oct 20, 2025
c967767
UCP/DEVICE: PR fixes 15.0
michal-shalev Oct 22, 2025
c444251
UCP/DEVICE: PR fixes 16.0
michal-shalev Oct 22, 2025
a07231c
Merge branch 'master' into optional-memh-localaddr-counter-ops
michal-shalev Oct 22, 2025
1f0d285
UCP/DEVICE: PR fixes 17.0
michal-shalev Oct 25, 2025
0d30594
UCP/DEVICE: PR fixes 18.0
michal-shalev Oct 25, 2025
e9c1382
UCP/DEVICE: PR fixes 19.0
michal-shalev Oct 26, 2025
2bbfa15
UCP/DEVICE: PR fixes 20.0
michal-shalev Oct 26, 2025
438346f
UCP/DEVICE: PR fixes 21.0
michal-shalev Oct 26, 2025
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
58 changes: 57 additions & 1 deletion src/ucp/core/ucp_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include "ucp_worker.inl"
#include "ucp_ep.inl"
#include "ucp_mm.inl"


KHASH_TYPE(ucp_device_handle_allocs, ucp_device_mem_list_handle_h,
Expand Down Expand Up @@ -339,6 +340,50 @@ static void ucp_device_mem_list_lane_lookup(
}
}

static ucs_status_t
ucp_device_detect_uct_memh(ucp_context_h context,
const ucp_device_mem_list_elem_t *element,
ucs_memory_type_t mem_type, ucp_md_index_t md_index,
uct_mem_h *uct_memh)
{
void *local_addr;
size_t length;
ucs_status_t status;
ucp_mem_h memh;

*uct_memh = UCT_MEM_HANDLE_NULL;
local_addr = UCS_PARAM_VALUE(UCP_DEVICE_MEM_LIST_ELEM_FIELD, element,
local_addr, LOCAL_ADDR, NULL);
length = UCS_PARAM_VALUE(UCP_DEVICE_MEM_LIST_ELEM_FIELD, element,
length, LENGTH, 0);

if ((local_addr == NULL) || (length == 0)) {
return UCS_OK;
}

status = ucp_memh_get(context, local_addr, length, mem_type,
UCS_BIT(md_index),
UCT_MD_MEM_ACCESS_LOCAL_READ |
UCT_MD_MEM_ACCESS_LOCAL_WRITE,
"device_mem_list", &memh);
if (status != UCS_OK) {
ucs_debug("failed to detect memh from local_addr %p length %zu: %s",
local_addr, length, ucs_status_string(status));
return status;
}

ucs_assertv((memh->md_map & UCS_BIT(md_index)) != 0,
"memh=%p md_map=0x%lx md_index=%u", memh, memh->md_map,
md_index);

*uct_memh = memh->uct[md_index];
ucs_assert(*uct_memh != UCT_MEM_HANDLE_NULL);

ucp_memh_put(memh);

return UCS_OK;
}

static ucs_status_t ucp_device_mem_list_create_handle(
ucp_ep_h ep, ucs_sys_device_t local_sys_dev,
const ucp_device_mem_list_params_t *params,
Expand All @@ -365,6 +410,7 @@ static ucs_status_t ucp_device_mem_list_create_handle(
size_t length;
void *local_addr;
uint64_t remote_addr;
ucp_mem_h memh;

handle_size += sizeof(*handle.local_addrs) + sizeof(*handle.remote_addrs) +
sizeof(*handle.lengths);
Expand Down Expand Up @@ -445,6 +491,15 @@ static ucs_status_t ucp_device_mem_list_create_handle(
ucp_element = &params->elements[i];
local_addr = UCS_PARAM_VALUE(UCP_DEVICE_MEM_LIST_ELEM_FIELD,
ucp_element, local_addr, LOCAL_ADDR, NULL);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pls remove

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed

if (local_addr == NULL) {
memh = UCS_PARAM_VALUE(UCP_DEVICE_MEM_LIST_ELEM_FIELD, ucp_element,
memh, MEMH, NULL);
if (memh != NULL) {
local_addr = ucp_memh_address(memh);
}
}

remote_addr = UCS_PARAM_VALUE(UCP_DEVICE_MEM_LIST_ELEM_FIELD,
ucp_element, remote_addr, REMOTE_ADDR, 0);
length = UCS_PARAM_VALUE(UCP_DEVICE_MEM_LIST_ELEM_FIELD, ucp_element,
Expand Down Expand Up @@ -479,7 +534,8 @@ static ucs_status_t ucp_device_mem_list_create_handle(
ucp_element->memh->md_map, local_md_index);
ucs_assert(uct_memh != UCT_MEM_HANDLE_NULL);
} else {
uct_memh = UCT_MEM_HANDLE_NULL;
ucp_device_detect_uct_memh(ep->worker->context, ucp_element,
mem_type, local_md_index, &uct_memh);
}

/* Remote registration */
Expand Down