1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
//! UCX messenger transport (RDMA via InfiniBand/RoCE, plus tcp/shm fallback).
//!
//! Feature `ucx`, Linux only. Built on the `ucx-rs` crate (`crates/ucx-rs` in
//! this repository), which vendors a static UCX build — the only runtime system
//! dependency is rdma-core's `libibverbs.so.1`/`libmlx5.so.1` (already
//! required by any RDMA stack), and `UCX_TLS=tcp` runs the identical code
//! path with no RDMA hardware at all (which is how CI exercises this module).
//!
//! Architecture (see `docs/proposals/ibverbs-transport.md` §11 for the full
//! design record and the measurements behind each choice):
//!
//! * **No listener.** The `WorkerAddress` blob carries the packed
//! `ucp_worker` address; `register()` stores it and the endpoint is created
//! with `ucp_ep_create` on first send. No in-band bootstrap exists.
//! * **One progress thread** owns all UCX objects (the private `worker`
//! module). Sends are admitted through per-peer [`AdmissionGate`]s into its
//! command ring, preserving the per-target ordering contract.
//! * **Eager-only AM.** Every send pins `UCP_AM_SEND_FLAG_EAGER`; the
//! negotiated `eager_max` (default 1 MiB) bounds AM frames and
//! `max_message_size` reports it, so large payloads ride the messenger's
//! rendezvous staging instead.
//! * **Completion-owned operations.** Buffers are owned by the in-flight
//! operation until UCX completes it — dropped futures cannot free memory
//! UCX is still reading (the async-ucx issue #1 class, closed by design).
//!
//! [`AdmissionGate`]: crate::transports::AdmissionGate
// The RMA surface is Phase 1 of the rendezvous RDMA work: the mechanics land
// first, the registration layer that calls them lands in Phase 2, so most of
// this module has no in-crate caller yet outside its tests.
pub
pub use ;