Skip to content

UCT/API: Add strides and counts to uct_ep_put_sgl_zcopy#11401

Open
michal-shalev wants to merge 1 commit intoopenucx:masterfrom
michal-shalev:uct-api-sgl-strides
Open

UCT/API: Add strides and counts to uct_ep_put_sgl_zcopy#11401
michal-shalev wants to merge 1 commit intoopenucx:masterfrom
michal-shalev:uct-api-sgl-strides

Conversation

@michal-shalev
Copy link
Copy Markdown
Contributor

@michal-shalev michal-shalev commented May 3, 2026

What?

Add two optional const size_t * parameters, counts and strides, to uct_ep_put_sgl_zcopy (and the matching internal function pointer typedef and dispatch wrapper). When provided, element i represents counts[i] blocks of lengths[i] bytes, each separated by strides[i] bytes, starting at buffers[i] / remote_addrs[i]. When NULL, each element is transferred once (equivalent to count=1, stride=0), preserving the existing behavior.

Why?

The current SGL zero-copy put requires one entry per transferred buffer, so a regular strided layout has to be expanded into long buffers/lengths/remote_addrs arrays. Allowing per-element counts/strides lets the caller describe such patterns compactly.

How?

API-only change in src/uct/api/v2/uct_v2.h, with the matching typedef in src/uct/base/uct_iface.h and dispatch wrapper in src/uct/base/uct_iface.c updated. Implementation will follow in subsequent PRs.

@bosilca
Copy link
Copy Markdown

bosilca commented May 4, 2026

This is awesome, I've been waiting for such an extension for a long time. Lately I discovered your devel branches, and I've been using them [almost] successfully.

Would it be possible to provide a way to have each one of the rkeys, counts and strides arrays as a single value, with the understanding that in such a case all elements have the same value ?

@openucx openucx deleted a comment from svc-nixl May 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants