NVIDIA Multi-Generational Acceleration Stacks¶
To prevent driver incompatibilities, symbol conflicts, and runtime panics across disparate GPU microarchitectures, imago segments NVIDIA support into four distinct hardware generations plus a dedicated datacenter tier.
All modern and bleeding flavors generate native Container Device Interface (CDI) specifications at /etc/cdi/nvidia.yaml, providing seamless device pass-through across Docker, Podman, and containerd without wrapper runtimes.
1. NVIDIA Legacy (*-nvidia-legacy)¶
- Microarchitectures: Pascal (
sm_60,sm_61) and Volta (sm_70). - Target GPUs: GTX 1070/1080/1080Ti, Tesla P4, P40, P100, Titan Xp, Tesla V100.
- Driver & CUDA: NVIDIA 580 headless branch (
580) with CUDA 13.0. - Why this exists: The 580 branch is the last NVIDIA driver branch that supports Maxwell, Pascal and Volta; newer branches drop them. The driver exposes the CUDA 13.0 runtime, but CUDA Toolkit 13.0 removed offline compilation and library support for these architectures, so workloads ship containers built with a CUDA 12.x toolkit, which run on this driver.
2. NVIDIA Mainstream (*-nvidia-mainstream / *-nvidia)¶
- Microarchitectures: Turing (
sm_75) and Ampere (sm_80,sm_86). - Target GPUs: RTX 20/30 series, Tesla T4, A100, A10, A30, L4, RTX A6000.
- Driver & CUDA: NVIDIA 595 headless branch (
595) with CUDA 13.2. - Container Device Interface: Modern CDI v0.6+ specifications generated at
/etc/cdi/nvidia.yaml.
3. NVIDIA Modern (*-nvidia-modern)¶
- Microarchitectures: Ada Lovelace (
sm_89) and Hopper (sm_90). - Target GPUs: RTX 4080/4090, RTX 6000 Ada, L40, L40S, H100 PCIe.
- Driver & CUDA: NVIDIA 615 branch (
615) with CUDA 13.4. - Container Device Interface: Native CDI specifications generated at
/etc/cdi/nvidia.yaml. - Features: Ada FP8 Tensor Cores, modern Transformer Engine support, optical flow acceleration.
4. NVIDIA Bleeding-Edge (*-nvidia-bleeding)¶
- Microarchitectures: Blackwell (
sm_100,sm_120). - Target GPUs: GeForce RTX 5080/5090, B100, B200, GB200 NVL.
- Driver & CUDA: NVIDIA 615 branch (
615) with CUDA 13.4. - Features: Blackwell 2nd-gen Transformer Engine, native NVLink-C2C, micro-scaling formats (MXFP4/MXFP6/MXFP8), cutting-edge kernel support on Ubuntu 26.04.
5. NVIDIA Datacenter (*-nvidia-datacenter)¶
- Microarchitectures: Hopper (
sm_90) and Blackwell (sm_100). - Target GPUs: H100, H200, B100, B200, GB200 Superchip clusters.
- Open Kernel Modules: Installs the Ubuntu server open kernel modules (
nvidia-headless-615-server-open,nvidia-utils-615-server). - Fabric Manager: Pre-configures and automatically enables
nvidia-fabricmanager-615for full-mesh NVLink and NVSwitch multi-GPU scaling. - GPUDirect Storage (GDS): Pre-configured with RDMA, NVMe-oF, and peer-to-peer DMA hooks.
Pinned packages and their check¶
Every branch and CUDA label comes from drivers.nvidia in versions.json; the provisioners stop with an error when a pin is missing instead of falling back to a built-in branch.
| Tier | Driver key | Packages | CUDA key |
|---|---|---|---|
| legacy | legacy_driver (580) |
nvidia-headless-580, nvidia-utils-580 |
cuda_legacy (13.0) |
| mainstream | mainstream_driver (595) |
nvidia-headless-595, nvidia-utils-595 |
cuda_mainstream (13.2) |
| modern | modern_driver (615) |
nvidia-headless-615-open, nvidia-utils-615 |
cuda_modern (13.4) |
| bleeding | bleeding_driver (615) |
nvidia-headless-615-open, nvidia-utils-615 |
cuda_bleeding (13.4) |
| datacenter | datacenter_driver (615) |
nvidia-headless-615-server-open, nvidia-utils-615-server, nvidia-fabricmanager-615 |
none |
Modern and bleeding share the 615 branch: the archive carries 610 only as transitional packages that install 615.
tools/ci/upstream_sources.py check runs before the Packer build in release-matrix.yml. For each tier it reads the Ubuntu 26.04 Packages index and fails when a package is absent or transitional (section oldlibs, or a single dependency on the same package at another branch). It also fails when the CUDA label has no cuda-compat-<major>-<minor> package in NVIDIA's ubuntu2404 repository, or when that package depends on a different driver branch: