Files
TheRock/rocm-systems/projects/rccl/examples/05_symmetric_memory
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00
..

NCCL Symmetric Memory Examples

Overview

This directory contains minimal examples that demonstrate NCCL symmetric memory windows for improving performance of collective operations when all ranks use consistent memory layouts.

Examples

01_allreduce

AllReduce with Symmetric Memory Windows

  • Pattern: Register symmetric windows per rank and use them for collectives
  • API: ncclCommWindowRegister, ncclCommWindowDeregister, ncclMemAlloc, ncclAllReduce
  • Use case: Large-scale collectives with consistent buffer layouts across ranks
  • Key features:
    • Buffers allocated via ncclMemAlloc for symmetric compatibility
    • Windows registered as NCCL_WIN_COLL_SYMMETRIC
    • Collective operations executed on symmetric windows
    • Correct deregistration and cleanup

Choosing the Right Pattern

Scenario : Large-scale training with consistent memory patterns Addresses : Low-latency, high-bandwidth collectives on supported systems Dependencies : pthread or MPI

Why Symmetric Windows?

Symmetric windows enable NCCL to apply optimized collective protocols when all ranks use consistent layouts. The memory needs to be allocated through the HIP Virtual Memory Management (VMM) API and registered with NCCL.

// Allocate using NCCL provided convenience function and register symmetric windows
NCCLCHECK(ncclMemAlloc(&buffer, size_bytes));
NCCLCHECK(ncclCommWindowRegister(comm, buffer, size_bytes, &win, NCCL_WIN_COLL_SYMMETRIC));

// Collective using symmetric windows
NCCLCHECK(ncclAllReduce(buffer, buffer, count, ncclFloat, ncclSum, comm, stream));

// Deregister and free
NCCLCHECK(ncclCommWindowDeregister(comm, win));
NCCLCHECK(ncclMemFree(buffer));

Building

Quick Start

# Build example by directory name
make 01_allreduce

Individual Examples

# Build and run AllReduce with symmetric windows
cd 01_allreduce && make
./allreduce_sm

References