Agent Skill · Nvidia

doca-bench-extension

Use this skill when the operator is authoring, building, loading, or debugging a custom doca-bench plug-in — a versioned shared library with DOCA_EXPERIMENTAL-marked C entry points that doca-bench loads to measure a workload class its built-in modes do not cover, with doca_bench_cuda as the shipped reference exemplar. Trigger even when the user does not say "doca-bench-extension" or "doca_bench_cuda" — typical implicit phrasings include "no built-in doca-bench mode fits my workload", "how do I benchmark a CUDA GPUNetIO RX/TX kernel", "doca-bench cannot find or load my custom .so", "extension exported symbols do not match what the parent expects", "soversion mismatch after a DOCA upgrade", or "my GPU kernel hangs because stop_flag was never set". Refuse and route elsewhere for questions about which built-in doca-bench mode to pick, DOCA GPUNetIO programming semantics, CUDA toolkit installation, or contributor work on in-tree extensions — those belong to other skills.

Provider: Nvidia Path in repo: SKILL.md

Skill body

DOCA Bench Extension

Examples

Instructions

Follow Loading order below. Open the tasks companion for configure / build / run / debug. Open the capabilities companion for the extension API shape. Do not open every companion file.

Where to start: This is a tool skill for the extension / plug-in framework that augments doca-bench — NOT a workload-shape skill on its own. Open the tasks companion and start at ## configure to commit to the three-axis decision (workload class is genuinely outside doca-bench’s built-in modes × extension API surface fits × parent-tool co-load is acceptable), then ## build for how a custom extension is compiled and laid out, then ## run for how doca-bench discovers and invokes the extension, then ## test for the smoke-before-bulk loop the agent applies to every new extension. Open the capabilities companion when the question is what an extension can do that built-in doca-bench modes cannot, what the extension API surface looks like in broad strokes (the DOCA_EXPERIMENTAL C entry points the shipped reference exposes), how the build / registration / discovery flow works, or how the extension’s lifetime is bounded by the parent doca-bench invocation. If doca-bench itself is the question, route to doca-bench. If the question is “which built-in doca-bench mode do I pick?”, that is also doca-bench — extensions are the exit ramp for workloads built-in modes do not cover.

Example questions this skill answers well

Audience

Experienced AI agents and platform / performance engineers who already use doca-bench for the built-in workload modes and now have a workload class that the built-in modes do not cover. Readers are expected to be comfortable with native build systems (Meson, in this codebase), shared-library packaging on Linux, and the DOCA_EXPERIMENTAL API stability contract. If the user asks about GPU-side benchmarking via the shipped doca_bench_cuda reference extension, the reader is also expected to be familiar with DOCA GPUNetIO and CUDA toolchain basics — those domains live in their own skills, not here.

This skill is NOT for:

Language scope

A doca-bench extension surfaces as:

  1. A versioned shared library on Linux (.so with soversion matching the DOCA release), built via the doca-bench-extension Meson rules in the shipped /opt/mellanox/doca/tools/bench_extension/meson.build and the per-extension subdirectory (the reference exemplar is doca_bench_cuda/).
  2. A small set of DOCA_EXPERIMENTAL-marked C entry points that the parent doca-bench invokes — i.e. the API surface declared in the extension’s header file. The shipped doca_bench_cuda/doca_bench_cuda.h is the reference for what that surface shape looks like in practice (*_init, *_device_query, *_device_synchronize, and per-workload kernel-start entry points such as *_start_nop_kernel, *_start_eth_recv_kernel, *_start_eth_send_kernel, *_start_eth_bidir_kernel).
  3. A set of per-workload settings structs that the parent passes through (e.g. the reference exemplar’s doca_bench_cuda_kernel_settings, doca_bench_cuda_eth_rx_kernel_settings, doca_bench_cuda_eth_tx_kernel_settings, doca_bench_cuda_eth_bidir_kernel_settings carry block counts, threads-per-block, RX / TX queues, buffer address / mkey / size, a stop flag, and a stats pointer).

The skill itself is Markdown. The user’s extension source is whatever language the workload requires (C / C++ / CUDA in the reference case). The agent does NOT prescribe a language beyond what the shipped reference demonstrates.

When to load this skill

Load doca-bench-extension when ANY of the following is true:

Co-load this skill with:

Do NOT load this skill when the user’s workload fits a doca-bench built-in mode — extensions add cost (build toolchain, version churn, the experimental-surface contract); the built-in modes are always the first answer to try.

What this skill provides

Three companion files in this directory, each owning a different question shape:

The combined skill teaches an AI agent to drive the extension-author-and-wire-in class of doca-bench questions: confirm an extension is needed at all; locate the shipped reference exemplar (/opt/mellanox/doca/tools/bench_extension/doca_bench_cuda/); copy its build + API surface shape; build a versioned shared library that matches the DOCA release; smoke that the parent doca-bench actually loads it; diagnose layered failures when it does not.

What this skill deliberately does not ship

Loading order

When a doca-bench-extension question arrives:

  1. Confirm DOCA is installed AND doca-bench is reachable on the user’s install — if not, route to doca-setup;
  2. Confirm none of doca-bench’s built-in modes covers the workload class — if any of them does, route back to doca-bench and stop. Extensions are the exit ramp, not the first answer;
  3. Read the capabilities companion to commit to the three-axis decision and walk the reference exemplar’s API surface shape;
  4. Read the tasks companion and walk ## configure → ## build → ## run → ## test → ## debug in that order; do NOT start with ## run without the build precondition step.

Cross-link conventions follow the bundle’s relative path contract from tools/<X>/:

This skill assumes the user has built shared libraries on Linux before and knows what a Meson build is. Background material on those topics belongs in the toolchain docs, not in this skill.

Skill frontmatter

license: Apache-2.0 metadata: {"author" => "NVIDIA ", "kind" => "tool", "tags" => ["doca", "bench", "extension"]} compatibility: Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu 22.04/24.04 or RHEL/SLES) with a BlueField DPU or ConnectX NIC. Source tree: `/opt/mellanox/doca/tools/bench_extension/` (underscored, not kebab-case); `libdoca_bench_cuda_impl.so` lands in the platform libdir. Needs `pkg-config doca-common`. GPU reference exemplar needs an NVIDIA GPU and matching CUDA toolkit. The validation steps require a live DOCA install.

Work with this as data

Every skill here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for agent skills

4 MCP tools reach this
  • find_skillsBrowse and filter every skill in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This skill
curl "https://apis.io/api/v1/skills/doca-bench-extension"
All agent skills
curl "https://apis.io/api/v1/skills?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.