Skip to content

docker: add arm64 (sbsa) nccl2.30 build variant and wire into release CI - #4

Merged
leon-scitix merged 2 commits into
scitix:siclfrom
Peng-Xu:docker/nccl2.30-patched
Aug 6, 2026
Merged

leon-scitix merged 2 commits into
scitix:siclfrom
Peng-Xu:docker/nccl2.30-patched

Conversation

@Peng-Xu

@Peng-Xu Peng-Xu commented Aug 6, 2026

Copy link
Copy Markdown

Summary

Adds an arm64 (SBSA) build of the patched NCCL 2.30.7 .run package and wires it into the release CI, alongside a few hardening fixes to the existing x86 nccl2.30 image.

Changes

  • New docker/Dockerfile.cuda13.x.ubuntu22.04.nccl2.30.arm64: same patched NCCL 2.30.7 source build as the x86 variant, with:
    • CUDA apt repo switched to sbsa via ARG CUDA_REPO_ARCH=sbsa (datacenter ARM: Grace / GH200 / Ampere Altra).
    • .run package name tagged with $(uname -m) (aarch64) so it does not collide with amd64 artifacts.
  • .github/workflows/release.yml: each matrix entry now carries runs-on/platform; added the arm64 variant on the native ubuntu-22.04-arm runner (avoids slow amd64 + QEMU emulation).
  • Hardening of the x86 Dockerfile.cuda13.x.ubuntu22.04.nccl2.30: raise NCCL_MAX_IB_DEVS 128 → 400, unset empty NVCC_GENCODE so make uses NCCL defaults, and copy NCCL headers recursively (cp -a build/include/.).

Validation

  • docker buildx --call check passes on the arm64 Dockerfile (lint clean).
  • Base image nvidia/cuda:13.1.0-devel-ubuntu22.04 has an arm64 manifest; sbsa CUDA keyring URL returns 200.
  • release.yml parses as valid YAML (4 matrix entries).
  • Full compile must run on a native arm64 host/runner (not validated under QEMU).

Peng-Xu and others added 2 commits July 13, 2026 16:26
…m source

Add a dedicated Dockerfile (Dockerfile.cuda13.x.ubuntu22.04.nccl2.30) that
builds NCCL 2.30.7 from source instead of installing the pinned apt binary.
During the build it patches the NET/IB device enumeration to guard the inner
port / data-direct loops with `ncclNIbDevs < MAX_IB_DEVS`, and raises
MAX_IB_DEVS to 128.

This fixes the out-of-bounds write / crash that happens when a host exposes
more active IB/RoCE ports than MAX_IB_DEVS (observed on a 54-active-port
node). The existing Dockerfiles and their pinned NCCL versions are left
untouched; this is an additive, separate variant.

New build args: NCCL_SRC_REF, NCCL_MAX_IB_DEVS, NVCC_GENCODE.
- Add Dockerfile.cuda13.x.ubuntu22.04.nccl2.30.arm64: same patched NCCL
  2.30.7 source build as the x86 variant, with the CUDA apt repo switched
  to sbsa (ARG CUDA_REPO_ARCH=sbsa) and the .run package name tagged with
  $(uname -m) (aarch64) so it does not collide with amd64 artifacts.
- release.yml: give each matrix entry runs-on/platform; add the arm64
  variant on the native ubuntu-22.04-arm runner (avoids amd64+QEMU).
- Harden the x86 nccl2.30 Dockerfile: raise NCCL_MAX_IB_DEVS 128->400,
  unset empty NVCC_GENCODE so make uses NCCL defaults, and copy NCCL
  headers recursively (cp -a build/include/.) to include subdirs.
@leon-scitix
leon-scitix merged commit 410ea75 into scitix:sicl Aug 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants