412 words
2 minutes
CUDA 驱动与 Toolkit 版本关系详解
简明说法:有三样东西,别混了——
- NVIDIA 驱动(
nvidia-smi里 “Driver Version 535.113.01 / CUDA Version 12.2”):决定你最多能跑到哪个 CUDA 运行时;新驱动向下兼容老 CUDA。 - CUDA Toolkit(
nvcc -V显示 11.1):包含编译器nvcc,只在你需要编译 CUDA 扩展(自定义算子、部分 mmcv/mmdet ops)时才用得到。 - PyTorch 的 CUDA 运行时(比如
torch==1.10.1+cu111):轮子自带 cudart/cuBLAS/cuDNN/NCCL,不依赖系统 CUDA Toolkit 去”运行”模型。
它们的关系/要点:
- 运行只看驱动是否够新:装
+cu111的 PyTorch 时,驱动需 ≥ R455;你现在是 535,完全 OK。 - 编译扩展才看 nvcc:要编 mmcv/mmdet 的 CUDA 扩展,建议 nvcc 版本≈
torch.version.cuda。装了+cu111的 PyTorch,就用 CUDA 11.1 的 nvcc 并设好CUDA_HOME=/usr/local/cuda-11.1。 nvidia-smi里的”CUDA 12.2”不是你本机 Toolkit 版本,只是驱动支持的最高 CUDA 运行时版本号。
⚠️ 你的机器是 RTX 4090(Ada, SM 8.9):
-
实践中,PyTorch 1.10.1 + cu111 往往不支持 4090(常见错误如 “no kernel image available for execution on the device”),因为对 Ada 的正式支持是 CUDA 11.8 / PyTorch 1.13+ 之后才完善。
-
建议路线(更省心):升级到 PyTorch 2.x + cu118/ cu121。示例(任选其一):
-
CUDA 12.1 轮子:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 -
或 CUDA 11.8 轮子:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
这样运行时自带对应 CUDA;只在编译扩展时才需要系统装 Toolkit(对应 12.1 或 11.8),并设置
CUDA_HOME指过去。 -
实操检查:
python - <<'PY'import torchprint("torch:", torch.__version__)print("torch cuda runtime:", torch.version.cuda)print("cuda available:", torch.cuda.is_available())if torch.cuda.is_available(): print("gpu:", torch.cuda.get_device_name(0))PY小结:
- 不编译扩展 → 只要装对 带 CUDA 的 PyTorch 轮子 + 驱动够新即可,不用管 nvcc。
- 要编扩展(mmcv/mmdet 常见)→ nvcc 版本应与
torch.version.cuda对齐。
CUDA 驱动与 Toolkit 版本关系详解
/blog/posts/成长日记/深度学习/cuda-version-guide/ Some information may be outdated