mcpField
D
doca-gpunetio-ib-write-lat

doca-gpunetio-ib-write-lat

github.com/nvidia测试与质量3.8k123 次安装今天更新
代码仓库

关于 doca-gpunetio-ib-write-lat

doca-gpunetio-ib-write-lat 是面向性能工程师的 Agent 技能,用于测量通过 doca-gpunetio 从 CUDA 内核发起的 RDMA WRITE 延迟。它涵盖随附的客户端-服务器基准测试,以及中位数、p99 和抖动结果的解读。

主要功能

  1. 01测量 CUDA 发起的 RDMA WRITE 延迟
  2. 02构建客户端-服务器基准测试
  3. 03报告中位数、p99 和抖动
  4. 04解释延迟输出列
  5. 05指导 GPU-NIC 配对检查

适用场景

  1. 01评估 GPU 控制环路的尾延迟
  2. 02调优后验证性能变化
  3. 03记录可复现的 GPU-NIC 延迟基线

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia/skills --skill doca-gpunetio-ib-write-lat

安装后在 Claude Code 中输入/doca-gpunetio-ib-write-lat确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
CAPABILITIES.md
skill-card.md
skill.oms.sig
SKILLCARD.yaml
TASKS.md
evals/
evals.json

详细介绍

DOCA GPUNetIO ib_write_lat

示例

  • “GPUNetIO 能提供怎样的 GPU 发起 RDMA-WRITE 延迟?” — 这个问题属于此技能的范围。记录中位数和 p99;不要把 GPI 当作已发布的延迟二进制文件。
  • “GPUNetIO 与 GPI 相比,哪个延迟数值更值得信赖?” — 物理操作相同,运行时不同;有关 GPI 语义的问题 请转到 GPI 技能。

说明

按照下方的加载顺序操作。打开任务配套文件,了解配置 / 运行 / 调试。打开能力配套文件,了解配对和 可观测性。不要打开所有配套文件。

从这里开始: 这是一个 GPUNetIO 风格的 ib_write_lat 基准测试工具技能,随附于 doca/tools/gpunetio_ib_write_lat/(客户端与服务端组成的一对程序, 通过 meson 从源代码构建,并链接到已安装的 DOCA)。 它以乒乓节奏测量 RDMA WRITE 工作请求的延迟;该请求由 CUDA 内核通过 doca-gpunetio 设备端接口提交。 打开任务配套文件,从 GPU-NIC 配对 前置条件和构建模式的 ## configure 开始;跳转到 ## run 查看单次迭代的冒烟测试 流程。如果问题涉及此工具实际测量的内容、它与执行相同物理操作的 GPI 姊妹工具有何不同,或如何解读 half-iter / full-iter / CUDA 端 usec 输出,以及中位数 / p99 / 抖动 特征,请打开能力配套文件。如果尚未安装 DOCA,请先转到 doca-setup/SKILL.md;如果用户仍在考虑选择 GPUNetIO 还是 GPI 作为 编程接口,请先查看 doca-gpunetio/SKILL.md 和 doca-gpi/SKILL.md。

此技能擅长回答的示例问题

此技能旨在回答 doca-gpunetio-ib-write-lat 问题的类别,每类各有一个完整示例。类别是核心;完整示例只是其中一个实例。

  • “对于实时/控制环路工作负载,GPU 发起的 RDMA-WRITE 延迟/抖动能达到什么水平?” — 完整示例:“在两台主机之间测量每次迭代的 WRITE 延迟,两端各使用一块 H100 + ConnectX-7,分别关注中位数和 p99”。答案来自 capabilities 配套文档中的 GPU-NIC 配对前提
    • tasks 配套文档中的启动流程 + tasks 配套文档。
  • “这是 GPUNetIO 工具——它的延迟数值与 GPI 编程接口有何不同?” — 完整示例:“团队正在使用 GPI;我应该预期 GPUNetIO 比 GPI 更快/相当/更慢吗?”。答案来自 capabilities 配套文档中的 “相同的物理操作,不同的运行时框架” 规则
    • 指向 GPI 库技能 doca-gpi/SKILL.md 的交叉链接 (注意:doca/tools/ 未提供 GPI ib_write_lat 基准测试二进制文件——GPI 是编程接口,而非随附的基准测试工具)。
  • “中位数、p99 和抖动——对于实时控制环路,哪个才是实际答案?” — 完整示例:“我的控制环路有截止时间;中位数远低于预算,但 p99 会突增;我应该报告中位数还是 p99?”。答案来自 capabilities 配套文档中的中位数与 p99 及抖动规则
    • tasks 配套文档中的评估循环补充说明。
  • “GPU 发起的 RDMA 特有的延迟与批处理权衡是什么?” — 完整示例:“我的 CUDA 内核可以批处理多个 WR,以摊销 GPU 端开销;这对延迟有什么好处,又要付出什么代价?”。答案来自 capabilities 配套文档中的 延迟与批处理权衡。
  • “构建并运行此二进制文件需要什么版本的 DOCA + CUDA Toolkit?” — 完整示例:“我的安装中 DOCA 和 CUDA 的语义化版本号不同;ToT 随附的 gpunetio_ib_write_lat 能否成功链接?”。答案来自 capabilities 配套文档中的版本补充说明。
  • “如何解读 half-iter / full-iter / CUDA-side usec 列?” — 完整示例:“二进制文件输出了 half-iter、full-iter 和一个 CUDA 端数值——单向延迟、往返延迟和交叉核对分别应该引用哪一列?”。答案来自 capabilities 配套文档中的列语义规则。

受众

此技能面向外部开发者和性能工程师,他们需要在用户实际安装环境及 GPU-NIC 配对上,获得可复现的测量结果,以确定通过 doca-gpunetio 从 CUDA 内核提交 WR 时,RDMA WRITE WR 的延迟。具体包括:

  • 设计 GPU 常驻实时控制环路,并判断 GPUNetIO 路径的尾延迟是否满足截止时间的开发者。
  • 通过针对新状态重新运行此基准测试,验证调优更改(NUMA 绑定、GPU PCIe 位置、IB 设备选择、GID 索引、NIC 固件烧录)的平台运维人员。
  • 生成下游使用者可引用的结果的 SRE/性能工程师,例如*“当前此 GPU-NIC 配对上的 GPUNetIO 驱动 WRITE 延迟,包括中位数 + p99 + 抖动”*。
  • 如实回答*“doca-gpunetio 的延迟预算是否适用于此类实时工作负载”*的 AI Agent——提供实测数值、生成这些数值所用的构建方式和调用方式,以及限定这些数值适用范围的 GPU + NIC + DOCA 版本,而非凭空猜测。

此技能不适用于调试 doca-gpunetio 库本身的用户(请参阅 ../../libs/doca-gpunetio/SKILL.md (doca-gpunetio/SKILL.md)), 也不能替代上游 perftest 的 ib_write_lat(该工具测量的是 CPU 发起的 WRITE 延迟)。

语言范围

doca-gpunetio-ib-write-lat 工具以 C 加 CUDA .cu 翻译单元的形式提供,位于 doca/tools/gpunetio_ib_write_lat/ 下,分为 client/ 子目录、server/ 子目录,以及双方共享的 common/ 子目录(根据已验证的文件布局: client/{main.c,perftest.{c,h},meson.build}、 server/{main.c,perftest.{c,h},meson.build}、 common/{common.c,common.h,kernel.cu})。主机端使用 meson,并链接已安装的 DOCA pkg-config 模块(doca-gpunetio、doca-rdma、doca-common, 以及 CUDA Toolkit 依赖项);设备端使用 nvcc,并链接 DOCA GPU NetIO 设备端头文件集。它没有 Python / Rust / Go 绑定——该工具是一对 CLI 二进制文件。

何时加载此技能

当用户需要(或 Agent 需要)在安装了 DOCA 和与之匹配的 CUDA Toolkit 的真实主机上构建并运行 gpunetio_ib_write_lat 客户端 + 服务端,且每台主机的 PCIe 拓扑中都配有 GPU + IB 设备时,请加载此技能。具体包括:

  • 使用 GPUNetIO 接口测量两台主机(或一台主机与一台 BlueField DPU)之间由内核发起的 RDMA WRITE 延迟。
  • 评估实时 / 控制环工作负载类别的尾延迟(p99 / p99.9)和抖动。
  • 判断对于某类工作负载,应使用 GPUNetIO 运行时接口、GPI 编程接口(doca-gpi/SKILL.md 库——doca/tools/ 不提供 GPI 基准测试二进制文件),还是经典的 CPU 发起型 perftest 路径。
  • 记录有据可查的基线(构建 + 调用方式 + DOCA 版本 + GPU + NIC + 部署环境 + 数值),以便日后排查回归问题。
  • 诊断在此工具提供的脚手架中,GPUNetIO + RDMA 启动流程所暴露出的构建 / 链接 / 运行失败。

一般 DOCA 入门、库 API 开发或安装时,不要加载此技能。相关内容请使用 doca-public-knowledge-map/SKILL.md、 ../../libs/doca-gpunetio/SKILL.md(doca-gpunetio/SKILL.md) 或 doca-setup/SKILL.md。对于应用级实时截止时间分析,也不要加载此技能——此基准测试测量的是通过 GPUNetIO 的 WR 延迟,而不是用户的完整流水线。

此技能提供的内容

这是一个轻量加载器。实质性内容位于两个配套文件中:

  • 能力配套文件——说明此工具测量什么(由双方 CUDA 内核通过 doca-gpunetio 驱动的 ping-pong WRITE 延迟原语)、运行时接口选择规则(GPUNetIO、GPI 或 CPU 发起型)、GPU-NIC 配对前提、GPU 发起型 RDMA 固有的延迟与批处理权衡、中位数 / p99 / 抖动报告分类、版本叠加要求(DOCA .pc 加上 CUDA Toolkit)、分层错误分类、可观测性接口(包括标准输出报告,以及根据已验证的 common.h,gpunetio_rdma_write_lat_* 内核函数提供的超时调节项),以及安全性补充说明。
  • 任务配套文件——涵盖技能范围内任务动词的分步工作流:install、configure、build、modify、run(先进行冒烟测试再进行大批量测试;验证单次迭代;读取报告列)、test(评估循环——中位数 / p99 / 抖动 / 稳态)、debug(逐层排查错误分类)、use(如何将延迟结果用于实时工作负载类别决策),以及 Deferred task verbs 区块。

此技能假定主机已安装 DOCA,且已安装与之匹配的 CUDA Toolkit;操作人员还拥有公共安装配置要求的相应权限,用于绑定 doca_dev、doca_gpu 和带外 TCP 套接字。

此技能有意不包含的内容

此技能是Agent 指南,不是示例或 脚本合集。它有意不包含以下内容,也不应通过 拉取请求添加:

  • 具体的标志字符串或预期延迟数值, 除非工具随附的 --help 和 main.c ARGP 注册信息能够确认。标志范围很小 (设备名称、GPU PCIe 地址、GID 索引、客户端侧的 服务端 IP);Agent 会重新读取已安装版本二进制文件的 --help。
  • 预先编写的 DOCA GPUNetIO 或 CUDA 内核源 代码,以免与随附的工具目录树相冲突。 随附的 client/、server/ 和 common/ 子目录就是经过验证的可运行示例。
  • 任何语言编写的包装器、解析器或脚本,用于 处理工具的标准输出。输出格式简洁,且已在 能力配套文档中说明。
  • samples/、bindings/ 或 reference/ 子目录。 这是一个用于加载随附工具目录树的轻量模块。

加载顺序

  1. 首先阅读此技能,确认用户的问题在适用范围内(用户确实想要 通过 GPUNetIO 测量由内核发起的 WRITE 延迟, 而不是 GPI 变体、CPU 发起的变体,也不是库 API 相关问题)。
  2. 有关此工具的测量内容、与 GPI 同类工具及 CPU 发起的 perftest 之间的表面选择规则、延迟与批处理的权衡、 中位数 / p99 / 抖动报告分类、版本叠加说明、错误分类、 可观测性范围和安全叠加说明,请参阅 能力配套文档。
  3. 有关分步工作流——install、 configure、build、modify、run、test、 debug、use——请参阅任务配套文档。

相关技能

  • ../../libs/doca-gpunetio/SKILL.md(doca-gpunetio/SKILL.md)— 此工具所封装的库。每个 GPU 的 doca_gpu 上下文、GPU 可见的 RDMA 句柄、CUDA 侧持久化内核 模式、双重能力发现规则(DOCA cap-query 和 cudaGetDeviceProperties),以及环境前置条件(已加载 nvidia_peermem、已通过 DOCA 注册 CUDA 缓冲区) 均在此处说明。
  • ../../libs/doca-rdma/SKILL.md(doca-rdma/SKILL.md)— 底层 RDMA 库。此工具绑定的 RDMA 队列通过 doca-rdma 创建和连接;队列生命周期、传输类型(RC、UC 或 UD)、 权限矩阵和连接方法均由此处说明。
  • ../../libs/doca-verbs/SKILL.md(doca-verbs/SKILL.md)— doca-rdma / doca-gpunetio 下层的原始 verbs 备用方案。此工具仍使用 更高级别的接口。
  • ../doca-gpunetio-ib-write-bw/SKILL.md(doca-gpunetio-ib-write-bw/SKILL.md)— 此工具在同一运行时 框架下的带宽对应工具。物理操作相同,指标类别 不同(延迟与 BW)。两者结合起来,完整呈现 GPUNetIO 侧的延迟 / 吞吐量情况。
  • doca-gpi/SKILL.md — GPI 编程接口(由 CUDA 内核发起的 RDMA)。这是针对相同物理操作的 另一种运行时框架;doca/tools/ 未随附 GPI ib_write_lat 基准测试二进制文件,因此 GPI 对比针对的是 库接口,而非同类工具。能力配套文档中的 选择规则 可用作决策参考;Agent 的职责是说明何时 选择哪一种。
  • doca-version/SKILL.md — 规范的版本检测链和 四方匹配规则。此处的 ## Version compatibility 部分是 精简的叠加说明。
  • doca-setup/SKILL.md — 环境准备、安装验证、GPU 与 CUDA Toolkit 配套、加载 nvidia_peermem、大页、NUMA,以及 NGC DOCA 容器路径。
  • doca-public-knowledge-map/SKILL.md — 指向公共 DOCA 文档集和 CUDA Toolkit 参考资料的导航。
  • doca-debug/SKILL.md — 跨领域的调试流程。
  • doca-hardware-safety/SKILL.md — 适用于整个套件的硬件安全元政策。

评论

支持 Markdown