doca-gpunetio

Guides wiring CUDA kernels to DOCA Ethernet queues via the GPUNetIO API.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers building GPU-initiated networking applications with NVIDIA DOCA GPUNetIO face confusing version mismatches, missing GPUDirect RDMA preconditions, and cryptic DOCA_ERROR_* returns. This Skill gives an AI agent the exact workflows to configure, build, run, test, and debug GPUNetIO programs correctly.

Core Features & Use Cases

  • GPUNetIO configuration workflows: Step-by-step guidance for creating the per-GPU doca_gpu context, layering doca_gpu_eth_rxq / doca_gpu_eth_txq handles on doca-eth queues, and registering cudaMalloc buffer pools via doca_buf_arr_create_*.
  • Dual capability discovery: Enforces checking both the DOCA cap-query (doca_eth_rxq_cap_is_type_supported) and the CUDA side (cudaGetDeviceProperties) before assuming a GPU supports GPUNetIO.
  • Persistent-kernel pattern and error taxonomy: Prescribes the long-running CUDA kernel design over kernel-per-packet, and maps DOCA_ERROR_NOT_SUPPORTED, _DRIVER, _AGAIN, _BAD_STATE, and _INVALID_VALUE to root causes.
  • Use Case: A developer sees DOCA_ERROR_DRIVER on doca_gpu_create; the agent walks the CUDA/DOCA version-match check, verifies nvidia_peermem is loaded, and isolates the failing layer.

Quick Start

Ask your agent: "Help me write a persistent CUDA kernel that receives packets directly from a DOCA Ethernet queue using GPUNetIO."

Frequently Asked Questions about doca-gpunetio

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

FAQPage Schema
How do I receive packets directly in a CUDA kernel with DOCA GPUNetIO?

Configure a doca_eth_rxq first, create a per-GPU doca_gpu context from the GPU's PCIe bus-id string, then build a doca_gpu_eth_rxq handle and pass it into one long-running persistent CUDA kernel that polls the queue. Launching a kernel per packet is an anti-pattern.

How do I check if my GPU supports GPUNetIO?

Run both sides of the capability check: doca_eth_rxq_cap_is_type_supported against the active doca_devinfo on the DOCA side, and cudaGetDeviceProperties against the CUDA device ordinal. Either axis failing means the feature is unsupported; older pre-Ampere GPUs typically fail the CUDA side.

Why does doca_gpu_create return DOCA_ERROR_DRIVER?

DOCA_ERROR_DRIVER from doca_gpu_create most often means the CUDA toolkit and DOCA versions are mismatched per the DOCA Compatibility Policy. Compare pkg-config --modversion doca-gpunetio with doca-common, check nvcc --version, and confirm nvidia_peermem is loaded.

Does GPUNetIO work without nvidia_peermem loaded?

No. The nvidia_peermem kernel module is required for GPUDirect RDMA between the NIC and GPU; without it, GPUNetIO fails with DOCA_ERROR_NOT_SUPPORTED at create time. Load it with sudo modprobe nvidia_peermem before any doca_gpu_* call.

When should I not use the doca-gpunetio skill?

Do not use it for general CUDA programming, DOCA installation, DOCA Ethernet queue bring-up, or DOCA DPA questions. Those route to the CUDA toolkit documentation, doca-setup, doca-eth, or the public DOCA DPA guide respectively.