Quick Start#
Build the current source on Linux with Rust 1.85 or later. The default CPU/TCP
path needs no CUDA toolkit, RNIC or native provider library. The published
orbit-te alpha is the original package reservation; use this checkout for
the examples below.
Get the source#
git clone https://github.com/OrbitInfra/OrbitTE.git
cd OrbitTE
cargo run --locked --example tcp_roundtrip
The example starts two engines, exports a source allocation, discovers its descriptor using the source owner’s epoch, and reads its bytes over loopback.
18 bytes: hello from OrbitTE
Register, discover and transfer#
The complete program is tcp_roundtrip.rs. The central transfer uses registered allocation addresses:
let request = TransferRequest {
transport: orbit_te::Transport::Tcp,
local_address: destination.base_address(),
remote_address: remote.base_address(),
length: exported.len(),
};
let report = requester.submit_and_wait(
TransferOp::Read,
&peer,
&[request],
Duration::from_secs(1),
)?;
register_memory gives the engine ownership of host bytes. open_segment
requires the authoritative source epoch; a peer at the same address cannot
replace that authority after restart. Requests resolve registered ranges and
keep their actual backing alive through completion.
Check report.failure as well as the completed request and byte counts. A
timeout is not proof that native DMA stopped. See the
Rust API guide and completion contract.
Try the other CPU examples#
cargo run --locked --example external_host
cargo run --locked --example notifications
cargo run --locked --example async_batch
Example |
What it demonstrates |
|---|---|
|
Register ranges of an existing allocation while retaining its owner |
|
Transfer data and consume the attached completion notification |
|
Submit and seal an owned asynchronous batch, then wait for its result |
The async guide covers cancellation, detached handles and
resource retention. CPU/TCP can cross machines after selecting a routable
EngineConfig::bind_addr; the default binds loopback only.
Enable RDMA or NVIDIA support#
Use the build guide for prerequisites and feature flags. Host RDMA uses libibverbs and the installed RNIC provider. NVIDIA allocations currently use synchronized host staging for network transfer; direct GPU RDMA remains under development. The capability matrix separates these paths.