Doca Urom
NVIDIAOfficialCreated by NVIDIA
- Skill
- Tool integration
- Software development
- Apache-2.0
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The doca-urom skill provides guidance for developers using the host-side DOCA UROM library to offload remote memory operations, such as puts, gets, atomics, and collectives, from the host CPU to a BlueField DPU. It focuses on the host-side implementation, including creating UROM Service and Worker contexts, discovering plugins, and managing the lifecycle of offloaded tasks. This skill assumes the user has a functional DOCA installation and a running UROM Service on the DPU, acting as a paired contract between the host library and the DPU-side executor.
What it does
- Initializes UROM Service and Worker contexts on the host.
- Enqueues remote memory operations like puts, gets, and atomics for DPU execution.
- Discovers supported operation types via plugin listing.
- Manages the DOCA progress engine for operation completions.
- Provides error taxonomy and debugging guidance for host-side UROM calls.
- Integrates with UCX-based HPC stacks to offload transport operations.
When to use it
- When offloading MPI or UCX remote memory operations to reduce host CPU load.
- When developing host-side applications that interact with the DOCA UROM library.
- When debugging connectivity or version alignment between the host library and DPU service.
- When verifying if specific atomic or collective operations are supported on the current device.
Advantages
- Reduces host CPU overhead by offloading memory operations to the DPU.
- Provides a structured approach to managing the host-DPU paired contract.
- Enables discovery of device-specific capabilities through plugin enumeration.
- Standardizes error handling and lifecycle management for UROM-based applications.
Usage examples
- “How do I offload my MPI all-reduce operation to the BlueField DPU?”
- The agent will guide you through initializing the UROM Service and Worker contexts, and using the host-side API to enqueue the collective operation for DPU execution.
- “My first doca_urom call returns DOCA_ERROR_NOT_PERMITTED. What should I check?”
- The agent will help you verify the version alignment between the host library and the DPU-side UROM service, and check the health of the underlying RDMA substrate.
- “How do I check which atomic operations are supported on my device?”
- The agent will instruct you to use doca_urom_service_get_plugins_list on a started service to discover the available plugin-defined operations.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/nvidia/doca-urom/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip doca-urom.zip -d .agents/skills
Documentation by NVIDIA
DOCA UROM
Examples
"Push UCX traffic onto the BlueField." — this is in scope. Stay on host-side
doca-urom; do not deploy the DPU-side UROM Service here."First doca_urom call returns NOT_PERMITTED." — check host/service version alignment and the RDMA substrate first.
Instructions
Follow Loading order below. Open the tasks companion for configure / offload / debug. Open the capabilities companion for service vs worker contexts. Do not open every companion file.
Where to start: This skill assumes DOCA is installed on both
host and BlueField, the DOCA UROM Service is deployed and running
on the BlueField, and the user is doing hands-on UROM work from
the host side — using doca-urom from an HPC / UCX / MPI stack
to enqueue remote memory operations (puts, gets, atomics, active
messages, collectives) the DPU executes on the host's behalf. Open
the tasks companion to do something (configure / build / modify /
run / test / debug); open the capabilities companion for what the
host-side UROM API expresses on this version + BlueField + UROM
Service version. If DOCA is not installed, route to
doca-setup/SKILL.md first; for the DPU-side
UROM Service itself (deployment, container, lifecycle), that is a
DIFFERENT artifact — route via
doca-public-knowledge-map ## DOCA services (doca-public-knowledge-map/SKILL.md#doca-services)
to the public DOCA UROM Service guide. This skill is the
host-side library; the UROM Service is the DPU-side
executor; they are a paired contract.
How to use this skill. Read this file, then search the companion file
for the ## <name> heading the question needs and read that whole section.
Answer completely from it, quoting only its symbols and commands. Do not
browse docs; use the entry points in doca-public-knowledge-map. For
out-of-scope requests, name the skill that owns them and stop.
Example questions this skill answers well
The CLASSES of UROM questions this skill answers, each with one worked example. The class is the load-bearing piece; the worked example is one instance.
"How do I offload my MPI / UCX remote memory operations from the host CPU to the BlueField?" — worked example: "my MPI all-reduce burns host CPU cycles I'd rather use for compute — how do I push that onto the BlueField via UROM?". Answered by the paired-contract model in the capabilities companion
the host-side bring-up workflow in the tasks companion.
"Is the DOCA UROM Service even running on my BlueField, and why does that matter before I write
doca_urom_*code?" — worked example: "my firstdoca_urom_*call returnsDOCA_ERROR_NOT_PERMITTEDon an otherwise-healthy host". Answered by the env-precondition matrix in the capabilities companionthe service-deployed check in the tasks companion step 1, which routes service-side env questions to
doca-public-knowledge-map ## DOCA services(doca-public-knowledge-map/SKILL.md#doca-services).
"Is this UROM operation type / atomic / collective supported on my device + DOCA install + UROM Service version?" — worked example: "does my BlueField support remote atomic Fetch-and-Add for an MPI window?". Answered by the plugin-discovery rule (
doca_urom_service_get_plugins_liston a started Service — UROM operations are plugin-defined Command tasks, so the plugins list is the capability surface) in the capabilities companionthe discovery step in the tasks companion.
"How does
doca-uromrelate todoca-rdma— am I replacing it, layering on top, or something else?" — worked example: "I already have rawdoca-rdmaworking; should I rewrite to use UROM?". Answered by the path-selection rule in the capabilities companion (UROM rides the RDMA substrate but adds the DPU-offload contract; it is the right tool only when host CPU is the bottleneck — simple point-to-point cases stay ondoca-rdma)."Is this UROM API on my installed DOCA version?" — worked example: "is the collective-ops plugin discoverable via
doca_urom_service_get_plugins_liston DOCA 3.x". Answered by the version-compatibility overlay in the capabilities companion, which cross-links the canonical detection chain indoca-version/SKILL.mdand adds the host library + DPU service versions must match overlay."What does this
DOCA_ERROR_*from adoca_urom_*call mean and which layer caused it?" — worked example: "DOCA_ERROR_NOT_PERMITTEDon the first enqueue afterdoca_ctx_start()succeeded". Answered by the UROM overlay on the cross-library taxonomy in the capabilities companionthe layered ladder in the tasks companion that escalates to
doca-debug/SKILL.md.
Audience
This skill serves external developers building HPC / UCX / MPI
applications that consume the DOCA UROM library from the host
side — code calling doca_urom_* (directly in C / C++, through
FFI / bindings, or through a UCX-based stack such as OpenMPI /
MPICH wired to use UROM as a transport) to push remote memory
operations onto the BlueField instead of the host CPU. It is not
for NVIDIA developers contributing to DOCA UROM, nor the place to
learn how to deploy / operate the UROM Service on the DPU side
— that goes through the public DOCA UROM Service guide via
doca-public-knowledge-map ## DOCA services (doca-public-knowledge-map/SKILL.md#doca-services).
Language scope. DOCA UROM ships as a host-side C library
(pkg-config module doca-urom); shipped samples under
/opt/mellanox/doca/samples/doca_urom/ are C. C / C++ consumers —
including UCX-based stacks wrapping the library — are the
canonical case the tasks companion assumes. Other-language
consumers (Rust, Go, Python, …) reach the same *.so through FFI;
the skill keeps its lifecycle, capability-discovery,
error-taxonomy, and RDMA-substrate guidance language-neutral and
routes to the public C ABI as the authoritative surface.
When to load this skill
Load this skill when the user is doing hands-on DOCA UROM work from the host side, in any language. Concretely:
Initializing a UROM Service context (
doca_urom_service_*) on adoca_devmapping to the target BlueField, creating Worker contexts (doca_urom_worker_*) attached to it, and confirming the matching DPU-side UROM Service is reachable before the first enqueue.Enqueueing remote memory operations (puts, gets, atomics, active messages, collectives) through
doca_urom_*and progressing the DOCA progress engine for completions.Calling
doca_urom_service_get_plugins_liston a started Service to discover which plugins — and therefore which operation types / atomics / collectives, since these are plugin-defined — this device + DOCA install + UROM Service version supports.Applying the UROM lifecycle, capability-discovery, and error rules to a UCX-based HPC stack (OpenMPI, MPICH, custom UCX consumer) already wired to use UROM. Designing the UCX transport integration itself remains upstream-stack work.
Debugging a
DOCA_ERROR_*fromdoca_urom_*— disambiguating DPU-side UROM Service unreachable vs operation type unsupported on this device vs plaindoca_devaccess denied vs underlying RDMA transport failure.Designing non-C bindings (Rust, Go, Python, …) that wrap the UROM C ABI and must honor the same lifecycle and error rules.
Do not load this skill for general DOCA orientation, DOCA
install, deployment / operation of the DPU-side UROM Service (a
separate artifact with its own public guide via
doca-public-knowledge-map ## DOCA services (doca-public-knowledge-map/SKILL.md#doca-services)),
or non-UROM library questions. For those, use
doca-public-knowledge-map/SKILL.md.
What this skill provides
This is a thin loader. The body keeps only the orientation needed to pick the right next file. The substantive UROM-specific material lives in two companion files:
the capabilities companion — what the host-side UROM API expresses on this version + BlueField + UROM Service version: the paired-contract model (host enqueues; DPU service executes); the two context types (
doca_urom_service— one per BlueField, bound to itsdoca_dev— and attacheddoca_urom_workercontexts); the enqueue-side operation surface (puts, gets, atomics, active messages, collectives) delivered as plugin-defined Worker Command tasks, named generically because exact symbol shapes are plugin- and install-bound; the plugin-discovery surface (doca_urom_service_get_plugins_list); the UROM error taxonomy mapped ontoDOCA_ERROR_*; the observability surface (completion events, capability snapshots, RDMA counters); and the safety policy gating env preconditions (UROM Service deployed on the DPU; host library + DPU service versions agree; RDMA-capable BlueField + DOCA install).the tasks companion — step-by-step workflows for the six in-scope UROM verbs:
configure,build,modify,run,test,debug. Plus aDeferred task verbsblock that points out-of-scope questions at the right next skill.
The skill assumes a host + BlueField pair where DOCA is installed,
the UROM Service is deployed and running on the BlueField, the RDMA
transport between them is healthy, and the user has a sketch of the
HPC / UCX / MPI stack to offload. It does not cover installing
DOCA, deploying the UROM Service container, or bringing up
RDMA / RoCE / IB transport — those go through
doca-setup/SKILL.md, the public DOCA UROM
Service guide, and doca-rdma/SKILL.md.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or templates bundle. To keep the boundary clean, it deliberately does not contain — and pull requests should not add:
Pre-written DOCA UROM application source code, in any language. The verified UROM source is the shipped C samples at
/opt/mellanox/doca/samples/doca_urom/. The agent routes the user there and prescribes a minimum-diff modification via the modify-a-sample workflow indoca-programming-guide/SKILL.md, layered with the UROM overrides in the tasks companion.An MPI / UCX algorithm or collective implementation. This library offloads remote memory operations; picking which puts / gets / atomics / collectives to issue for a given MPI primitive is the user's HPC stack or domain expertise. Refuse to invent collective algorithms; route "what algorithm should my all-reduce use" to upstream MPI / UCX docs — that is a stack-design question, not a UROM API question.
Standalone build manifests (
meson.build,CMakeLists.txt,Cargo.toml, …) parked inside the skill. The agent constructs the manifest in the user's project against the installed DOCA, wherepkg-config --modversion doca-uromis the source of truth.A
samples/,bindings/, orreference/subtree of any kind. A mock artifact labeled "reference" reads as buildable and misleads.The DOCA UROM Service surface. That service is a separate artifact with its own public guide; routing lives in
doca-public-knowledge-map ## DOCA services(doca-public-knowledge-map/SKILL.md#doca-services). Conflating the library (host-side enqueue) with the service (DPU-side executor) is the most common UROM first-app design error.
Loading order
Read this skill first to confirm the user's question is in scope (host-side library work; not DPU-side service deployment, and not MPI / UCX algorithm design).
For the UROM capability matrix, the paired-contract model (host library + DPU service), the Service + Worker context model, the enqueue-side operation surface, the plugin-discovery rule, the env-precondition policy, the error taxonomy, the observability surface, and the safety policy, see the capabilities companion.
For step-by-step workflows — configure, build, modify, run, test, debug — see the tasks companion.
Both companion files cross-link to each other, to
doca-version/SKILL.md for canonical
version rules (with the UROM overlay that host library and DPU
service versions must match), to
doca-rdma/SKILL.md for the underlying RDMA
substrate, and to
doca-public-knowledge-map/SKILL.md
whenever the right answer is "look it up in the public UROM
library / Service guide or the on-disk install layout".
Related skills
doca-public-knowledge-map/SKILL.md— the routing table for every public DOCA documentation source and the on-disk layout of an installed DOCA package. The DOCA UROM library public guide is at https://docs.nvidia.com/doca/sdk/DOCA-UROM/index.html; the DOCA UROM Service is a different artifact documented separately under the DOCA services section of that map.doca-rdma/SKILL.md— the underlying RDMA transport substrate the BlueField uses to move bytes once UROM offloads an operation. UROM does NOT replace RDMA; it adds the DPU-offload contract on top. For simple point-to-point RDMA where host CPU is not the bottleneck, usedoca-rdmadirectly — UROM's service-side contract is not worth its overhead there.doca-setup/SKILL.md— env preparation, install verification, BlueField setup, and the no install yet path via the public NGC DOCA container. This skill assumes its preconditions hold AND the DPU-side UROM Service is deployed and running.doca-version/SKILL.md— canonical DOCA version-handling rules. This skill's## Version compatibilitycross-links the four-way match rule and adds the host library + DPU service must agree on version overlay.doca-structured-tools-contract/SKILL.md— the bundle's structured-tools precedence rule (detect / prefer / fall back / report). The Command appendix in the tasks companion honors this contract.doca-programming-guide/SKILL.md— general DOCA programming patterns shared by every library:pkg-config+ meson build, modify-a-shipped-sample first-app, Core-context lifecycle, the cross-libraryDOCA_ERROR_*taxonomy, and the debug order. This skill layers UROM specifics on top.doca-debug/SKILL.md— the cross-cutting debug ladder (install / version / build / link / runtime / program / driver). UROM-specific debug (UROM Service not reachable, host library + DPU service version skew, RDMA transport failure underneath, operation type unsupported on this device + firmware + service version) overlays on top.
The DOCA UROM Service running on the DPU side is deliberately
not in scope — a separate artifact with its own public guide
via
doca-public-knowledge-map ## DOCA services (doca-public-knowledge-map/SKILL.md#doca-services).
Conflating the library and the service is the single most common
UROM first-app design error: surface the split explicitly whenever
a question straddles the two.
Files
- ATTRIBUTION.mdAdded by AutoGineer885 B
- BENCHMARK.md11.2 KiB
- CAPABILITIES.md34.2 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md16.3 KiB
- SKILLCARD.yaml2.6 KiB
- TASKS.md35.2 KiB
- evals/evals.json2.5 KiB
- skill-card.md5.2 KiB
- skill.oms.sig5.1 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
The author says: Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu 22.04/24.04 or RHEL/SLES) on a host paired with a BlueField DPU running the DOCA UROM Service at a compatible version. Reads the user's local install via `pkg-config doca-urom` and inspects /opt/mellanox/doca/{lib,include,samples,applications}; underlying RDMA fabric between host and BlueField must be healthy. The validation steps require a live DOCA install.
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- NVIDIA
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/doca-urom · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download doca-urom.zip