Skip to content

GPU Drivers & Lifecycle Management: Version Strategy and Upgrade Troubleshooting ​

Abstract: The driver is the component where "one upgrade, one month of pain." This article provides the complete strategy: version pinning → gray upgrade → fast rollback, plus Xid/ECC error interpretation, Fabric Manager operations, and hardware lifecycle management. Core principle: production clusters have no "incidental upgrades" — only "planned upgrades."

1. Version Relationships: Driver, CUDA, Frameworks ​

Application: PyTorch/TensorFlow → CUDA runtime (ships with conda/pip)
System: NVIDIA driver (kernel-mode + libcuda.so) → determines GPU capability ceiling
  • The CUDA runtime travels with your package (torch from pip bundles CUDA libraries) and is backward compatible with the system driver: it works as long as the driver version ≥ runtime requirement.
  • The only line that matters:
bash
nvidia-smi | grep "CUDA Version"   # highest CUDA the driver supports
python -c "import torch; print(torch.version.cuda)"  # runtime requirement
  • As long as driver-supported ≥ runtime, it is compatible; driver major versions (550→570) generally don't require framework changes, but minor driver upgrades still go through gray rollout.

2. Production Upgrade Process: Gray + Rollback ​

2.1 Pre-Upgrade Checklist ​

bash
# 1. Record current state
nvidia-smi                       # driver version, GPU model
nvidia-smi -q -d ECC             # existing ECC counts (compare after upgrade)
ls /usr/lib/x86_64-linux-gnu/libcuda*  # libcuda symlinks

# 2. Confirm Fabric Manager (required for NVLink switches)
systemctl status nv-fabricmanager  # H100 SXM + NVSwitch must match driver version!

# 3. Confirm jobs are drained
scontrol show jobs | grep RUNNING  # drain nodes before upgrading

WARNING

Fabric Manager (FM) must strictly match the driver version. Upgrading the driver without FM means NVSwitch topology won't come up and TP=8 training fails immediately — the #1 cause of H100 cluster upgrade accidents.

2.2 Gray Upgrade Flow ​

1. Pick 1 node (non-critical path) → upgrade driver + FM → run HPL + 8-GPU nccl-tests → pass
2. Scale to 1 Pod (8–16 nodes) → run cross-node nccl-tests + real training for 24h → pass
3. Roll across the cluster in batches (drain → upgrade → verify → resume jobs)
4. After all: compare pre/post — HPL peak, nccl-tests busbw, training TPS, no regression

Rollback plan: keep old driver packages + recorded versions. Put packages on an internal mirror; rollback commands go into the runbook:

bash
# Rollback example (RHEL family)
rpm -qa | grep -i nvidia-driver        # find current version
yum install nvidia-driver-<old-version>   # install old version back
systemctl restart nv-fabricmanager     # roll back FM too
nvidia-smi -pm 1                       # restore persistence mode

3. Daily Monitoring: Xid and ECC ​

3.1 Xid Error Quick Reference ​

XidMeaningAction
13/31GPU memory errorRecord; recheck ECC counts
45Suspected hardware fault (preemptive)Isolate the node; run memory tests (memtest/mtx)
63Driver/device communication anomalyCheck PCIe link (lspci -vvv), dmesg logs
79Memory access timeout/ECCVerify ECC counts; prefer card replacement
43GPU unavailable (common in VMs/containers)Check driver/container device mapping

3.2 ECC Count Monitoring ​

bash
nvidia-smi -q -d ECC   # volatile and aggregate counts
  • Volatile ECC growing continuously = memory chip aging; log and schedule replacement (within warranty).
  • Occasional correctable errors are noise (cosmic-ray scale); continuous growth is the signal.
  • Suggested monitoring: nvidia-smi --query-gpu=timestamp,name,ecc.errors.uncorrected.volatile.total --format=csv into alerting.

4. Hardware Lifecycle Management ​

4.1 Three Phases ​

PhaseStrategy
New architecture launch (0–2 quarters)Delayed adoption: drivers/frameworks immature; let early users take the hit
Maturity (2–6 quarters)Pin a driver baseline; security/firmware updates only; every upgrade goes through gray
EOL (3+ years after launch)Assess replacements; stop new purchases; after driver EOL, never update online (may introduce incompatibilities)

4.2 Lifecycle Support ​

  • Firmware windows: GPU vBIOS, IB HCA firmware, NVSwitch firmware managed as one version set; combine upgrade windows with driver upgrades (one reboot).
  • Batch variance: GPUs from different purchase batches vary slightly (HPL measured ±1–2%); store acceptance data as the replacement baseline.
  • Spare strategy: spares for critical nodes (login/management/scheduler) + GPU cold spares by failure rate (~1% annual scale).

5. Production Checklist ​

  • [ ] Driver/CUDA/framework compatibility matrix documented; checked before upgrades
  • [ ] FM version strictly matches driver; upgrade order fixed (driver→FM→reboot)
  • [ ] Upgrade flow: single node → single Pod → full cluster gray, baselines at each step
  • [ ] Rollback runbook ready (old packages on internal mirror + version records)
  • [ ] Xid/ECC monitoring into alerting; faulty nodes auto-isolated
  • [ ] Post-upgrade comparison: HPL / nccl-tests / training TPS
  • [ ] Spares and batch-variance data recorded

Further reading: 10K-GPU Cluster Hardware Selection & Acceptance Checklist (where acceptance baselines come from), Liquid-Cooled Data Center Design (lifecycle management on the cooling side).

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com