Skip to content

feat: on arm64 (Grace-Blackwell GB200/GB300) skip fabric manager and install nvidia-imex#170

Open
xuexu6666 wants to merge 2 commits into
mainfrom
xuxue/skip-fabric-manager-arm64-gb
Open

feat: on arm64 (Grace-Blackwell GB200/GB300) skip fabric manager and install nvidia-imex#170
xuexu6666 wants to merge 2 commits into
mainfrom
xuxue/skip-fabric-manager-arm64-gb

Conversation

@xuexu6666

@xuexu6666 xuexu6666 commented Jul 17, 2026

Copy link
Copy Markdown

On arm64 Grace-Blackwell (GB200/GB300), cross-node NVLink is coordinated by IMEX, not a node-local fabric manager. This PR makes the aks-gpu image do the right thing on GB, in the same code path where x86 installs fabric manager:

1. Skip fabric manager on arm64

The FM installer looked for fabricmanager-linux-aarch64-… (from uname -m), which doesn't exist (the redist archive is sbsa) → exit 127 → CSE retries the whole container → ~780s timeout → exit 84ensureKubelet never runs → the GB node never joins the cluster. GB has no node-local fabric manager, so FM is now skipped on arm64 (download + install).

2. Install nvidia-imex on arm64

nvidia-imex (the cross-node NVLink / ComputeDomains coordinator) is not in the driver .run or the fabric-manager redist — it ships only as a separate deb in the CUDA repo. So:

  • download.sh bundles the version-matched nvidia-imex arm64 deb into the image, resolving the exact filename from the repo Packages index (the deb revision suffix, e.g. -1ubuntu1, varies by version), OS path adapted via VERSION_ID.
  • install.sh installs it at node boot via dpkg -i --force-depends (the deb declares nvidia-modprobe, which the runfile driver provides on-disk but not as a deb) and leaves the node-wide nvidia-imex.service OFF — IMEX is orchestrated per-ComputeDomain by the NVIDIA DRA driver, which CDI-injects the host binary into its daemon pods.

Validation

Proven end-to-end on a managed-driver GB300 cluster: with nvidia-imex installed, the DRA ComputeDomain reaches Ready and cross-node MNNVL NCCL all_reduce runs via P2P/MNNVL at ~698 GB/s (peak). x86 behavior is unchanged.

arm64 cuda nodes are the Grace-Blackwell SKUs (GB200/GB300), which have no
node-local fabric manager -- the NVLink fabric is managed out-of-band via IMEX.
The driver container should neither install nor bundle fabricmanager there.

Today device_init() runs the fabricmanager package installer for every cuda
node. On arm64 it computes NVIDIA_FM_ARCH from $ARCH (uname -m = "aarch64")
and then only remaps to "sbsa" when the value equals "arm64" -- which never
matches -- so it looks for /opt/gpu/fabricmanager-linux-aarch64-<ver>/... which
does not exist (the tarball download.sh bundles is named "sbsa"). The installer
exits 127; installGPUDriverImage retries the whole container until CSE hits its
~780s timeout and exits 84, so ensureKubelet never runs and the node never joins
the cluster. Surfaced by the GB300 managed-driver (--gpu-driver Install) e2e.

Fix: gate fabric manager to x86_64 only.
- install.sh: run fm_run_package_installer.sh only when ARCH == x86_64; drop the
  dead arm64->sbsa remap.
- download.sh: download/bundle the fabricmanager tarball only when
  TARGETARCH == amd64, so the arm64 image no longer ships an unused tarball.
@xuexu6666
xuexu6666 force-pushed the xuxue/skip-fabric-manager-arm64-gb branch from 9aa3972 to 0865ff8 Compare July 17, 2026 02:38
@xuexu6666 xuexu6666 changed the title fix: skip fabric manager on arm64 (Grace-Blackwell GB200/GB300) feat: on arm64 (Grace-Blackwell GB200/GB300) skip fabric manager and install nvidia-imex Jul 18, 2026
GB uses IMEX -- not a node-local fabric manager -- to coordinate cross-node
NVLink (MNNVL / ComputeDomains). The nvidia-imex daemon ships only as a separate
deb in the CUDA repo (not in the driver .run or the fabric-manager redist), so:

- download.sh bundles the version-matched nvidia-imex arm64 deb into the image,
  resolving the exact filename from the repo Packages index (the revision suffix
  varies by version). Skipped on x86 (which uses fabric manager instead).
- install.sh installs it at node boot via dpkg -i --force-depends (the deb
  declares nvidia-modprobe, provided by the runfile driver rather than a deb),
  and leaves the node-wide nvidia-imex.service OFF -- IMEX is orchestrated per
  ComputeDomain by the NVIDIA DRA driver, not run cluster-wide from the host.

The host binary must be present so the DRA driver can CDI-inject it into its
per-workload IMEX daemon pods. Pairs with the fabric-manager arm64 skip: on GB,
skip FM and install IMEX in the same code path where x86 installs FM.
@xuexu6666
xuexu6666 force-pushed the xuxue/skip-fabric-manager-arm64-gb branch from ff3834c to f3a3752 Compare July 18, 2026 01:03
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.

1 participant