nvidia/doca-gpunetio-ib-write-lat
> Use this skill when the user is measuring GPU-kernel-initiated RDMA WRITE latency through doca-gpunetio — building and running the `gpunetio_ib_write_lat` client + server pair under `doca/tools/gpunetio_ib_write_lat/`, checking GPU-NIC pairing, reading the half-iter / full-iter / CUDA-side usec columns, characterizing median / p99 / jitter for a real-time control loop, picking GPUNetIO vs GPI vs CPU-initiated `perftest`, or weighing the latency-vs-batching trade-off. Trigger even without 'GPUNetIO' or CUDA kernel post a WRITE', 'p99 RDMA latency on H100 + ConnectX', 'kernel-launched WR tail latency', or 'compare GPU-init vs CPU-init perftest'. Route elsewhere for bandwidth runs (doca-gpunetio-ib-write-bw), the GPI surface (doca-gpi), library debugging (doca-gpunetio), or DOCA install.
npx skills add https://github.com/NVIDIA/skills --skill doca-gpunetio-ib-write-lat
Where to start: This is a tool skill for the GPUNetIO-
flavored ib_write_lat benchmark shipped under
doca/tools/gpunetio_ib_write_lat/ (a client + server pair,
built from source against the installed DOCA via meson).
It measures the latency of an RDMA WRITE work request when
the WR is posted **from a CUDA kernel through the
doca-gpunetio device-side surface**, in a ping-pong cadence.
Open TASKS.md and start at
## configure for the GPU-NIC pairing
precondition and the build pattern; jump to
## run for the single-iteration smoke
flow. Open CAPABILITIES.md when the
question is *what this tool actually measures*, *how it
differs from the GPI sister tool on the same physical
operation*, or *how to interpret the half-iter / full-iter
/ CUDA-side usec output and the median / p99 / jitter
characterization*. If DOCA is not installed yet, route to
doca-setup first; if the
user is still deciding between GPUNetIO and GPI as a
programming surface, the picture in
../../libs/doca-gpunetio/CAPABILITIES.md#capabilities-and-modes
and
../../libs/doca-gpi/CAPABILITIES.md#capabilities-and-modes
is the first stop.
The CLASSES of doca-gpunetio-ib-write-lat questions this
skill is built to answer, each with one worked example. The
class is the load-bearing piece; the worked example is one
instance.
GPUNetIO path deliver for a real-time / control-loop
workload?"** — worked example: *"measure per-iteration
WRITE latency between two hosts with an H100 +
ConnectX-7 on each side, target the median and the p99
separately"*. Answered by the GPU-NIC pairing
precondition in
CAPABILITIES.md ## Capabilities and modes
+ the bring-up flow in
TASKS.md ## configure +
TASKS.md ## run.
number differ from the GPI programming surface?"** —
worked example: *"the team is using GPI; should I expect
GPUNetIO to beat / tie / lose vs GPI?"*. Answered by the
*"same physical operation, different runtime framework"*
rule in
CAPABILITIES.md ## Capabilities and modes
+ the cross-link to the GPI library skill
../../libs/doca-gpi/CAPABILITIES.md
(note: doca/tools/ ships no GPI ib_write_lat
benchmark binary — GPI is a programming surface, not a
shipped benchmark tool).
answer for a real-time control loop?"** — worked
example: *"my control loop has a deadline; the median
is well under the budget but p99 spikes; do I quote
the median or the p99?"*. Answered by the
median-vs-p99-vs-jitter rule in
CAPABILITIES.md ## Observability
+ the eval-loop overlay in
TASKS.md ## test.
to GPU-init RDMA?"** — worked example: *"my CUDA kernel
could batch multiple WRs to amortize the GPU-side
overhead; what does that buy me on latency vs what does
it cost me?"*. Answered by the
latency-vs-batching trade-off in
CAPABILITIES.md ## Capabilities and modes.
this binary to build and run?"** — worked example: *"my
install has DOCA at one semver and CUDA at another;
will the ToT-shipped gpunetio_ib_write_lat even
link?"*. Answered by the version overlay in
CAPABILITIES.md ## Version compatibility.
usec columns?"** — worked example: *"the binary printed
half-iter, full-iter, and a CUDA-side number — what is
the right column to quote for one-way latency vs
round-trip vs cross-check?"*. Answered by the column-
semantics rule in
CAPABILITIES.md ## Observability.
This skill serves **external developers and performance
engineers who need a reproducible measurement of the
latency of an RDMA WRITE WR when the WR is posted from a
CUDA kernel through doca-gpunetio**, on the user's actual
install and GPU-NIC pair. Concretely:
loop and deciding whether the GPUNetIO path's tail
latency fits the deadline.
pinning, GPU PCIe placement, IB device choice, GID
index, NIC firmware burn) by re-running this benchmark
against the new state.
GPUNetIO-driven WRITE latency on this GPU-NIC pair
today, with median + p99 + jitter"* artifact downstream
consumers can cite.
budget acceptable for this real-time workload class"*
honestly — with measured numbers, the build +
invocation that produced them, and the GPU + NIC +
DOCA version that scopes them — rather than guessing.
It is not for users debugging the doca-gpunetio
library itself (route to
../../libs/doca-gpunetio/SKILL.md),
and not a substitute for the perftest upstream
ib_write_lat (which measures CPU-initiated WRITE
latency).
The doca-gpunetio-ib-write-lat tool is shipped as **C
plus CUDA .cu translation units** under
doca/tools/gpunetio_ib_write_lat/, split into a
client/ subtree, a server/ subtree, and a common/
subtree shared between them (per the verified file layout:
client/{main.c,perftest.{c,h},meson.build},
server/{main.c,perftest.{c,h},meson.build},
common/{common.c,common.h,kernel.cu}). The host-side
build is meson against the installed DOCA pkg-config
modules (doca-gpunetio, doca-rdma, doca-common,
plus the CUDA Toolkit dependency); the device-side build
is nvcc against the DOCA GPU NetIO device-side header
set. There is no Python / Rust / Go binding — the tool is
a pair of CLI binaries.
Load this skill when the user is — or the agent needs to
— build and run the gpunetio_ib_write_lat client +
server on real hosts with DOCA installed plus a CUDA
Toolkit matched to the DOCA install, and a GPU + IB device
pair on each host's PCIe topology. Concretely:
two hosts (or a host and a BlueField DPU) with the
GPUNetIO surface.
for a real-time / control-loop workload class.
surface for a class of workload vs the GPI programming
surface (the doca-gpi
library — doca/tools/ ships no GPI benchmark binary)
or the classic CPU-initiated perftest path.
DOCA version + GPU + NIC + as-deployed environment +
numbers) for later regression hunts.
the GPUNetIO + RDMA bring-up sequence under this tool's
shipped scaffolding.
Do not load this skill for general DOCA orientation,
library API work, or installation. For those, use
doca-public-knowledge-map,
../../libs/doca-gpunetio/SKILL.md,
or doca-setup. Do not load
it for *application-level* real-time deadline analysis —
this benchmark measures the WR latency through GPUNetIO,
not the user's full pipeline.
This is a thin loader. Substantive material lives in
two companion files:
CAPABILITIES.md — what the tool measures (theping-pong WRITE latency primitive driven by both sides'
CUDA kernels through doca-gpunetio), the
runtime-surface selection rule (GPUNetIO vs GPI vs
CPU-initiated), the GPU-NIC pairing precondition, the
latency-vs-batching trade-off intrinsic to GPU-init
RDMA, the median / p99 / jitter reporting taxonomy,
the version overlay (DOCA .pc PLUS CUDA Toolkit),
the layered error taxonomy, the observability surface
(stdout report including the timeout knob the
gpunetio_rdma_write_lat_* kernel functions surface
per the verified common.h), and the safety overlay.
TASKS.md — step-by-step workflows for the in-scopetask verbs: install, configure, build, modify,
run (smoke-before-bulk; single-iteration verification;
reading the report columns), test (the eval loop —
median / p99 / jitter / steady-state), debug (walk
the error taxonomy layer by layer), use (how a
latency result feeds a real-time class-of-workload
decision), plus a Deferred task verbs block.
The skill assumes a host where DOCA is already installed,
a CUDA Toolkit matched to the install is present, and the
operator has whatever privileges the public install
profile expects for binding a doca_dev, a doca_gpu,
and an OOB TCP socket.
This skill is agent guidance, not a samples or
scripts bundle. It deliberately does not contain — and
pull requests should not add:
beyond what the tool's shipped --help and main.c
ARGP registration establish. The flag surface is small
(device name, GPU PCIe address, GID index, server IP
on the client side); the agent re-reads the binary's
--help on the installed version.
code** that would compete with the shipped tool tree.
The shipped client/, server/, and common/
subtrees are the verified worked example.
consume the tool's stdout. The output format is small
and documented in
CAPABILITIES.md ## Observability.
samples/, bindings/, or reference/ subtree.This is a thin loader for a shipped tool tree.
SKILL.md first to confirm the user'squestion is in scope (the user actually wants to
measure kernel-initiated WRITE latency through
GPUNetIO, not the GPI variant, not the CPU-initiated
variant, and not a library API question).
rule against the GPI sister tool and the CPU-initiated
perftest, the latency-vs-batching trade-off, the
median / p99 / jitter reporting taxonomy, the version
overlay, the error taxonomy, the observability
surface, and the safety overlay, see
CAPABILITIES.md.**
install,configure, build, modify, run, test,
debug, use — see TASKS.md.**
../../libs/doca-gpunetio/SKILL.md —the library this tool wraps. The per-GPU doca_gpu
context, the GPU-visible RDMA handles, the CUDA-side
persistent-kernel pattern, the dual capability-
discovery rule (DOCA cap-query AND
cudaGetDeviceProperties), and the env preconditions
(nvidia_peermem loaded, CUDA buffers registered
with DOCA) live there.
../../libs/doca-rdma/SKILL.md —the underlying RDMA library. The RDMA queue this tool
binds is created and connected via doca-rdma; the
queue lifecycle, the transport type (RC vs UC vs UD),
the permission matrix, and the connection method are
owned there.
../../libs/doca-verbs/SKILL.md —the raw-verbs escape hatch beneath doca-rdma /
doca-gpunetio. This tool stays on the higher-level
surfaces.
../doca-gpunetio-ib-write-bw/SKILL.md —bandwidth analog of this tool on the same runtime
framework. Same physical operation; different metric
class (latency vs BW). The two together carry the full
GPUNetIO-side latency / throughput picture.
doca-gpi — the GPIprogramming surface (CUDA-kernel-initiated RDMA). The
alternative runtime framework for the same physical
operation; doca/tools/ ships no GPI ib_write_lat
benchmark binary, so the GPI comparison is against the
library surface, not a sibling tool. The selection rule
in
CAPABILITIES.md ## Capabilities and modes
is the decision aid; the agent's job is to teach when
to pick which.
doca-version — thecanonical version-detection chain, four-way match
rule. The ## Version compatibility section here is a
thin overlay.
doca-setup — envpreparation, install verification, GPU + CUDA Toolkit
pairing, nvidia_peermem load, hugepages, NUMA, and
the NGC DOCA container path.
doca-public-knowledge-map —routing to the public DOCA documentation set and the
CUDA Toolkit pointer.
doca-debug — thecross-cutting debug ladder.
doca-hardware-safety —the bundle-wide hardware-safety meta-policy.
Take nvidia/doca-gpunetio-ib-write-lat from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.