| license | Apache-2.0 |
| name | doca-gpi |
| description | Use this skill for hands-on DOCA GPI programming — wiring a GPU-Packet-Initiator context so a CUDA kernel drives RDMA queues directly from GPU memory without host CPU mediation. Covers picking GPI vs doca-gpunetio, the doca_gpi / domain / channel object model, the GPU-side handle handoff (doca_gpu_gpi_channel*), attaching GPU memory to a GPI domain, the domain and channel attribute objects, and debugging DOCA_ERROR_* from doca_gpi_* calls. Trigger even when the user does not explicitly mention "DOCA GPI" — implicit phrasings include "my CUDA kernel needs to post RDMA directly from GPU memory", "DOCA_ERROR_* from doca_gpi_gpu_channel_get", "how do I hand a GPU handle to my CUDA kernel", "how many channels can a GPI domain hold", or "GPU kernel driving RDMA without the host CPU on the path". Refuse and route elsewhere for the doca-gpunetio Send/Receive surface, the doca-rdma queue lifecycle, DPA-side initiation (doca-rdmi), or the CUDA programming model — those belong to other skills.
|
| metadata | {"kind":"library"} |
| 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 attached, plus an NVIDIA GPU with CUDA Toolkit installed (GPUDirect-style PCIe path between GPU and NIC). Reads the local install via `pkg-config doca-gpi` (co-requires doca-gpunetio, doca-dpa, doca-verbs) and inspects /opt/mellanox/doca/{lib,include,samples,applications}.
|
DOCA GPI
Where to start: This skill assumes DOCA is already installed
and the user is doing hands-on GPI work on a host that has both
a BlueField / ConnectX device and an NVIDIA GPU reachable over
PCIe. Open TASKS.md if the user wants to do
something (install / configure / build / modify / run / test /
debug / use); open CAPABILITIES.md when the
question is what can GPI express on this version — the domain +
channel object model, the GPU-side handle handoff, the relationship
to doca-gpunetio and doca-verbs, the attribute objects, and the
safety overlay. If the user has not installed DOCA yet, route to
doca-setup first.
Example questions this skill answers well
The CLASSES of GPI questions this skill is built to answer, each
with one worked example. The agent should treat the class as the
load-bearing piece — the worked example is a single instance.
- "Should I use
doca-gpi or doca-gpunetio for this case?" —
worked example: "my CUDA kernel needs to post RDMA writes
directly to a remote DPU's memory — do I want the higher-level
Send/Receive surface or the lower-level channel/queue surface?".
Answered by the channel-level vs Send/Receive-level selection
rule in
CAPABILITIES.md ## Capabilities and modes
surface-selection table.
- "How do I bring up a GPI channel and connect it to a remote
peer?" — worked example: "create the GPI, set domain + channel
attribute sizing, create the channel, exchange endpoint
connection info with the remote, connect the endpoint". Answered
by the channel-object lifecycle in
CAPABILITIES.md ## Capabilities and modes
- "What is the GPU-side handle and how do I hand it to my CUDA
kernel?" — worked example: "
doca_gpi_gpu_channel_get
returns a doca_gpu_gpi_channel* — how do I get that into my
CUDA kernel's argument list?". Answered by the GPU-handoff
pattern in
CAPABILITIES.md ## Capabilities and modes
- the run-side wiring in
TASKS.md ## run,
cross-linked into
for the CUDA-side
programming surface itself.