Demystifying NVSHMEM: A System-Level Analysis on Symmetric Memory and Device-Initiated Operations in GPU Communication — Detailed Summary

Yijun Ma, Siyuan Shen, Tiancheng Chen, Akhil Langer, Jiri Kraus, Benjamin Glick, Craig Belusar, Jeff Hammond, Torsten Hoefler | ETH Zürich / NVIDIA Corporation | Preprint, arXiv:2606.05951v1 [cs.DC], 4 Jun 2026 | (* Ma and Shen contributed equally)**

Per-section summary organized by the paper's headings. Each section includes paragraph-level bullet points and exact quantitative results where the paper provides them. The study targets NVSHMEM version 3.3.9 throughout.


Abstract


I. Introduction


II. Background

II.A Essential Concepts

II.B GPU Communication Libraries


III. NVSHMEM Overview

III.A Teams

III.B API and Dual-Interface Design

Table I — NVSHMEM API groups by availability and functionality

API group Host/Device Availability Description
Setup / exit Mixed Initialize/finalize the library, bootstrap jobs, handle exceptional termination.
Memory management Host-side Allocate, free, align symmetric objects; register selected local buffers.
Team management Mixed, mostly host-side Define subgroups, query team-relative PE identities, translate PE numbers, create/destroy teams.
One-sided RMA Both One-sided data movement: put, get, scalar p/g, etc.
Atomics Both Remote atomic read-modify-write: fetch, add, compare-and-swap, bitwise.
Memory ordering Both Ordering and completion primitives: fence and quiet.
Synchronization Mixed, mostly device-side Value-based synchronization: wait and test.
Collectives Both Coordinated multi-PE operations: AllReduce, Broadcast, etc.

IV. Memory Management

IV.A Initialization

IV.B Memory Allocation and Registration

IV.C Mapping and Remote Address Computation

Equation (1):

dest_remote = peer_heap_base_p2p_[remote_pe] + (dest_local − heap_base_)

V. One-Sided Communication

V.A Fast Path: Direct GPU Memory Access

V.B Slow Path: IBGDA and Proxy Execution


VI. Collective Communication

Table II — Collective algorithms in NVSHMEM (v3.3.9). M = message size, N = number of PEs, S = ⌈M/B_seg⌉ = number of scratch-limited segments in segmented AllReduce. NVLS-named algorithms rely on NVSwitch and NVLink SHARP (NVLS) for in-network operations.

Collective Algorithm LL / LL128 Communication Volume Latency, # Synchronizations
Broadcast Bruteforce put-to-all No O(MN) O(1)
k-ary flat tree LL only O(MN) O(log_k N)
Topology-aware hierarchical tree LL only O(MN) O(log_k N_remote + log_k N_intra)
AlltoAll P2P / general all-push No O(MN²) O(1)
FCollect (AllGather) NVLS one-shot LL only O(MN²) O(1)
Generic all-push Both O(MN²) O(1)
Reduce (AllReduce) NVLS one-shot No O(MN²) O(1)
NVLS two-shot No O(MN) O(1)
k-ary recursive exchange No O(MN × k log_k N) O(log_k N)
Hierarchical fcollect Inherited from FCollect O(MN²) O(1)
(Segmented) linear AllReduce No O(MN²) Direct LD/ST: O(1); Segmented: O(SN)
ReduceScatter NVLS one-shot No O(MN²) O(1)
Generic all-push No O(MN²) O(1)

VI.A pSync Buffer

VI.B Low Latency (LL) and LL128 Protocols

VI.C Algorithm Selection

VI.D Support for Multiple Cooperative Thread Arrays (CTAs)

VI.E Barrier and Synchronization


VII. Microbenchmarking

VII.A Experimental Setup

Component Value
Cluster CoreWeave H200
GPUs per node 8 × NVIDIA H200 SXM5, 144 GB HBM3e each
Intra-node NVLink-4; 900 GB/s bidirectional per GPU; NVLink-SHARP (NVLS) multicast
Inter-node ConnectX-7 InfiniBand, 8 NICs per node (single-rail ref ~50 GB/s; 8×50 = 400 GB/s aggregate)
Software CUDA 13.0.88; NVSHMEM 3.3.9 (built from public source)
RMA config NVSHMEM device P2P perftests: 32 CTAs × 256 threads/CTA
Inter-node scalar p/g tuned IBGDA: NVSHMEM_IBGDA_NUM_RC_PER_PE=64, 64 CTAs × 1024 threads/CTA
AllReduce sum on float, captured/replayed with CUDA Graphs
Baselines NCCL via official nccl-tests — NCCL Ring and NCCL NVLS
Trials averaged over 8 trials (stddev too small to be visible in most cases)

VII.B One-Sided RMA

VII.C Collective: AllReduce


VIII. Case Study: DeepEP

VIII.A High-Throughput (HT) Kernels

VIII.B Low-Latency (LL) Kernels

VIII.C Performance (DeepEP)



X. Conclusion


Limitations (as stated by the authors)


Open Problems / Discussion Points

  1. NCCL is narrowing the gap via its device API and GIN interface; whether NVSHMEM retains a long-term advantage as a lower-level one-sided RMA substrate is an open question (the GIN paper suggests it still has a meaningful advantage as a low-level substrate).
  2. NVSHMEM's execution model does not fully exploit GPU parallelism (single-threadgroup collectives, no public _grid variants) — a design tension between grid-wide synchronization cost and kernel-relaunch cost.
  3. Lack of hierarchical composition (single symmetric heap, flat remote-memory view) vs NCCL's explicit scale-up/scale-out distinction.
  4. Device-initiated PGAS is a broader vendor trend (rocSHMEM/AMD, Intel SHMEM, GICC/Slingshot) — portability and convergence across compiler stacks, memory models, and transports is an open area.
  5. NVSHMEM remains relevant for fine-grained, irregular, data-dependent communication (sparse/MoE/expert-parallel, stencil halo, irregular graph) where collective libraries are inefficient — as shown by DeepEP, which uses NVSHMEM only at critical RDMA-path points while building its own transport pipeline on top.

Note on NCCL Tuning

The paper directly documents NVSHMEM's runtime collective-algorithm choice as a rule-based decision tree keyed on capability checks, datatype/scope constraints, scratch-space availability, and fixed message-size thresholds (Section VI-C) — the same kind of static threshold logic NCCL uses to pick Ring vs. NVLS vs. Tree. The microbenchmarks make the selection stakes concrete: intra-node, the on-stream NVLS path reaches 264 GB/s while the single-CTA device-block AllReduce caps at 30 GB/s, yet that device path is the latency winner for small messages (3.8–7.1 µs up to 64 KiB vs NCCL Ring's 4.7–8.9 µs). It also reaffirms that LL128's 128-byte atomic stores are safe only over NVLink and unsafe on PCIe, a protocol-eligibility constraint that any algorithm/protocol selector must respect when the interconnect changes.