DOCA GPUNetIO 开发技能
指导开发者将 NVIDIA GPU 上的 CUDA 内核连接到 DOCA 网络队列,实现 GPU 侧收发包与调试。
文档明确说明权限、CUDA/DOCA版本、nvidia_peermem、缓冲区注册、生命周期和回滚风险,也避免凭证处理;但建议使用 sudo modprobe、访问硬件和驱动状态,未始终要求用户确认,且数据流、最小权限和恢复验证仍不完整,因此扣7分。
SKILL.md、CAPABILITIES.md和TASKS.md提供了较一致的配置、构建、运行、测试、调试和失败分类流程;但依赖本地DOCA安装、硬件和多个未随技能提供的相邻技能,未有静态可验证的关键路径测试,异常处理仍含较多未证实断言,因此按静态上限扣分。
受众、触发短语、输入前提、排除范围和路由规则较清楚,且支持C/CUDA及部分主机侧非C语言;但仅适用于特定Linux、NVIDIA GPU、DOCA、NIC/DPU环境,中文支持未说明,部分核心参考资料依赖海外文档,故扣5分。
信息架构、渐进加载、相关技能、依赖说明、任务动词和限制披露较完整;但作者、正式版本、变更历史和维护责任不完整,SKILL.md声明Apache-2.0而SKILLCARD声明Apache-2.0 AND CC-BY-4.0,且签名字段仍为TBD,故扣6分。
文档覆盖配置、构建、修改、运行、测试和调试,并提供具体命令、API符号和退出/回滚思路,核心任务理论上可完成;但技能不含可直接构建的示例或测试程序,且静态审查无法验证结果正确性,因此不得超过7分并再扣1分。
存在提交的评估报告、评测配置、CI回归契约和引用的本地/上游材料,但评测数据集不可用,报告主要是自述结果,且未提供覆盖关键路径的可复现实验细节;静态证据有限,因此扣1分并受5分上限约束。
- 不要将BENCHMARK.md中的PASS或SKILLCARD中的质量字段视为独立验证;评测数据集未提供,签名和版本字段仍为TBD。
- 执行sudo modprobe、驱动检查、持久化内核和网络队列操作前,应明确用户确认、目标设备、停止信号和可恢复的回滚路径。
- 许可证元数据存在Apache-2.0与Apache-2.0 AND CC-BY-4.0不一致,应在发布前统一。
- GPUNetIO依赖特定硬件、匹配的CUDA/DOCA版本和本地安装;中国网络环境下访问海外DOCA文档可能受限。
这个 Skill 能做什么,适合哪些场景?
这是一个面向外部开发者的 DOCA GPUNetIO 编程指导技能,适用于用主机端 C/C++ 和设备端 CUDA C++ 构建 GPU 发起的网络应用。它覆盖 doca_gpu 上下文、GPU 可见 RX/TX 队列、持久化 CUDA 内核、能力检查、CUDA 缓冲区注册以及错误诊断。技能假设 DOCA、匹配版本的 CUDA、底层 DOCA Ethernet 队列和必要的硬件环境已经准备好。它提供路由和工作流指导,不提供可直接编译的应用源码、CUDA 内核或独立构建文件。
读取本地 DOCA 安装信息(包括 pkg-config 的 doca-gpunetio 模块),指导用户查看 CAPABILITIES.md 和 TASKS.md;规划 configure、build、modify、run、test、debug 及 rollback 工作流;指导创建 doca_gpu 上下文和 doca_gpu_eth_rxq/doca_gpu_eth_txq 句柄;检查 DOCA 能力查询结果与 cudaGetDeviceProperties;指导使用 cudaMalloc 分配缓冲区并通过 doca_buf_arr_create_* 注册;分析 DOCA_ERROR_*、CUDA 版本偏差、nvidia_peermem 缺失和持久化内核问题,并在超出范围时路由到相关技能。
- 正在使用 BlueField DPU 或 ConnectX NIC 的开发者,想让 CUDA 持久化内核直接轮询 GPU 可见的 RX 队列。
- 拥有多张 NVIDIA GPU 的开发者,需要判断某个 CUDA 设备序号是否支持 GPU 发起网络。
- 已完成 DOCA Ethernet 队列配置,但 GPUNetIO 返回 DOCA_ERROR_NOT_SUPPORTED,需要排查能力、驱动或 nvidia_peermem。
- 希望把 cudaMalloc 缓冲区注册到 DOCA,并在启动上下文前完成 GPU 缓冲区准备的 C/CUDA 开发者。
- 需要确认当前 DOCA 与 CUDA 组合是否支持某项 GPUNetIO API 或持久化内核辅助功能的开发者。
这个 Skill 有哪些优点和局限?
- 覆盖从 GPU 设备能力检查到队列连接、缓冲区注册和错误分层诊断的完整指导范围。
- 明确区分 GPUNetIO、DOCA Ethernet、DOCA 安装和通用 CUDA 问题的边界。
- 提供 configure、build、modify、run、test、debug 和 rollback 工作流。
- 与 NVIDIA skills 集合的签名、评估和每日同步机制配套。
- 不是示例代码或模板包,不包含可直接编译的 GPUNetIO 应用和 CUDA 内核。
- 要求已有 DOCA 和 CUDA 环境,且 DOCA 与 CUDA 版本必须匹配。
- 依赖 NVIDIA GPU、BlueField DPU 或 ConnectX NIC,以及 nvidia_peermem;部分样例还需要支持 InfiniBand 的 RNIC。
- 不覆盖 DOCA 安装、底层 Ethernet 队列配置、DPA 或通用 CUDA 编程。
- 提供的源材料没有展示具体自动化测试命令、平台测试结果或性能基准。
如何安装这个 Skill?
使用 NVIDIA/skills 集合中的 skills CLI 安装:
npx skills add nvidia/skills --skill doca-gpunetio --yes
README 未提供仅复制 skills/doca-gpunetio 文件夹的安装命令;安装后,技能会在代理加载相关任务时可用。
如何使用这个 Skill?
先确保 DOCA 已安装在 /opt/mellanox/doca,CUDA 版本与 DOCA 匹配,nvidia_peermem 已加载,且底层 DOCA Ethernet RX/TX 队列已配置。然后向代理提出具体的 GPUNetIO 编程请求,例如:“如何让 CUDA 持久化内核直接从 NIC 接收数据包?”需要执行 configure、build、modify、run、test 或 debug 时,技能会使用 TASKS.md;询问功能范围或能力矩阵时使用 CAPABILITIES.md。
这个 Skill 与同类方案有什么区别?
与 doca-eth 相比,本技能处理的是在已有 DOCA Ethernet RX/TX 队列之上创建 GPU 可见队列并由 CUDA 内核使用;底层 Ethernet 队列配置应交给 doca-eth。与 doca-setup 相比,本技能不负责安装或准备 DOCA/CUDA 环境。与 doca-debug 相比,本技能专注于 GPUNetIO 特有的 CUDA、GPUDirect RDMA、版本匹配和持久化内核问题。