doca-urom

Guides host-side DOCA UROM library workflows for offloading remote memory operations to BlueField DPUs.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers building HPC, UCX, or MPI applications often struggle to offload remote memory operations (puts, gets, atomics, collectives) from the host CPU to a BlueField DPU using the DOCA UROM library, facing confusing errors like DOCA_ERROR_NOT_PERMITTED when the DPU-side UROM Service is missing or version-mismatched.

Core Features & Use Cases

  • Paired-contract guidance: Teaches the host-library-plus-DPU-service model, including Service context (doca_urom_service_) and Worker context (doca_urom_worker_) lifecycle management.
  • Plugin-based capability discovery: Uses doca_urom_service_get_plugins_list on a started Service as the authoritative capability surface instead of guessing supported operation families.
  • Error taxonomy and debug ladder: Maps DOCA_ERROR_* codes to root causes across the UROM layer, RDMA substrate, version skew, and DPU-side service state.
  • Use Case: Your MPI all-reduce is consuming host CPU cycles; use this Skill to configure a UROM Service and Worker, verify plugin support, enqueue collective operations to the BlueField DPU, and debug the first failing enqueue.

Quick Start

Ask your agent to help you offload MPI remote memory operations to the BlueField DPU using the doca-urom library, starting with verifying the DPU-side UROM Service is running.

Frequently Asked Questions about doca-urom

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

FAQPage Schema
How do I offload MPI remote memory operations to a BlueField DPU with DOCA UROM?

Create a doca_urom_service context bound to the BlueField's doca_dev, start it, discover plugins with doca_urom_service_get_plugins_list, then create Worker contexts and enqueue Command tasks. The DPU-side UROM Service must be deployed and running before the first enqueue.

When should I use doca-urom instead of doca-rdma?

Use doca-urom when host CPU communication overhead is the bottleneck, such as HPC collectives or dense MPI patterns. For simple point-to-point RDMA where the host CPU is not loaded, doca-rdma directly is the right tool and UROM's service contract adds unnecessary overhead.

Why does my first doca_urom call return DOCA_ERROR_NOT_PERMITTED?

This error means either the process cannot open the target doca_dev, or the DPU-side UROM Service is not deployed, running, or at a compatible version. The API error alone cannot distinguish these causes, so verify device access and service state separately.

How do I check which UROM operations my BlueField supports?

Call doca_urom_service_get_plugins_list on a started Service; UROM has no doca_urom_cap_* capability family, so the discovered plugin list is the authoritative capability surface. Exact operation symbols must be read from installed headers and shipped samples, not assumed.

Does DOCA UROM replace the RDMA transport layer?

No, UROM rides on top of the RDMA substrate and only offloads the posting of RDMA work to the DPU. A failing RDMA fabric surfaces as DOCA_ERROR_IO_FAILED at the UROM API, so substrate health must be verified first.

What are the limitations of the doca-urom skill?

It covers only host-side library usage and excludes DPU-side UROM Service deployment, MPI/UCX collective algorithm design, RDMA substrate bring-up, and DOCA installation. It ships no sample code, routing users to the verified samples under /opt/mellanox/doca/samples/doca_urom/ instead.