DOCA DMA 编程助手
指导在 BlueField 或 ConnectX 上进行 DOCA DMA 内存拷贝开发。
文档明确限定 DOCA DMA、要求 mmap 权限、设备能力探测、跨 peer 导出,并在配置前要求确认源/目标/长度;同时声明不处理安装,且建议普通用户运行命令。扣分在于 DMA 直接触及设备内存,部分诊断命令使用 sudo,缺少统一的执行确认、数据流披露、权限最小化和可操作回滚方案;许可证与仓库元数据存在不一致。
SKILL.md、CAPABILITIES.md 和 TASKS.md 的生命周期、能力查询、权限矩阵、错误分类及失败反馈基本一致,且明确要求解释 DOCA_ERROR_* 原因。扣分在于静态审查无法复现关键路径,未提供可执行实现或覆盖关键路径的提交测试;内容还存在单缓冲区描述与 scatter-gather 说明之间的轻微边界不清。
受众、触发语句、正向场景和拒绝/转交范围写得清楚,并覆盖 C/C++ 与 FFI、Linux、BlueField/ConnectX 及 DOCA 已安装前提。扣分在于没有中文使用指导或本地化示例,且部分答案依赖 NVIDIA 在线文档;对中国大陆网络可达性没有说明,环境兼容性证据也有限。
采用 loader、能力说明和任务工作流分层,提供相关技能、命令附录、限制、版本处理和维护/问题入口。扣分在于版本、签名和签署信息仍为 TBD,BENCHMARK 中的路径与目标路径不一致,作者/维护责任主要通过外部材料间接表达;许可证声明不一致,缺少明确 changelog 和完整参数/FAQ。
对 DMA 配置、权限、能力查询和错误诊断提供了可直接采用的流程,且包含路径选择和跨 peer 规则。扣分在于技能明确不提供可运行代码,修改渲染器尚未完成,用户仍需依据本地样例逐行修改并回贴验证;没有静态可验证的代表性最终产物,仍需较多环境和人工核对。
文件包含符号、命令、路径、错误映射、评测报告和外部参考入口,具备一定审计线索。扣分在于评测数据集不可用,报告只提供汇总数字,未展示可独立复现的测试用例、CI 覆盖或第三方交叉验证;静态审查也无法确认 DOCA API 断言。
- 该技能会指导 BlueField/ConnectX DMA 内存访问;执行前应由用户确认设备、源/目标 mmap、权限、长度和跨 peer 数据流,并审查任何 sudo 命令。
- 不要把 BENCHMARK 或 SKILLCARD 中的 PASS、签名和版本字段视为已独立验证;报告数据集不可用,且部分元数据仍为 TBD。
- 许可证声明存在 Apache-2.0、Apache-2.0 AND CC-BY-4.0 与 NOASSERTION 的不一致,应在发布前澄清。
- 核心文档引用外部 NVIDIA 文档和本地 DOCA 安装,未证明中文支持或中国大陆网络可达性。
这个 Skill 能做什么,适合哪些场景?
该技能面向使用 DOCA DMA C 库的外部开发者,指导通过 BlueField DMA 引擎在两个 doca_mmap 区域之间拷贝数据。它覆盖上下文和 memcpy 任务配置、能力查询、内存权限、进度引擎提交与完成事件,以及 DOCA_ERROR_* 调试。技能要求 DOCA SDK 已安装在 Linux 主机上,并不负责安装 DOCA。它是 Apache-2.0 授权的代理指导,不包含可直接构建的应用源代码、绑定或独立构建清单。
读取本地 DOCA 安装,通过 pkg-config doca-dma 和 /opt/mellanox/doca/{lib,include,samples,applications} 检查环境;指导配置 doca_dma 上下文和 doca_dma_task_memcpy;使用 doca_dma_cap_task_memcpy_* 查询缓冲区大小、列表长度和任务支持情况;配置源和目标 doca_mmap 权限,必要时处理 doca_mmap_export_*;指导通过进度引擎提交任务、处理完成状态和诊断 DOCA_ERROR_*;将网络传输、进程间消息和 DOCA 安装问题转交给相关技能。
- 使用 C/C++ 在主机与 DPU 内存之间进行大块数据拷贝的开发者,需要配置 DMA 上下文和 memcpy 任务。
- 需要确认设备是否支持 `doca_dma_task_memcpy`,或在单个任务中能处理多大缓冲区的工程师。
- 首次提交返回 `DOCA_ERROR_NOT_PERMITTED`,需要排查源和目标 mmap 权限的开发者。
- 提交任务后没有完成事件,或收到 `DOCA_ERROR_AGAIN`,需要按生命周期、能力和进度引擎层次调试的开发者。
- 需要在 DOCA DMA、DOCA RDMA、DOCA Comch 和 CPU memcpy 之间选择实现路径的系统开发者。
这个 Skill 有哪些优点和局限?
- 覆盖 DMA 生命周期、能力发现、scatter-gather、mmap 权限、完成事件和错误分类。
- 明确区分 DMA 与 RDMA、Comch 及小型 CPU memcpy 的适用场景。
- 支持通过 FFI 使用 Rust、Go、Python 等语言,同时以 DOCA C ABI 为权威接口。
- README 说明仓库技能会持续同步和维护,并提供签名验证流程。
- 必须预先安装 DOCA SDK;技能不负责安装或配置 DOCA。
- 要求 Linux、BlueField DPU 或 ConnectX NIC,源材料未证明其他平台可用。
- 不提供预写 DMA 应用代码、samples、bindings 或独立构建清单。
- 源材料未提供该技能的测试套件、性能数据或具体设备兼容列表。
如何安装这个 Skill?
使用仓库 README 支持的命令安装指定技能:npx skills add nvidia/skills --skill doca-dma --yes。安装后,代理在遇到相关任务时加载该技能。源材料未说明单独的手工复制目录步骤。
如何使用这个 Skill?
先确保 Linux 上已安装 DOCA SDK,位置为 /opt/mellanox/doca,并连接 BlueField DPU 或 ConnectX NIC。可向代理提出“将主机缓冲区通过 DOCA DMA 拷贝到 BlueField,不使用 CPU”或“我的 doca_dma_task_memcpy 首次提交返回 DOCA_ERROR_NOT_PERMITTED”之类的问题;技能会根据问题引导读取 CAPABILITIES.md 或 TASKS.md。
这个 Skill 与同类方案有什么区别?
技能明确将 DOCA DMA 与 DOCA RDMA、DOCA Comch 和普通 CPU memcpy 作路径选择:需要跨网络传输时使用 RDMA;面向主机和 DPU 进程间的消息生产者/消费者流程时使用 Comch;极小的一次性拷贝可使用 CPU memcpy。