How ofiwg/libfabric works
libfabric is a high-performance networking framework for parallel and distributed applications. The principal workflow is: an application uses the OFI API to discover/configure a fabric, selects a provider, creates endpoints and memory registrations, transfers messages/RMA/atomics, then consumes completion or event notifications. Providers adapt those operations to hardware, verbs, sockets, or shared-memory transports. The tree shows many provider implementations and interfaces; central provider-dispatch wiring was not sampled, so alternative-provider edges are marked optional and unsampled subsystems are represented only by supported enclosing paths.
Components 19
Public API
- OFI API
include/rdma/fabric.h - Rust Bindings
bindings/rust/src/lib.rs
Core Runtime
- Provider Interface
include/rdma/providers/fi_prov.h - Common Runtime
src/common.c - Memory Registration
include/ofi_mr.h - Completion Events
Provider Implementations
- EFA Provider
prov/efa/src/efa_prov.c - OPX Provider
prov/opx/src/fi_opx_msg.c - PSM3 Provider
prov/psm3/psm3/psm.c - LPP Provider
prov/lpp/src/lpp_msg.c - CXI Provider
prov/cxi/src/cxip_msg.c
Transport Devices
- EFA Device
prov/efa/src/efa_device.c - HFI1 Device
prov/opx/src/fi_opx_service.c - NIC Discovery
prov/psm3/psm3/hal_verbs/verbs_service.c
Extensions
- Collective Operations
prov/coll/src/coll_coll.c - Hooks And Profiling
prov/hook/src/hook_xfer.c
Other components
- Application
- Network Fabric
- OS Device Services
Connections 27
- Application → OFI API: calls OFI
- Application → Rust Bindings: uses bindings
- Rust Bindings → OFI API: bridges calls
- OFI API → Provider Interface: dispatches operations
- OFI API → Common Runtime: uses utilities
- OFI API → Memory Registration: registers memory
- Provider Interface → EFA Provider: selects provider
- Provider Interface → OPX Provider: selects provider
- Provider Interface → PSM3 Provider: selects provider
- Provider Interface → LPP Provider: selects provider
- Provider Interface → CXI Provider: selects provider
- EFA Provider → EFA Device: uses device
- OPX Provider → HFI1 Device: uses device
- PSM3 Provider → NIC Discovery: discovers NICs
- EFA Device → Network Fabric: transfers data
- HFI1 Device → Network Fabric: transfers data
- PSM3 Provider → Network Fabric: transfers data
- LPP Provider → OS Device Services: uses kernel path
- CXI Provider → Network Fabric: transfers data
- EFA Provider → Completion Events: reports completions
- OPX Provider → Completion Events: reports completions
- PSM3 Provider → Completion Events: reports completions
- Collective Operations → Provider Interface: uses provider API
- Hooks And Profiling → Provider Interface: wraps operations
- Completion Events → Application: returns events
- OPX Provider → OS Device Services: reads device state
- NIC Discovery → OS Device Services: reads sysfs