典型报错

常见错误包括:

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 版本的 binlib64 全部写进全局 .bashrc

验证

修复后至少验证三层:

nvidia-smi
nvcc --version  # 如果该环境需要编译
目标软件的最小 GPU 测试

只要目标软件的小算例能稳定走 GPU 路径,才算这个问题被解决。