libfabric 2.0 (OpenFabrics Interfaces / OFI,2024-12 发布)不是"加几个 API"的小版本,而是把 OFI 从"HPC RDMA 抽象层"重新定位成 AI/HPC fabric 的统一北向接口,尤其给 Ultra Ethernet / UET 当软件底座。
一、为什么有 libfabric 2.0
- 1.x 里堆了很多历史 provider / 内存模型 / 进度模型,云厂和 NIC 厂商都不好优化
- UEC 要定义下一代以太网 RDMA 传输(UET),需要一个"现代、干净、可映射到 packet spraying / 乱序放置 / 选择性重传"的 API
- 结果:UET 软件 API = libfabric 2.0 + UEC 扩展
二、2.0 本身的 API/工程变化
- 删废弃特性:
FI_MR_BASIC、FI_MR_SCALABLE、FI_LOCAL_MR、异步 MR 注册、poll sets、FI_THREAD_FID/ENDPOINT等 fi_info必须由 libfabric 分配,不允许手搓结构体(方便 provider 藏私有字段)- 进度模型合并:
control_progress+data_progress→ 单个progress - 删老 provider:
sockets、usnic、gni、bgq、netdir、rstream;sockets可用tcp替代 - 线程模型收敛:标准 EP 倾向
FI_THREAD_DOMAIN,可扩展 EP 倾向FI_THREAD_COMPLETION - 目标:减少 provider 复杂度,让 NIC 做 lockless / zero-copy / offload 更顺
三、为 AI / UET 加的东西
- 标准化 tag format (
mem_tag_format→max_tag_bits思路),更适配集合通信 - 新 atomic 类型,面向 AI 张量/梯度类操作
- inter-provider 用法稳定化:同一应用可在 verbs / cxix / efa / 未来 UET provider 间切换
- UET 映射里引入:
FI_ADDR_UET- DGRAM/RDM endpoint 语义
- Rendezvous / Deferrable Send
- Tagged / Untagged / RMA / Atomic
- Traffic Class、Packet Delivery Context
- AI Base / AI Full / HPC 三档 profile
四、libfabric 2.0 在生态里的位置
MPI / OpenSHMEM / SHMEM / CCL / DAOS
↓
libfabric 2.0 (OFI API)
↓
provider: verbs | efa | cxix | opx | tcp | UET provider
↓
InfiniBand / RoCEv2 / EFA / UET(Ethernet)
- MPI:MPICH / Open MPI 走 OFI
- 存储:DAOS
- PGAS/SHMEM:GASNet、OpenSHMEM、UPC
- AI:CCL 库通过 libfabric 对接不同 fabric,不直接绑 Verbs
五、和 RDMA Verbs 的区别(很关键)
- Verbs:贴近 IB/RoCE QP/MR/CQ,硬件味重,AI 大模型要自己包一层
- libfabric:语义层更厚,message / tagged / RMA / atomic / collective 一体,适合跨 fabric
- UEC 不选 Verbs 而选 libfabric,是因为 Verbs 的"面向连接/有序/Go-Back-N"假设和 UET 的"无连接/多路径 spraying/乱序放置"不对齐
六、2025-2026 现状
- libfabric 已走到 2.1 / 2.2 / 2.3 / 2.4,2.0 是基线不是终点
- UEC 1.0(2025-06)明确以 libfabric 2.0 为软件契约
- 生产侧:
- IB/RoCE 集群:还是 verbs/NCCL 为主,libfabric 多在 MPI/DAOS
- UET 设备出来后:厂商会提供 libfabric UET provider ,对应用看起来还是
fi_send/fi_write/fi_atomic
- 采购别只问"支持 libfabric":要问支持哪些 provider、哪些 UET profile、atomic 集合、inject 大小、MR 模型、collective offload
七、一句话
libfabric 2.0 = 把"高性能网络通信"从 IB/RoCE 的 verbs 世界,升级成 AI 十万卡时代的 fabric 中间件标准;UET 负责重做传输层,libfabric 2.0 负责让 MPI/SHMEM/CCL 不用重写就能用上新网络。