第三部分 · 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.3433.0.226.25
node2(客户端)10.214.180.3533.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
下一步 17 个示例分两组。下一节是 核心功能示例(一个 API 一个示例), 再下一节是场景示例(组合成真实用法)。
gordma 教程