mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #4412] [RFC]: libfabric (EFA / CXI) transport for TENT #1113
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#1113
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @whn09 on GitHub (Sep 30, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/4412
Changes proposed
Motivation
rdmabackend uses RC QPs (tent/src/transport/rdma/endpoint.cpp:136). EFA has no RC and is only usable through libfabricFI_EP_RDM(SRD).MC_USE_TENT=1on an EFA build fails atinitialize()(#3995 P0-efa-ascend / P1-install-transport).rdmap*) show up asNIC_RDMAand the rdma backend tries to install on them. CXI has no verbs device, so it isn't discovered at all.cxi_transportwas forked from the #1944-eraefa_transport(#2535). After renaming, about 80–90% of it is identical to EFA.Proposal
Add one TENT transport,
FABRIC, built on libfabric. Provider differences go into a small per-provider profile. The classic EFA transport as it is today is the baseline.Provider profile
fi_getinfoversionFI_VERSION(1,18)(#2041)fi_version()fi_version()<dev>-rdm<dev>mr_modehintsmr_modemr_modemax_mr_size, PTE budget), as in #1912max_mr_sizemax_mr_sizeFI_HMEM=systemin non-GPU builds; nofi_av_removeafter EP closeWherever possible, "bind to EP" and "VA vs offset" are derived from the
mr_modethatfi_getinfoactually returns, not from the provider name.Discovery
fi_getinfoand take PCI/NUMA fromfi_info->nic->bus_attr. This works the same for EFA and CXI.NIC_FABRICto the TENT topology.rdmabackend skips EFA devices, the same as #4355 does for classic TE.Metadata (no bootstrap RPC)
fi_getnameblob is stored inDeviceDesc.transport_attrs[FABRIC]. Peers callfi_av_insertlazily on first use.uint32_t rkeyvector. They are stored inBufferDesc.transport_attrs[FABRIC]as{base, chunks: [{off, len, keys[nic]}]}, which also carries the chunk layout of large registrations.NeedsRefreshCache.Data path
tx_attr->size.-FI_EAGAINhands the unposted tail back. The credit wait is bounded by wall-clock time.fi_cq_readerrfeeds slice retry. Aftermax_retry_count, the slice is marked FAILED and the engine's failover takes over. The RailMonitor getsmarkFailed/markRecovered.Memory
runBoundedRegMrBatch), and a per-profile NIC assignment policy.fi_mr_regattr(CUDA/ROCR iface) underScopedCudaContext(#3177).Loading and build
dlopen, using the loader from #4354, so non-fabric processes don't depend on it.tent_xport_fabrictarget behindUSE_FABRIC(requiresUSE_TENT). It always compiles, the way MPCOMM does.Classic → TENT shim
init(..., protocol="efa"|"cxi")pins thefabricbackend with that provider and disables rdma.initialize()no longer relies oninstallTransport()returning non-null.Testing
tcp;ofi_rxmprovider. Covers install, loopback, write/read, chunk-straddling transfers, large chunked buffers, peer loss reported as FAILED, and metadata refresh.MC_USE_TENT=1.PR plan
protocol=efa/cxipinning (#3995).Migrating classic
efa_transport/cxi_transportonto the shared core is out of scope for now. It can follow once the TENT backend is stable (#2657).Questions for TENT owners (@alogfans @staryxchen)
FABRICtransport type with providers selected by config (transports/fabric/provider = auto|efa|cxi), or separateEFA/CXItransport types sharing an implementation?transport/rdmainto a shared location?Related: #2657, #3995, #3500, #4354, #4355.
Before submitting a new issue...
Drafted with the help of Claude Code; design and code reviewed by me.
@github-actions[bot] commented on GitHub (Sep 30, 2026):
Thanks for opening this issue, @whn09!
964527A maintainer will triage this when possible. To help us respond faster, please include:
Useful links: Documentation · Contributing guide