03 · RDMA 与 GPUDirect:显存到对端显存的三条路
结论:TCP 每端 2 次拷贝、跑不满 400 Gb/s;RDMA 无 GDR 1 次拷贝;RDMA + GDR 0 次拷贝、PCIe switch 内一跳,上限 min(NIC, PCIe)。
%%{init: {"flowchart": {"wrappingWidth": 260}}}%%
flowchart TB
subgraph host["主机侧"]
CPU["CPU:协议栈 + memcpy(仅路径 A)"] <--> MEM["主机内存:staging / socket buffer"]
end
RC["PCIe root complex"]
subgraph sw["PCIe switch(GPU 与 NIC 同挂其下)"]
GPU["GPU HBM(BAR1 映射)"]
NIC["NIC DMA 引擎"]
end
MEM <--> RC
GPU -- "A / B:D2H 上行到主机内存" --> RC -- "NIC 从主机内存读走" --> NIC
GPU -- "C(GDR):NIC 直接 DMA 显存,switch 内折返" --> NIC
NIC --> NET["InfiniBand / RoCE"]
classDef hostc fill:#fde8e8,stroke:#b94a48
classDef swc fill:#e8f4fd,stroke:#3a7bd5
class CPU,MEM,RC hostc
class GPU,NIC swc
COMMENTS
评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。