Nvshmem Select Remote Transport
NVIDIAOfficialCreated by NVIDIA NVSHMEM Team
- Skill
- Tool integration
- Software development
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured workflow to select the optimal NVSHMEM remote transport configuration. It relies on read-only system probes and workload analysis to match application requirements with available transport plugins. The process involves verifying system eligibility, analyzing communication profiles, and applying documented transport matrix rules to ensure compatibility and architectural fit. It avoids performance benchmarking or system mutation, focusing instead on static evidence to guide configuration.
What it does
- Inspects target system hardware, drivers, and installed NVSHMEM transport plugins.
- Analyzes communication profiles to determine workload-specific transport requirements.
- Applies hard eligibility gates based on fabric, provider, and prerequisite availability.
- Ranks eligible transport candidates using documented architectural fit rules.
- Generates minimal environment variable exports for the recommended configuration.
- Identifies missing prerequisites or unresolved system facts.
When to use it
- When configuring NVSHMEM for a new cluster or hardware environment.
- When optimizing transport settings for specific kernel communication patterns.
- When troubleshooting compatibility issues between NVSHMEM and network fabrics.
- When determining if a specific transport like GDAKI or IBRC is supported on a target node.
Advantages
- Reduces configuration errors by enforcing hard eligibility gates.
- Provides evidence-based recommendations without requiring runtime benchmarks.
- Standardizes the selection process across different network fabrics and providers.
- Minimizes manual effort by automating the collection of system transport facts.
Usage examples
- “Inspect this target node and src/exchange.cu, then recommend a throughput-oriented transport for 256 PEs with 8 local PEs per node.”
- The agent probes the system, analyzes the communication profile in the source file, and recommends a transport configuration based on the fabric and workload, providing the necessary environment exports.
- “Recommend a compatibility-first transport for 32 PEs with 8 local PEs per node using the attached collector output.”
- The agent evaluates the provided system facts against the transport matrix and outputs the most compatible transport configuration, noting any assumptions made during the process.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/nvidia/nvshmem-select-remote-transport/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip nvshmem-select-remote-transport.zip -d .agents/skills
Documentation by NVIDIA NVSHMEM Team
Select an NVSHMEM Remote Transport
Purpose
Recommend one NVSHMEM transport configuration from static evidence. Separate hard eligibility from expected kernel fit, distinguish documented facts from inference.
Focus on read-only system probes and source inspection. Do not run NVSHMEM applications, correctness tests, or performance benchmarks.
Prerequisites
Require an inventory of installed transport plugins before recommending a transport that must be available in the selected installation.
Record the installed NVSHMEM version when it is readily available, but do not require patch-level version verification for ordinary transport selection or stable settings such as
NVSHMEM_REMOTE_TRANSPORT.Require exact-version evidence only when the decision depends on a release gate, known issue, changed setting, or release-specific operation or memory-mode limitation.
Use the sibling
$nvshmem-docsworkflow, or its readable../nvshmem-docs/SKILL.md, when the user requests current/exact official verification or an exact-version-sensitive decision cannot be resolved from the bundled matrix. Do not invoke it merely because the target patch differs from a source version reviewed by the matrix.Require no API key, privileged command, network access for inspection, or benchmark execution.
Inputs
Core Recommendation Inputs
Installed transport-plugin inventory, or explicit user confirmation of the available transport.
Target fabric/provider: InfiniBand, RoCE, EFA, Slingshot/CXI, UCX-managed, or NVLink-only.
For kernel/workload analysis only, selected CUDA kernel/application source, or a profile covering:
host, on-stream, or device API use;
RMA, AMO, signaling, synchronization, or collective operations;
typical and range of message sizes;
issuing threads, warps, and CTAs;
peer fan-out and expected simultaneous message rate.
Job scale: total PEs and local PEs per node.
Intended outcome: general default, latency-sensitive, throughput-oriented, or compatibility-first.
Optional
Exact NVSHMEM patch version when the decision is not release-sensitive.
NVSHMEM_PREFIX, CMake cache, module/container details, launcher command, environment, and NVSHMEM configuration files.GPU, NIC, driver, kernel, OFED/rdma-core, UCX, libfabric, GPUNetIO, or DOCA details not available through inspection.
GPU-to-NIC topology and local PE binding.
Host/device traffic mix, CPU availability, persistent-kernel behavior, batching opportunities, and completion frequency.
Required atomics, registered user buffers, VMM, DCI/DCT, multi-NIC, Spectrum-X, or custom-QP features.
Preferred or prohibited transports.
Do not re-ask facts the user already supplied. Prefer one best-evidence recommendation over a list of conditional branches. State material assumptions and unknowns, but withhold the selection configuration only when no candidate passes a hard gate or the setting itself cannot be resolved safely.
Instructions
1. Establish the Evidence Source
First establish whether the agent runs on the target system; ask unless the user already answered or supplied a complete target-system probe. Never infer this from the shell, scheduler, hostname, hardware, or repository.
If yes, inspect the complete bundled collector script before its first invocation in the current checkout. Run only that inspected file; if it is unavailable or incomplete, do not execute it. Then announce the read-only probe and invoke the collector without a prefix:
run_script("scripts/collect-transport-facts.sh")If it resolves an NVSHMEM prefix, tell the user which installation will be analyzed. Otherwise ask for an absolute prefix and rerun:
run_script("scripts/collect-transport-facts.sh", "--prefix", "/opt/nvshmem")Replace the example prefix with the resolved absolute prefix. Preserve partial output when it exits with status 2.
If the collector emits manual_follow_up_command entries, stop automatic probing and ask the user to run those commands manually in the target host or exact allocation/container used to launch NVSHMEM. Resume after the user returns their complete output. Do not repeat a command when equivalent successful output was already supplied.
If no, request complete output from bash scripts/collect-transport-facts.sh on the target, or its GPU/driver, NIC/fabric/provider, RDMA/provider-stack, and job-scale facts. Do not request an NVSHMEM prefix in this branch. Use installation evidence already supplied; otherwise eligibility remains conditional.
2. Choose the Analysis Scope
Ask one question with exactly two choices: kernel/workload analysis or system eligibility only. Skip this when already answered.
For kernel/workload analysis, inspect only the selected kernel, its reachable device call graph, and directly corresponding host/on-stream calls when source is supplied. Otherwise use the communication-profile fields in kernel-fit.md. Do not search for other kernels.
For system eligibility only, request no source/profile details. Select the compatibility-first default among candidates that pass the static system gates, emit its minimal selection configuration, and state that workload-specific performance was not assessed.
Treat assessment as read-only. Identify the job scale and optimization goal, and determine whether relevant communication can cross nodes; local P2P/NVLink traffic does not use the remote transport.
3. Classify the Communication
When kernel/workload analysis was selected, read kernel-fit.md and record:
API surface and exact operations;
remote versus local paths;
message-size distribution and whether operations are packed;
concurrent issuers, peers, and expected physical message rate;
ordering/completion frequency and QP pressure;
host/device mix, CPU availability, and persistent-kernel behavior;
scale-sensitive resource needs such as RC versus DCI/DCT.
Do not infer a high message rate merely from many logical elements. Account for application aggregation, one-thread issuance, warp coalescing, and batching.
4. Apply Hard Eligibility Gates
Read transport-matrix.md completely. Exclude a candidate when any required condition is disproven:
plugin unavailable in the selected NVSHMEM installation;
target release or required operation is known to be unsupported;
fabric/provider mismatch;
missing driver, peer-memory/DMA-BUF, GDRCopy, DevX, UCX, libfabric, GPUNetIO, or DOCA prerequisite;
incompatible memory mode, registered-buffer use, scale, or required feature.
Treat a missing fact as conditional only when it can invalidate the proposed configuration. Otherwise recommend the documented or compatibility-first default and list the missing fact under confidence and unknowns. Keep build support, runtime loadability, and hardware suitability separate.
For this skill, a loaded gdrdrv kernel module or visible /dev/gdrdrv device is sufficient positive evidence that the GDRCopy prerequisite is present. Do not require pkg-config, ldconfig, or a discovered libgdrapi path in addition, and do not treat missing userspace-library hints as evidence that GDRCopy is absent.
For IBGDA, evaluate both the GPU data path and a separate host remote transport. For GPUNetIO GDAKI, require gpunetio as the remote transport. Never enable IBGDA and GPUNetIO GDAKI together.
5. Rank Eligible Candidates
For system eligibility only, do not apply workload-fit rules. After hard eligibility, select a compatibility-first system default: IBRC for Mellanox InfiniBand or verified RoCE, native libfabric for EFA or Slingshot/CXI, a site-required UCX path, or none for a proven local-only deployment. Emit the selection block and do not claim it is the fastest. For kernel/workload analysis, apply these rules in order without assigning artificial scores:
Mellanox/IB family gate: On Mellanox InfiniBand or verified RoCE, evaluate the native IB paths first. Use IBRC as the conservative baseline, then consider IBDevX, IBGDA, or GPUNetIO only when their prerequisites and workload fit justify them.
Other native-fabric gate: Prefer libfabric with
efaon EFA andcxion Slingshot/CXI when no known release-specific operation or memory-mode limitation conflicts with the application.No remote network: Select
noneonly when all relevant PEs communicate within a peer-reachable NVLink domain and no remote path is required.Fine-grained parallel device traffic: Favor an eligible GDAKI path when many GPU issuers submit small independent remote operations and a CPU proxy would serialize them.
GDAKI choice:
Favor IBGDA when DCI/DCT connection scaling is required, GPUNetIO is absent, or the exact release has stronger required operation coverage.
Favor GPUNetIO GDAKI when its RC connection scale is acceptable and a unified GPUNetIO CPU/GPU path or verified DOCA feature is useful.
Do not treat GPUNetIO design goals as proof that it outperforms IBGDA for this workload.
Proxy-friendly traffic: Favor a proxy path for host/on-stream-dominant work, packed larger transfers, low message concurrency, or latency-sensitive isolated operations.
Mellanox proxy choice: Use IBRC as the conservative verbs default. Recommend IBDevX only when mlx5 DevX is available, its required operation coverage is sufficient, and a concrete requirement such as avoiding a GDRCopy-dependent path justifies it. Do not claim general IBDevX superiority.
UCX choice: Favor UCX for a UCX-controlled deployment or a verified release-specific capability unavailable from the native alternatives. Preserve the bundled experimental/status caveats; consult exact documentation only when the selection depends on a release-specific detail.
If two candidates remain close, choose the compatibility-first option as the recommendation, report the other as runner-up, and state that static analysis cannot establish the performance winner.
Order the recommendation and candidate discussion by the target fabric. On Mellanox InfiniBand or verified RoCE, lead with IBRC, IBDevX, and IBGDA/GPUNetIO as applicable; do not lead with libfabric. On EFA or Slingshot/CXI, lead with the matching native libfabric provider.
6. Emit Minimal Selection Configuration
Emit only the variables required to select the resolved configuration:
| Configuration | Minimal exports |
|---|---|
| IBRC | NVSHMEM_REMOTE_TRANSPORT=ibrc |
| IBDevX | NVSHMEM_REMOTE_TRANSPORT=ibdevx |
| IBGDA | NVSHMEM_REMOTE_TRANSPORT=<resolved-host-transport> and NVSHMEM_IB_ENABLE_IBGDA=1 |
| GPUNetIO CPU | NVSHMEM_REMOTE_TRANSPORT=gpunetio and NVSHMEM_GPUNETIO_ENABLE_GDAKI=0 |
| GPUNetIO GDAKI | NVSHMEM_REMOTE_TRANSPORT=gpunetio and NVSHMEM_GPUNETIO_ENABLE_GDAKI=1 |
| UCX | NVSHMEM_REMOTE_TRANSPORT=ucx |
| libfabric | NVSHMEM_REMOTE_TRANSPORT=libfabric and `NVSHMEM_LIBFABRIC_PROVIDER=<cxi |
| No remote | NVSHMEM_REMOTE_TRANSPORT=none |
Do not add HCA mapping, QP counts, batching, NIC handlers, memory-mode changes, or provider tuning to this block. Put mandatory compatibility preconditions outside the block and route mapping/tuning to the appropriate sibling skill.
Default to emitting the minimal selection block for the recommended best-evidence configuration. Withhold it only when no viable candidate passes the hard gates or a required value cannot be resolved, such as a missing plugin, fabric/provider mismatch, or mandatory incompatible memory mode. Do not withhold merely because the patch version, workload profile, optional capability, or performance winner is unknown.
7. Return the Recommendation
Use this exact section order:
Recommendation: <transport or combined host/GPU configuration; conditional if necessary>
Selection configuration
<minimal export block, or why it is withheld>
System eligibility evidence
<version, plugins, fabric/provider, driver/module/dependency evidence>
Kernel-fit evidence
<API surface, operation shape, sizes, concurrency, fan-out, completion, scale>
Runner-up
<candidate and the fact or tradeoff that kept it second>
Excluded candidates
<candidate: hard gate or unresolved prerequisite>
Confidence and unknowns
<high|medium|low; documented facts versus inference; missing evidence>
Static follow-up checks
<read-only checks or exact facts still needed; never benchmarks>State the documentation version consulted when live verification was used. Describe performance as expected fit, not an assured result.
Routing
Route exact HCA selection and PE-to-NIC mapping to
$nvshmem-configure-nic-pe-mappingwhen available.Route missing packages, plugins, or builds to
$nvshmem-installwhen available.Route runtime initialization failures to
$nvshmem-troubleshoot-and-report-bugswhen available.If a sibling skill is unavailable, provide the boundary and required next evidence without inventing its behavior.
Available Script
| Script | Purpose | Arguments |
|---|---|---|
scripts/collect-transport-facts.sh | Collect read-only NVSHMEM, GPU, kernel-module, RDMA, and provider evidence from a target compute node. | Optional --prefix PATH |
Examples
Use $nvshmem-select-remote-transport. Inspect this target compute node and src/exchange.cu, then recommend a throughput-oriented transport for 256 PEs with 8 local PEs per node.Use $nvshmem-select-remote-transport with the attached collector output and communication profile. Recommend a compatibility-first transport for 32 PEs with 8 local PEs per node, emit the minimal selection exports, and state any assumptions.
Guardrails
Do not run NVSHMEM binaries other than the read-only
nvshmem-info -nquery.Do not launch distributed jobs, allocate nodes, benchmark transports, or mutate system/application state.
Do not recommend a plugin merely because its source exists; require evidence that the selected installation contains it.
Do not convert absent evidence into compatibility.
Do not claim that Ethernet link-layer evidence alone proves working RoCE.
Do not let kernel heuristics override an incompatible fabric/provider or missing prerequisite.
Do not emit both IBGDA and GPUNetIO GDAKI enables.
Troubleshooting
If the collector exits with status 2, preserve its output and resolve only the missing facts listed under
diagnostics.When
nvidia-smi,ibstatus,ibv_devinfo, orrdma linkfails or cannot see devices while static sysfs/module evidence suggests hardware exists, treat device access as unresolved rather than treating the hardware as absent. Ask the user to run the failed commands manually in the target host or exact launch environment; do not retry with privileges or infer eligibility from host-visible sysfs alone.If a plugin is missing or fails to initialize, verify the selected prefix and dependencies, then route runtime failures to
$nvshmem-troubleshoot-and-report-bugs.If a specialized capability remains conditional, recommend the best supported fallback and emit its configuration. Ask for exact version, provider, or operation evidence only when it could change the setting or no fallback passes the hard gates.
Limitations
Static analysis estimates architectural fit; it does not validate runtime correctness, measure performance, or guarantee the fastest transport.
Some compatibility details are release-sensitive; verify the exact target release only when the recommendation depends on one of them.
The collector describes one node and one selected installation. It does not prove cluster-wide uniformity, working RoCE, or complete operation coverage.
Incomplete evidence lowers confidence and must be disclosed, but does not by itself prevent a best-evidence recommendation or minimal exports.
<!-- ci trigger -->
Files
- ATTRIBUTION.mdAdded by AutoGineer964 B
- BENCHMARK.md9.9 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md16.0 KiB
- evals/evals.json15.8 KiB
- evals/files/efa.txt609 B
- evals/files/fine-grained.cu584 B
- evals/files/mellanox-gpunetio.txt625 B
- evals/files/mellanox-ibgda.txt735 B
- evals/files/missing-plugin.txt462 B
- evals/files/mixed-api.cu616 B
- evals/files/nvlink-only.txt584 B
- evals/files/packed-put.cu431 B
- evals/files/slingshot-cxi.txt545 B
- evals/files/ucx-only.txt543 B
- evals/files/unknown-version.txt530 B
- references/kernel-fit.md8.5 KiB
- references/transport-matrix.md13.5 KiB
- scripts/collect-transport-facts.shScript17.5 KiB
- skill-card.md3.9 KiB
- skill.oms.sig7.8 KiB
references/transport-matrix.md
NVSHMEM Transport Eligibility Matrix
Contents
Evidence classes
Selection model
Common gates
Transport matrix
Selection configurations
Candidate-specific guidance
Operation and memory-mode gates
Source basis
Evidence Classes
Documented: stated by the cited public NVSHMEM documentation for the displayed release.
Source-derived: observed in the reviewed NVSHMEM source; verify against the target release.
Inference: a recommendation derived from documented/source behavior and the supplied workload.
Unknown: not established by available evidence; never treat as eligible.
Selection Model
Evaluate three independent layers:
Built: the selected installation contains the required transport plugin and compatible device code.
Runnable: the plugin can load and all hardware, provider, library, driver, and memory-registration requirements are met.
Suitable: the kernel/API pattern is expected to fit the transport architecture.
A source-tree CMake option proves only a possible build. A plugin filename proves installation, not loadability. A compatible NIC proves neither plugin availability nor operation coverage.
Common Gates
Version and Plugin Inventory
Record the installed version from
nvshmem-info -n, installed headers, a package manifest, or an explicit user value when readily available. Patch-level verification is required only for a decision that depends on a release-specific gate, known issue, setting change, or operation limitation.Look for
nvshmem_transport_<name>.so*in the selected prefix. Do not merge plugins from different prefixes orLD_LIBRARY_PATHentries.Treat IBGDA specially: it is enabled with
NVSHMEM_IB_ENABLE_IBGDA=1; it is not a value ofNVSHMEM_REMOTE_TRANSPORT.Treat GPUNetIO GDAKI specially: it requires both the GPUNetIO remote plugin and GPUNetIO-capable device code.
NVSHMEM_REMOTE_TRANSPORTacceptsibrc,ibdevx,gpunetio,ucx,libfabric, andnone. Use these stable documented values unless there is evidence that the target release predates a candidate or changed the setting.
Remote Path
Remote transport selection affects network-reachable peers. Peer-reachable NVLink/PCIe traffic uses the local P2P path instead.
Select
noneonly when every relevant peer is local and peer-reachable and no API requires a remote-network fallback.A single-node launch does not alone prove that every PE pair is peer-reachable.
Operation Coverage
Verify release-specific RMA, AMO, signal, synchronization, host, on-stream, custom-QP, and registered-buffer restrictions when the application actually requires them. Ordinary RMA selection does not need an exhaustive exact-release operation audit.
Do not generalize one successful put benchmark to atomics, gets, put-with-signal, host APIs, or user-registered buffers.
Collectives may route through NCCL, NVLS, multicast, P2P, or point-to-point algorithms. Analyze the actual remote point-to-point path rather than assigning collective performance to the selected plugin automatically.
GDRCopy Evidence
Treat a loaded
gdrdrvkernel module or visible/dev/gdrdrvdevice as sufficient evidence that GDRCopy is present for transport selection.pkg-configand loader-cache entries are optional supporting hints. Their absence does not disprove a custom GDRCopy installation and must not exclude IBRC or independently justify preferring IBDevX.
Transport Matrix
| Candidate | Architecture | Primary fabric/provider gate | Important runtime/build gates | Expected fit | Important caveats |
|---|---|---|---|---|---|
| IBRC | CPU-proxy, verbs RC | InfiniBand or verified RoCE | IBRC plugin, verbs/OFED, GPUDirect RDMA registration path; GDRCopy for documented remote atomic coverage | Conservative Mellanox default; packed or lower-concurrency remote traffic | Single proxy serializes device requests; do not assume Ethernet means configured RoCE |
| IBDevX | CPU-proxy, direct mlx5 DevX RC | mlx5 InfiniBand or verified RoCE | IBDevX plugin, mlx5 DevX/mlx5dv, exact device/firmware support | Mellanox proxy path when DevX is explicitly available and required coverage is verified | Off by default in source builds reviewed; no general public performance superiority claim |
| IBGDA | GPU-initiated GDAKI plus separate host transport | Mellanox InfiniBand or supported RoCE | IBGDA plugin/device code, GDAKI prerequisites, host remote plugin, supported NIC handler | Many fine-grained parallel device operations; persistent GPU communication; DCI/DCT scale | Individual GPU WQE construction can have higher isolated latency; RC/DC resource and exact-release limitations matter |
| GPUNetIO CPU | CPU data path through GPUNetIO | Mellanox InfiniBand or verified RoCE | GPUNetIO plugin; GPUNetIO library bundled or installed | Unified GPUNetIO deployment without GPU data path | Verify exact operation and platform coverage |
| GPUNetIO GDAKI | GPU-initiated GPUNetIO path plus GPUNetIO CPU path | Mellanox InfiniBand or supported RoCE | GPUNetIO plugin/device code, GDAKI prerequisites; optional DOCA for advanced features | Fine-grained parallel device traffic when RC scale is acceptable; unified CPU/GPU path | RC-oriented; verify connection-scale coverage for the target release |
| UCX | CPU-proxy through UCP | UCX-supported fabric selected by configured transports | UCX plugin and compatible UCX built with required thread/device-memory support | UCX-managed sites or verified capability/fallback unavailable natively | Public docs describe UCX transport as experimental; GDRCopy/atomic path is configuration-specific |
| libfabric | CPU-proxy through libfabric | Native efa, cxi, or verified verbs provider | libfabric plugin, matching provider, provider-specific memory registration and launcher rules | First choice for AWS EFA and Slingshot/CXI when supported | Exact-release VMM, registered-buffer, operation, and EFA environment limitations are hard gates |
| none | No remote plugin | All relevant PE pairs local and peer-reachable | P2P path present; no remote-network requirement | PCIe/NVLink-only deployments | Disables remote fallback; do not choose from node count alone |
Selection Configurations
Use lowercase values as documented. Preserve the user's configuration mechanism when it is a config file rather than shell exports.
IBRC
export NVSHMEM_REMOTE_TRANSPORT=ibrcIBDevX
export NVSHMEM_REMOTE_TRANSPORT=ibdevxIBGDA
export NVSHMEM_REMOTE_TRANSPORT=<resolved-host-transport>
export NVSHMEM_IB_ENABLE_IBGDA=1The host transport must be independently eligible for host/on-stream remote operations. Do not
set NVSHMEM_GPUNETIO_ENABLE_GDAKI=1 in the same configuration.
GPUNetIO CPU Path
export NVSHMEM_REMOTE_TRANSPORT=gpunetio
export NVSHMEM_GPUNETIO_ENABLE_GDAKI=0GPUNetIO GDAKI
export NVSHMEM_REMOTE_TRANSPORT=gpunetio
export NVSHMEM_GPUNETIO_ENABLE_GDAKI=1UCX
export NVSHMEM_REMOTE_TRANSPORT=ucxDo not synthesize UCX_TLS or other UCX tuning from transport selection alone.
libfabric
export NVSHMEM_REMOTE_TRANSPORT=libfabric
export NVSHMEM_LIBFABRIC_PROVIDER=<cxi|efa|verbs>Provider-specific mandatory compatibility settings belong in preconditions, not in the minimal selection block, unless the user explicitly asks for a full launch configuration.
No Remote Transport
export NVSHMEM_REMOTE_TRANSPORT=noneCandidate-Specific Guidance
IBRC
Documented: IBRC is the default remote transport.
Documented: proxy-based device operations are serviced by one NVSHMEM CPU proxy and benefit from packing small logical transfers into larger operations.
Documented: IBRC uses GDRCopy for remote atomic support in the documented configuration.
Inference: prefer IBRC when broad compatibility matters more than potential high-message-rate GDAKI benefits.
Exclude or mark conditional when required non-native/float atomics lack exact-release coverage.
IBDevX
Source-derived: IBDevX is a CPU-access transport that directly creates/programs mlx5 objects through DevX/
mlx5dv.Source-derived: reviewed builds default IBDevX support off, so require plugin evidence.
Source-derived: its plugin does not use the common GDRCopy component in the reviewed build configuration.
Inference: confirmed absence of
gdrdrvmay justify considering IBDevX for a GDRCopy-dependent requirement, but missingpkg-configor loader-cache hints alone may not.Never rank it above IBRC solely because it uses a lower-level interface.
IBGDA
Documented: GDAKI moves control and data-plane network submission to the GPU and can increase the message rate for many small transfers submitted in parallel.
Documented: a GPU thread creates a WQE more slowly than a CPU thread, which can increase latency for an isolated message.
Documented: IBGDA supports RC and DCI/DCT tuning, trading latency and connection memory/scale.
Documented: Mellanox NIC, MOFED 5.0+, NVIDIA driver 510.40.3+, and an accepted DMA-BUF/peer-memory registration path are prerequisites.
Check default GPU doorbell mapping versus CPU-assisted NIC-handler requirements. CPU-assisted IBGDA can introduce a GDRCopy requirement.
Favor DCI/DCT when RC connections per peer would be prohibitive at the supplied PE scale; do not infer the threshold without resource evidence.
GPUNetIO
Documented: GPUNetIO provides an optional GDAKI path.
Documented:
NVSHMEM_GPUNETIO_ENABLE_GDAKI=1requiresNVSHMEM_REMOTE_TRANSPORT=gpunetio.Documented: the open path does not require the full DOCA SDK; DOCA 3.4+ is optional for documented advanced features such as DDP.
Source-derived for the reviewed release: GPUNetIO exposes CPU read/write/atomic capabilities and adds GPU capabilities when GDAKI is enabled.
Source/design limitation: device initiation is RC-oriented, whereas IBGDA offers DCI/DCT. Prefer verified required DOCA functionality, unified CPU/GPU deployment, or installed availability.
UCX
Documented: UCX is a proxy-based transport and requires a compatible UCX build; public installation guidance specifies UCX 1.10+ with multithreading and device-memory support for the documented release.
Documented: public documentation labels UCX transport experimental and records platform-specific known issues; consult the exact release.
Documented: release notes describe a UCX socket-based atomic path for systems without InfiniBand in a specific PCIe scenario.
Source-derived: atomic handling varies between remote UCX atomics and local proxy processing and may require GDRCopy.
Prefer site/provider requirements or verified capabilities, not a generic belief that UCX is more portable or faster.
libfabric
Documented: provider values are
cxi,efa, andverbs; the default iscxi.Documented: NVSHMEM supports Slingshot-11 through CXI and AWS EFA through libfabric.
Treat the native provider as a fabric gate. Do not rank a Mellanox
verbsprovider over the native IB transports without a concrete site requirement.
Operation and Memory-Mode Gates
Before ranking, make a row for every required operation family:
| Requirement | Evidence to resolve |
|---|---|
| Device put/get | Exact API/scope, message sizes, remote path, plugin functional coverage |
| Atomics | Type/width/operation, native versus staged/proxy path, GDRCopy/provider requirements |
| Put-with-signal | Exact transport support and completion/ack path |
| Host/on-stream APIs | Host transport capabilities; IBGDA alone is insufficient |
| Registered user buffers | Exact release and provider limitation |
| CUDA VMM heap | Exact release/provider support; libfabric limitation |
| Custom QPs | Exact release and plugin support; connection type and resource scale |
| Multi-NIC | Transport/version support and separate NIC-mapping workflow |
| Collectives | Actual chosen algorithm/backend; do not assume point-to-point plugin controls it |
If a mandatory application requirement is unknown, prefer a broadly supported fallback, emit its minimal selection configuration, and mark the specialized capability conditional. Withhold exports only when no candidate is known to satisfy a non-negotiable requirement.
Source Basis
Primary public sources reviewed:
NVSHMEM Device APIs: https://docs.nvidia.com/nvshmem/release-notes-install-guide/best-practice-guide/apis.html
NVSHMEM Performance: https://docs.nvidia.com/nvshmem/release-notes-install-guide/best-practice-guide/performance.html
NVSHMEM Installation Guide: https://docs.nvidia.com/nvshmem/release-notes-install-guide/install-guide/abstract.html
Using NVSHMEM: https://docs.nvidia.com/nvshmem/api/using.html
Environment Variables: https://docs.nvidia.com/nvshmem/api/gen/env.html
NVSHMEM 3.7.0 Release Notes: https://docs.nvidia.com/nvshmem/release-notes-install-guide/release-notes/release-3700.html
Development-source areas reviewed for architecture and configuration shape:
src/host/transport/transport.cppsrc/modules/transport/{ibrc,ibdevx,ibgda,gpunetio,ucx,libfabric}src/modules/transport/common/env_defs.htransport plugin CMake definitions
Recheck source-derived claims when the recommendation depends on a release-sensitive detail. A patch-version difference alone does not require live documentation lookup for an ordinary stable transport setting.
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.
Needs: Needs an API key, Needs Node.js
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
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 NVSHMEM Team
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/nvshmem-select-remote-transport · 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 NVSHMEM Team or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download nvshmem-select-remote-transport.zip