Skip to content

Commit f3a3752

Browse files
committed
feat: install nvidia-imex on arm64 (Grace-Blackwell GB200/GB300)
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.
1 parent 0865ff8 commit f3a3752

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

download.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,40 @@ install_fabric_manager () {
4848
mv /opt/gpu/fm_run_package_installer.sh /opt/gpu/fabricmanager-linux-${NVIDIA_FM_ARCH}-${DRIVER_VERSION}/sbin/fm_run_package_installer.sh
4949
}
5050

51+
install_imex () {
52+
# nvidia-imex is the cross-node NVLink (MNNVL / ComputeDomains) coordinator for
53+
# Grace-Blackwell. It is NOT in the driver .run or the fabric-manager redist -- it
54+
# ships only as a separate deb in the CUDA repo. Bundle the version-matched deb into
55+
# the image; it is installed at node boot (see install.sh device_init). The exact deb
56+
# revision suffix (e.g. -1ubuntu1) varies by version, so resolve the filename from the
57+
# repo Packages index rather than hard-coding it.
58+
local repo="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${VERSION_ID//./}/sbsa"
59+
local deb
60+
# NB: awk must read to EOF (no early `exit`) -- exiting mid-stream closes the pipe and
61+
# SIGPIPEs curl, which `set -o pipefail` would turn into a build failure. Gate on a flag
62+
# to keep only the first match instead.
63+
deb="$(curl -fsSL "${repo}/Packages" \
64+
| awk -v p="nvidia-imex_${DRIVER_VERSION}-" '$1=="Filename:" && index($2,p) && !f{print $2; f=1}')"
65+
if [[ -z "${deb}" ]]; then
66+
echo "nvidia-imex ${DRIVER_VERSION} not found in ${repo}"
67+
exit 1
68+
fi
69+
curl -fsSLO "${repo}/${deb#./}"
70+
mv "$(basename "${deb}")" /opt/gpu/
71+
}
72+
5173
# download fabricmanager for nvlink based systems, but skip it on arm64:
5274
# arm64 = Grace-Blackwell (GB200/GB300), which uses IMEX, not a node-local FM.
5375
if [[ "${DRIVER_KIND}" == "cuda" && "${TARGETARCH}" != "arm64" ]]; then
5476
install_fabric_manager
5577
fi
5678

79+
# download nvidia-imex for nvlink based arm64 systems (Grace-Blackwell GB200/GB300):
80+
# GB uses IMEX (not a node-local fabric manager) to coordinate cross-node NVLink.
81+
if [[ "${DRIVER_KIND}" == "cuda" && "${TARGETARCH}" == "arm64" ]]; then
82+
install_imex
83+
fi
84+
5785

5886
# configure nvidia apt repo to cache packages
5987
curl -fsSLO https://nvidia.github.io/libnvidia-container/gpgkey

install.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,18 @@ device_init() {
166166
bash /opt/gpu/fabricmanager-linux-${ARCH}-${DRIVER_VERSION}/sbin/fm_run_package_installer.sh
167167
fi
168168

169+
# install nvidia-imex on arm64 (Grace-Blackwell): the cross-node NVLink (MNNVL)
170+
# coordinator that GB uses in place of a node-local fabric manager. The binary must be
171+
# present on the host so the NVIDIA DRA driver (ComputeDomains) can inject it into its
172+
# per-workload IMEX daemon pods. --force-depends: the deb declares nvidia-modprobe,
173+
# which is provided by the runfile driver (present on disk) rather than as a deb.
174+
# The node-wide nvidia-imex.service stays OFF -- IMEX is orchestrated per ComputeDomain
175+
# by DRA, not run cluster-wide from the host.
176+
if [[ "${DRIVER_KIND}" == "cuda" && "${ARCH}" == "aarch64" ]]; then
177+
dpkg -i --force-depends /opt/gpu/nvidia-imex_*_arm64.deb
178+
systemctl disable --now nvidia-imex.service 2>/dev/null || true
179+
fi
180+
169181
mkdir -p /etc/containerd/config.d
170182
cp /opt/gpu/10-nvidia-runtime.toml /etc/containerd/config.d/10-nvidia-runtime.toml
171183

0 commit comments

Comments
 (0)