学习: libfabric 2.0

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 不用重写就能用上新网络。

相关推荐
xiaoye-duck2 小时前
《Linux 网络编程》深入理解 epoll(下):epoll 实战开发与 LT/ET 触发模式深度剖析
linux·网络
小鹿的周先生3 小时前
第18章-MCP
服务器·网络·人工智能
Da Da 泓3 小时前
谈谈HTTP
网络·网络协议·http
要吃这碗饭3 小时前
YouTube 数据抓取出现 429/403 错误?2026 反爬机制拆解与爬虫选型指南
网络·爬虫·网络协议
YumiProxy3 小时前
代理IP自动切换实战:会话保持与请求头配置避坑指南
服务器·网络·网络协议·tcp/ip·ip
honsor3 小时前
以太网温湿度传感器:RJ45直连机房的环境监控新方案
运维·网络·数据库·物联网·安全·云计算·github
花间相见4 小时前
【计算基础|网络02】HTTP 原理:报文结构、方法语义与状态码
网络·网络协议·http
搁浅小泽4 小时前
新能源汽车多合一压缩机控制器LIN网络测试规范
网络·汽车
可乐鸡翅yeah_4 小时前
HLS 业务 Referer‑Policy 网页元标签引发播放异常排错
前端·javascript·网络·ffmpeg·php·音视频