消息传输核心机制
队列对 · 传输操作 · 服务类型 · Verbs API
队列对 (Queue Pair, QP)
QP 是 InfiniBand 的消息传输引擎,软件通过调用"动词 (Verbs)" API 将工作请求提交到 QP,实现高效的内核旁路操作
发送队列 (SQ)
Send Queue
发送工作请求
接收队列 (RQ)
Receive Queue
接收工作请求
门铃机制
Doorbell
通知硬件处理
📤
发送 (Send)
Basic Data Transfer
基本的数据传输操作。发送方将数据推送到接收方的接收缓冲区中。需要接收方预先发布接收请求(WQE)。
✍️
RDMA 写入
RDMA Write
将本地数据直接写入远程指定内存地址。无需接收方参与,实现真正的单边操作
📖
RDMA 读取
RDMA Read
从远程指定内存地址读取数据到本地。同样是单边操作,远程节点无需感知此操作。
⚛️
原子操作
Atomic Operations
在远程内存上执行"读-修改-写"操作。保证操作的原子性,支持比较交换、加法等操作。
🔄
传输服务类型 (Service Types)
服务类型 连接性 可靠性 支持操作 关键用途
可靠连接 (RC) 需要建立连接,点对点 可靠 (Ack/Nak 确认) Send, RDMA Read/Write, Atomic 主要的数据传输、MPI 通信
不可靠数据报 (UD) 无连接 不可靠 (无确认) 仅 Send (单包消息) 管理消息 (SMP/GMP)、多播
(UC 和 RD 为 RC 和 UD 的变种,较少使用)