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.
Example questions this skill answers well
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.
- "What GPU-init RDMA-WRITE latency / jitter can the
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.
- "This is the GPUNetIO tool — how does the latency
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).
- "Median vs p99 vs jitter — which one is the actual
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.
- "What is the latency-vs-batching trade-off specific
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.
- "What version of DOCA + CUDA Toolkit do I need for
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.
- "How do I read the half-iter / full-iter / CUDA-side
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.
Audience
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:
- A developer designing a GPU-resident real-time control
loop and deciding whether the GPUNetIO path's tail
latency fits the deadline.
- A platform operator validating a tuning change (NUMA
pinning, GPU PCIe placement, IB device choice, GID
index, NIC firmware burn) by re-running this benchmark
against the new state.
- An SRE / performance engineer producing a "this is the
GPUNetIO-driven WRITE latency on this GPU-NIC pair
today, with median + p99 + jitter" artifact downstream
consumers can cite.
- An AI agent answering "is the doca-gpunetio latency
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).
Language scope
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.
When to load this skill
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:
- Measuring kernel-initiated RDMA WRITE latency between
two hosts (or a host and a BlueField DPU) with the
GPUNetIO surface.
- Characterizing tail latency (p99 / p99.9) and jitter
for a real-time / control-loop workload class.
- Deciding whether the GPUNetIO path is the right runtime
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.
- Capturing a documented baseline (build + invocation +
DOCA version + GPU + NIC + as-deployed environment +
numbers) for later regression hunts.
- Diagnosing a build / link / run failure that surfaces
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.
What this skill provides
This is a thin loader. Substantive material lives in
two companion files:
CAPABILITIES.md — what the tool measures (the
ping-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-scope
task 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.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or
scripts bundle. It deliberately does not contain — and
pull requests should not add:
- Specific flag strings or expected latency numbers
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.
- Pre-written DOCA GPUNetIO or CUDA kernel source
code that would compete with the shipped tool tree.
The shipped
client/, server/, and common/
subtrees are the verified worked example.
- Wrappers, parsers, or scripts in any language that
consume the tool's stdout. The output format is small
and documented in
CAPABILITIES.md ## Observability.
- A
samples/, bindings/, or reference/ subtree.
This is a thin loader for a shipped tool tree.
Loading order
- Read this
SKILL.md first to confirm the user's
question 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).
- For what the tool measures, the surface-selection
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.
- For step-by-step workflows —
install,
configure, build, modify, run, test,
debug, use — see TASKS.md.
Related skills
../../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 GPI
programming 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 — the
canonical version-detection chain, four-way match
rule. The ## Version compatibility section here is a
thin overlay.
doca-setup — env
preparation, 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 — the
cross-cutting debug ladder.
doca-hardware-safety —
the bundle-wide hardware-safety meta-policy.
1---2name: doca-gpunetio-ib-write-lat3description: 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 'ib_write_lat': 'GPU kernel RDMA latency benchmark', 'how fast can a 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.4license: Apache-2.05---67# DOCA GPUNetIO ib_write_lat89**Where to start:** This is a tool skill for the GPUNetIO-10flavored `ib_write_lat` benchmark shipped under11`doca/tools/gpunetio_ib_write_lat/` (a client + server pair,12built from source against the installed DOCA via `meson`).13It measures the latency of an RDMA WRITE work request when14the WR is posted **from a CUDA kernel through the15doca-gpunetio device-side surface**, in a ping-pong cadence.16Open [`TASKS.md`](TASKS.md) and start at17[`## configure`](TASKS.md#configure) for the GPU-NIC pairing18precondition and the build pattern; jump to19[`## run`](TASKS.md#run) for the single-iteration smoke20flow. Open [`CAPABILITIES.md`](CAPABILITIES.md) when the21question is *what this tool actually measures*, *how it22differs from the GPI sister tool on the same physical23operation*, or *how to interpret the half-iter / full-iter24/ CUDA-side usec output and the median / p99 / jitter25characterization*. If DOCA is not installed yet, route to26[`doca-setup`](../../doca-setup/SKILL.md) first; if the27user is still deciding between GPUNetIO and GPI as a28programming surface, the picture in29[`../../libs/doca-gpunetio/CAPABILITIES.md#capabilities-and-modes`](../../libs/doca-gpunetio/CAPABILITIES.md#capabilities-and-modes)30and31[`../../libs/doca-gpi/CAPABILITIES.md#capabilities-and-modes`](../../libs/doca-gpi/CAPABILITIES.md#capabilities-and-modes)32is the first stop.3334## Example questions this skill answers well3536The CLASSES of `doca-gpunetio-ib-write-lat` questions this37skill is built to answer, each with one worked example. The38class is the load-bearing piece; the worked example is one39instance.4041- **"What GPU-init RDMA-WRITE latency / jitter can the42 GPUNetIO path deliver for a real-time / control-loop43 workload?"** — worked example: *"measure per-iteration44 WRITE latency between two hosts with an H100 +45 ConnectX-7 on each side, target the median and the p9946 separately"*. Answered by the GPU-NIC pairing47 precondition in48 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)49 + the bring-up flow in50 [`TASKS.md ## configure`](TASKS.md#configure) +51 [`TASKS.md ## run`](TASKS.md#run).52- **"This is the GPUNetIO tool — how does the latency53 number differ from the GPI programming surface?"** —54 worked example: *"the team is using GPI; should I expect55 GPUNetIO to beat / tie / lose vs GPI?"*. Answered by the56 *"same physical operation, different runtime framework"*57 rule in58 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)59 + the cross-link to the GPI library skill60 [`../../libs/doca-gpi/CAPABILITIES.md`](../../libs/doca-gpi/CAPABILITIES.md)61 (note: `doca/tools/` ships no GPI `ib_write_lat`62 benchmark binary — GPI is a programming surface, not a63 shipped benchmark tool).64- **"Median vs p99 vs jitter — which one is the actual65 answer for a real-time control loop?"** — worked66 example: *"my control loop has a deadline; the median67 is well under the budget but p99 spikes; do I quote68 the median or the p99?"*. Answered by the69 median-vs-p99-vs-jitter rule in70 [`CAPABILITIES.md ## Observability`](CAPABILITIES.md#observability)71 + the eval-loop overlay in72 [`TASKS.md ## test`](TASKS.md#test).73- **"What is the latency-vs-batching trade-off specific74 to GPU-init RDMA?"** — worked example: *"my CUDA kernel75 could batch multiple WRs to amortize the GPU-side76 overhead; what does that buy me on latency vs what does77 it cost me?"*. Answered by the78 latency-vs-batching trade-off in79 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes).80- **"What version of DOCA + CUDA Toolkit do I need for81 this binary to build and run?"** — worked example: *"my82 install has DOCA at one semver and CUDA at another;83 will the ToT-shipped `gpunetio_ib_write_lat` even84 link?"*. Answered by the version overlay in85 [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility).86- **"How do I read the half-iter / full-iter / CUDA-side87 usec columns?"** — worked example: *"the binary printed88 half-iter, full-iter, and a CUDA-side number — what is89 the right column to quote for one-way latency vs90 round-trip vs cross-check?"*. Answered by the column-91 semantics rule in92 [`CAPABILITIES.md ## Observability`](CAPABILITIES.md#observability).9394## Audience9596This skill serves **external developers and performance97engineers who need a reproducible measurement of the98latency of an RDMA WRITE WR when the WR is posted from a99CUDA kernel through doca-gpunetio**, on the user's actual100install and GPU-NIC pair. Concretely:101102- A developer designing a GPU-resident real-time control103 loop and deciding whether the GPUNetIO path's tail104 latency fits the deadline.105- A platform operator validating a tuning change (NUMA106 pinning, GPU PCIe placement, IB device choice, GID107 index, NIC firmware burn) by re-running this benchmark108 against the new state.109- An SRE / performance engineer producing a *"this is the110 GPUNetIO-driven WRITE latency on this GPU-NIC pair111 today, with median + p99 + jitter"* artifact downstream112 consumers can cite.113- An AI agent answering *"is the doca-gpunetio latency114 budget acceptable for this real-time workload class"*115 honestly — with measured numbers, the build +116 invocation that produced them, and the GPU + NIC +117 DOCA version that scopes them — rather than guessing.118119It is **not** for users debugging the `doca-gpunetio`120library itself (route to121[`../../libs/doca-gpunetio/SKILL.md`](../../libs/doca-gpunetio/SKILL.md)),122and **not** a substitute for the `perftest` upstream123`ib_write_lat` (which measures CPU-initiated WRITE124latency).125126## Language scope127128The `doca-gpunetio-ib-write-lat` tool is shipped as **C129plus CUDA `.cu` translation units** under130`doca/tools/gpunetio_ib_write_lat/`, split into a131`client/` subtree, a `server/` subtree, and a `common/`132subtree shared between them (per the verified file layout:133`client/{main.c,perftest.{c,h},meson.build}`,134`server/{main.c,perftest.{c,h},meson.build}`,135`common/{common.c,common.h,kernel.cu}`). The host-side136build is `meson` against the installed DOCA `pkg-config`137modules (`doca-gpunetio`, `doca-rdma`, `doca-common`,138plus the CUDA Toolkit dependency); the device-side build139is `nvcc` against the DOCA GPU NetIO device-side header140set. There is no Python / Rust / Go binding — the tool is141a pair of CLI binaries.142143## When to load this skill144145Load this skill when the user is — or the agent needs to146— build and run the `gpunetio_ib_write_lat` client +147server on real hosts with DOCA installed plus a CUDA148Toolkit matched to the DOCA install, and a GPU + IB device149pair on each host's PCIe topology. Concretely:150151- Measuring kernel-initiated RDMA WRITE latency between152 two hosts (or a host and a BlueField DPU) with the153 GPUNetIO surface.154- Characterizing tail latency (p99 / p99.9) and jitter155 for a real-time / control-loop workload class.156- Deciding whether the GPUNetIO path is the right runtime157 surface for a class of workload vs the GPI programming158 surface (the [`doca-gpi`](../../libs/doca-gpi/SKILL.md)159 library — `doca/tools/` ships no GPI benchmark binary)160 or the classic CPU-initiated `perftest` path.161- Capturing a documented baseline (build + invocation +162 DOCA version + GPU + NIC + as-deployed environment +163 numbers) for later regression hunts.164- Diagnosing a build / link / run failure that surfaces165 the GPUNetIO + RDMA bring-up sequence under this tool's166 shipped scaffolding.167168Do **not** load this skill for general DOCA orientation,169library API work, or installation. For those, use170[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md),171[`../../libs/doca-gpunetio/SKILL.md`](../../libs/doca-gpunetio/SKILL.md),172or [`doca-setup`](../../doca-setup/SKILL.md). Do not load173it for *application-level* real-time deadline analysis —174this benchmark measures the WR latency through GPUNetIO,175not the user's full pipeline.176177## What this skill provides178179This is a **thin loader**. Substantive material lives in180two companion files:181182- `CAPABILITIES.md` — what the tool measures (the183 ping-pong WRITE latency primitive driven by both sides'184 CUDA kernels through doca-gpunetio), the185 runtime-surface selection rule (GPUNetIO vs GPI vs186 CPU-initiated), the GPU-NIC pairing precondition, the187 latency-vs-batching trade-off intrinsic to GPU-init188 RDMA, the median / p99 / jitter reporting taxonomy,189 the version overlay (DOCA `.pc` PLUS CUDA Toolkit),190 the layered error taxonomy, the observability surface191 (stdout report including the timeout knob the192 `gpunetio_rdma_write_lat_*` kernel functions surface193 per the verified `common.h`), and the safety overlay.194- `TASKS.md` — step-by-step workflows for the in-scope195 task verbs: `install`, `configure`, `build`, `modify`,196 `run` (smoke-before-bulk; single-iteration verification;197 reading the report columns), `test` (the eval loop —198 median / p99 / jitter / steady-state), `debug` (walk199 the error taxonomy layer by layer), `use` (how a200 latency result feeds a real-time class-of-workload201 decision), plus a `Deferred task verbs` block.202203The skill assumes a host where DOCA is already installed,204a CUDA Toolkit matched to the install is present, and the205operator has whatever privileges the public install206profile expects for binding a `doca_dev`, a `doca_gpu`,207and an OOB TCP socket.208209## What this skill deliberately does not ship210211This skill is **agent guidance**, not a samples or212scripts bundle. It deliberately does not contain — and213pull requests should not add:214215- **Specific flag strings or expected latency numbers**216 beyond what the tool's shipped `--help` and `main.c`217 ARGP registration establish. The flag surface is small218 (device name, GPU PCIe address, GID index, server IP219 on the client side); the agent re-reads the binary's220 `--help` on the installed version.221- **Pre-written DOCA GPUNetIO or CUDA kernel source222 code** that would compete with the shipped tool tree.223 The shipped `client/`, `server/`, and `common/`224 subtrees are the verified worked example.225- **Wrappers, parsers, or scripts** in any language that226 consume the tool's stdout. The output format is small227 and documented in228 [`CAPABILITIES.md ## Observability`](CAPABILITIES.md#observability).229- **A `samples/`, `bindings/`, or `reference/` subtree.**230 This is a thin loader for a shipped tool tree.231232## Loading order2332341. Read this `SKILL.md` first to confirm the user's235 question is in scope (the user actually wants to236 measure kernel-initiated WRITE latency through237 GPUNetIO, not the GPI variant, not the CPU-initiated238 variant, and not a library API question).2392. **For what the tool measures, the surface-selection240 rule against the GPI sister tool and the CPU-initiated241 `perftest`, the latency-vs-batching trade-off, the242 median / p99 / jitter reporting taxonomy, the version243 overlay, the error taxonomy, the observability244 surface, and the safety overlay, see245 [CAPABILITIES.md](CAPABILITIES.md).**2463. **For step-by-step workflows — `install`,247 `configure`, `build`, `modify`, `run`, `test`,248 `debug`, `use` — see [TASKS.md](TASKS.md).**249250## Related skills251252- [`../../libs/doca-gpunetio/SKILL.md`](../../libs/doca-gpunetio/SKILL.md) —253 the library this tool wraps. The per-GPU `doca_gpu`254 context, the GPU-visible RDMA handles, the CUDA-side255 persistent-kernel pattern, the dual capability-256 discovery rule (DOCA cap-query AND257 `cudaGetDeviceProperties`), and the env preconditions258 (`nvidia_peermem` loaded, CUDA buffers registered259 with DOCA) live there.260- [`../../libs/doca-rdma/SKILL.md`](../../libs/doca-rdma/SKILL.md) —261 the underlying RDMA library. The RDMA queue this tool262 binds is created and connected via `doca-rdma`; the263 queue lifecycle, the transport type (RC vs UC vs UD),264 the permission matrix, and the connection method are265 owned there.266- [`../../libs/doca-verbs/SKILL.md`](../../libs/doca-verbs/SKILL.md) —267 the raw-verbs escape hatch beneath `doca-rdma` /268 `doca-gpunetio`. This tool stays on the higher-level269 surfaces.270- [`../doca-gpunetio-ib-write-bw/SKILL.md`](../doca-gpunetio-ib-write-bw/SKILL.md) —271 bandwidth analog of this tool on the same runtime272 framework. Same physical operation; different metric273 class (latency vs BW). The two together carry the full274 GPUNetIO-side latency / throughput picture.275- [`doca-gpi`](../../libs/doca-gpi/SKILL.md) — the GPI276 programming surface (CUDA-kernel-initiated RDMA). The277 alternative runtime framework for the same physical278 operation; `doca/tools/` ships no GPI `ib_write_lat`279 benchmark binary, so the GPI comparison is against the280 library surface, not a sibling tool. The selection rule281 in282 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)283 is the decision aid; the agent's job is to teach when284 to pick which.285- [`doca-version`](../../doca-version/SKILL.md) — the286 canonical version-detection chain, four-way match287 rule. The `## Version compatibility` section here is a288 thin overlay.289- [`doca-setup`](../../doca-setup/SKILL.md) — env290 preparation, install verification, GPU + CUDA Toolkit291 pairing, `nvidia_peermem` load, hugepages, NUMA, and292 the NGC DOCA container path.293- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md) —294 routing to the public DOCA documentation set and the295 CUDA Toolkit pointer.296- [`doca-debug`](../../doca-debug/SKILL.md) — the297 cross-cutting debug ladder.298- [`doca-hardware-safety`](../../doca-hardware-safety/SKILL.md) —299 the bundle-wide hardware-safety meta-policy.