典型报错
常见错误包括:
CUDA driver version is insufficient for CUDA runtime version
或程序能看到 GPU,但初始化 CUDA context 时失败。这通常说明运行时加载的 CUDA runtime 需要更高版本驱动,或者环境里混入了不该加载的 CUDA 库。
先区分三件事
nvidia-smi
nvcc --version
echo "$LD_LIBRARY_PATH"
nvidia-smi 看的是驱动状态;nvcc 看的是 Toolkit;LD_LIBRARY_PATH 影响运行时实际加载哪些动态库。三者可能来自不同位置。
如果是 Python/Conda 环境,再记录:
which python
python -c "import sys; print(sys.executable)"
conda list | grep -E 'cuda|cudnn|pytorch|tensorflow|deepmd'
排查动态库来源
对二进制程序:
ldd /path/to/executable | grep -i cuda
对 Python 包,可以先看环境变量和包版本,不要急着升级系统驱动:
python - <<'PY'
import os
print(os.environ.get("LD_LIBRARY_PATH", ""))
PY
很多情况下,错误来自 Conda 环境中的 runtime 与系统 /usr/local/cuda/lib64 互相覆盖。
处理原则
- 驱动版本偏低时,升级驱动可能解决问题,但远程服务器升级驱动有失联风险。
- 如果程序不需要系统 Toolkit,优先清理
LD_LIBRARY_PATH中多余的/usr/local/cuda/lib64。 - 如果需要源码编译,确认 Toolkit 与 GCC 版本同时匹配。
- 不要把多个 CUDA 版本的
bin和lib64全部写进全局.bashrc。
验证
修复后至少验证三层:
nvidia-smi
nvcc --version # 如果该环境需要编译
目标软件的最小 GPU 测试
只要目标软件的小算例能稳定走 GPU 路径,才算这个问题被解决。