第三部分 · 4 / 6
运行 examples
examples/ 下每个目录是一个独立的 main 包,一个功能一个目录,各自带 README。
它们用的是高层 rdmanet API,是最适合「照着抄」的起点。
全部能编译,跑需硬件
go build ./examples/... # 全部编译(任何平台)
没有 RDMA 硬件时,示例会打印 RDMA not supported on this platform 并干净退出(不 panic),
这正是 跨平台 stub 机制的效果。
默认设备 / GID
示例默认目标是第一块 GPU 网卡:-d mlx5_1 -x 3(RoCE v2)。
用 -d mlx5_0 切到 CPU 网络。命令约定:服务端用 -l ADDR,客户端用位置参数 HOST:PORT。
示例环境的两节点 IP
各 README 里用的两节点样例 IP(典型多网卡 RoCE 主机):
| 节点 | CPU 网(mlx5_0 / xgbe0) | GPU 网(mlx5_1 / xgbe1) |
|---|---|---|
| node1(服务端) | 10.214.180.34 | 33.0.226.25 |
| node2(客户端) | 10.214.180.35 | 33.0.226.27 |
同一个道理
默认
-d mlx5_1(GPU 网),所以客户端拨号填的是 node1 的 GPU 网卡 IP 33.0.226.25,
而不是它的管理口或 CPU 网 IP。换设备就要换成对应接口的 IP。
跑一个 echo-msg
# node1 服务端
go run ./examples/echo-msg -l 0.0.0.0:18515
# node2 客户端 —— 拨号 node1 的 GPU 网 IP(xgbe1)
go run ./examples/echo-msg 33.0.226.25:18515
改用 CPU 网卡(-d mlx5_0,拨 node1 的 xgbe0 IP):
go run ./examples/echo-msg -l 0.0.0.0:18515 -d mlx5_0
go run ./examples/echo-msg 10.214.180.34:18515 -d mlx5_0
纯 Go 的 registry,无需硬件
注意 registry / ud-broadcast 里的注册表服务是纯 Go(不碰 RDMA),
可以在任意机器上单独起,用来做 UD 地址发现:
# 注册表(纯 Go,无需 RDMA)
go run ./examples/registry --registry 0.0.0.0:9100
gordma 教程