doca-rdmi

Guides DOCA RDMI programming for accelerator-initiated one-sided RDMA on BlueField DPA datapaths.

3.2k|370|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/NVIDIA/skills --skill doca-rdmi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: doca-rdmi
Source: https://github.com/NVIDIA/skills/tree/main/skills/doca-rdmi
Command: npx skills add https://github.com/NVIDIA/skills --skill doca-rdmi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers building DPA-resident DOCA applications struggle to correctly use the DOCA RDMI (RDMA Initiator) library: choosing between doca-rdmi and doca-rdma, ordering connection/poster lifecycle calls around doca_ctx_start(), attaching the right completion source, and interpreting EXPERIMENTAL symbols and DOCA_ERROR_* returns. This Skill provides verified, version-aware guidance for those workflows.

Core Features & Use Cases

  • Surface selection and object lifecycle: Decide doca-rdmi vs doca-rdma vs doca-verbs, then stand up doca_rdmi_connection and doca_rdmi_poster objects with correct configure-start-use-stop-destroy ordering.
  • DPA datapath handoff and completions: Attach a doca_dpa_completion or doca_verbs_cq before start, retrieve DPA-side handles, and wire the host-side recv_ack loop.
  • Version auditing and debugging: Confirm EXPERIMENTAL doca_rdmi_* symbols against installed headers via pkg-config, and diagnose DOCA_ERROR_* returns with a layered debug ladder and rollback procedure.
  • Use Case: A developer whose DPA kernel must post RDMA writes to a remote responder gets a step-by-step walkthrough from install verification through build, run, test, and debug, grounded in the installed DOCA package.

Quick Start

Ask your agent to walk you through setting up a doca_rdmi_connection with a DPA completion so your DPA kernel can post RDMA writes to a remote responder.

Frequently Asked Questions about doca-rdmi

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I choose between doca-rdmi and doca-rdma for RDMA?

Choose doca-rdmi when an accelerator datapath (DPA kernel, or GPU via doca-gpi) initiates one-sided RDMA without host CPU involvement. Choose doca-rdma for two-sided flows or host-CPU-initiated RDMA, which covers the majority of RDMA use cases.

How do I set up a doca_rdmi_connection on the DPA datapath?

Create the connection on a doca_verbs_context, call doca_ctx_set_datapath_on_dpa(), attach exactly one completion source (doca_dpa_completion or doca_verbs_cq), initialize the receive buffer, then call doca_ctx_start(). Retrieve the DPA handle only after start via doca_rdmi_connection_get_dpa_handle.

Why does doca_rdmi return DOCA_ERROR_BAD_STATE?

DOCA_ERROR_BAD_STATE almost always means a configure or attach call ran after doca_ctx_start(), or a DPA-handle call ran before start or without doca_ctx_set_datapath_on_dpa(). Re-walk the lifecycle order: configure, start, use, stop, destroy.

Are doca_rdmi symbols stable across DOCA versions?

No. Every public doca_rdmi_* symbol is currently tagged EXPERIMENTAL in the library's version map, meaning the API can change between DOCA releases. Confirm symbol presence against the installed headers and re-test after every DOCA upgrade.

Why does my DPA kernel see no completions from RDMI?

The completion source determines which side observes completions: a doca_verbs_cq attach is host-side only, while a doca_dpa_completion is polled by the DPA kernel. Also confirm the DPA kernel was actually launched and the host ack loop is releasing receive slots.

When should I not use doca-rdmi?

Do not use doca-rdmi for two-sided or host-CPU-initiated RDMA (use doca-rdma), for the DPA programming model itself (use doca-dpa), for GPU-side RDMA initiation (use doca-gpi or doca-gpunetio), or for general RDMA/IB/RoCE concepts.