doca-gpi

Configure DOCA GPI channels so CUDA kernels drive RDMA directly from GPU memory.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers building GPU-resident DOCA applications need to wire a GPU-Packet-Initiator context so a CUDA kernel can post RDMA work directly from GPU memory without host CPU mediation, but the doca_gpi object model, lifecycle ordering, and GPU-side handle handoff are easy to get wrong.

Core Features & Use Cases

  • Surface Selection Guidance: Decide between the lower-level doca-gpi channel surface and the higher-level doca-gpunetio Send/Receive surface before writing code.
  • Lifecycle and Configuration Workflows: Step-by-step verbs (install, configure, build, modify, run, test, debug, use) covering doca_gpi_create, domain and channel attribute sizing, endpoint connection-info exchange, and teardown order.
  • Error Diagnosis: A GPI-specific overlay on the DOCA_ERROR_* taxonomy that maps failures like DOCA_ERROR_BAD_STATE or DOCA_ERROR_IN_USE to lifecycle ordering, sizing, or driver-layer causes.
  • Use Case: A developer with a BlueField-3 DPU and an NVIDIA GPU asks how to hand a doca_gpu_gpi_channel* handle to a CUDA kernel; the skill walks them through creating the GPI instance, sizing the domain and channel attributes, retrieving the GPU handle, and connecting endpoints to a remote peer.

Quick Start

Ask your agent to help you bring up a DOCA GPI channel and hand the GPU-side handle to your CUDA kernel so it can post RDMA work directly from GPU memory.

Frequently Asked Questions about doca-gpi

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

FAQPage Schema
How do I let a CUDA kernel post RDMA directly from GPU memory with DOCA?

Use the DOCA GPI library: create a doca_gpi instance on a doca_dev, configure it with doca_gpi_set_* attributes, start it, create a domain and channel, then call doca_gpi_gpu_channel_get to obtain the doca_gpu_gpi_channel* handle your CUDA kernel consumes.

What is the difference between doca-gpi and doca-gpunetio?

doca-gpi is the lower-level channel surface where a CUDA kernel drives RDMA work directly via a GPU-side channel handle. doca-gpunetio is the higher-level Send/Receive-shaped Ethernet I/O surface for CUDA kernels; pick GPI when you need direct control over per-channel work submission.

What are the requirements for using DOCA GPI?

You need DOCA SDK installed at /opt/mellanox/doca on Linux with a BlueField DPU or ConnectX NIC, an NVIDIA GPU with a compatible CUDA Toolkit, and pkg-config modules doca-gpi, doca-gpunetio, doca-dpa, and doca-verbs all reporting the same DOCA version.

Why does doca_gpi_gpu_channel_get return a DOCA_ERROR_*?

This usually means the channel was not yet created on a configured, started GPI instance. Verify that all doca_gpi_set_* calls ran before doca_gpi_start, and that doca_gpi_channel_create completed before requesting the GPU handle.

Is the DOCA GPI API stable for production use?

No. Every doca_gpi_* symbol is annotated DOCA_EXPERIMENTAL with no DOCA_STABLE subset, so any call may change between releases. Pin your DOCA version and re-test the full workflow after every DOCA or CUDA Toolkit upgrade.

When should I not use doca-gpi?

Avoid doca-gpi for the Send/Receive Ethernet-shaped GPU NetIO API (use doca-gpunetio), host-CPU-initiated RDMA queue lifecycles (use doca-rdma), DPA-side initiation (use doca-rdmi), or general CUDA programming questions covered by upstream CUDA documentation.