首页/AI/大模型部署与运维速查/多版本 CUDA 并存与切换
推理环境与 GPU50 条

多版本 CUDA 并存与切换

同一台机器可以并存多个 CUDA Toolkit:安装到 /usr/local/cuda-<版本>,通过 /usr/local/cuda 软链切换默认版本;conda 环境也可以各自装独立版本,互不影响。

多版本并存怎么用

同一台机器可以并存多个 CUDA Toolkit:各自安装到 /usr/local/cuda-<版本>,用 /usr/local/cuda 软链决定默认版本;conda 环境里也能各装独立版本互不影响。并存本身不难,容易出问题的是编译期与运行期用到的不是同一套。

基本信息

安装路径/usr/local/cuda-<版本>
默认版本/usr/local/cuda 软链
环境隔离conda 环境内独立安装
关键变量PATH 与 LD_LIBRARY_PATH
核对方式nvcc --version 加框架内版本查询

典型使用场景

  • 同一台机器上跑新旧两个框架版本,各自要求不同 toolkit
  • 升级前保留旧版本,出问题能快速回滚
  • 开发环境与生产镜像的 CUDA 版本不一致,需要本地复现
  • 排查编译用新版本、运行找旧库这类错配
  • 把版本差异固化进镜像或独立环境,不依赖运维在宿主机上手工切换

并存与切换

并存与切换
ls -d /usr/local/cuda*                              # 列出已安装版本
sudo ln -sfn /usr/local/cuda-12.4 /usr/local/cuda    # 切换默认软链(按实际版本号)
nvcc --version                                       # 确认编译期版本
python -c "import torch; print(torch.version.cuda)"  # 确认框架期望的运行期版本
conda install -c nvidia cuda-toolkit=12.4            # 只影响该 conda 环境

常见组合与处理

组合表现处理
改了 PATH 没改库路径编译新版本、运行找旧库两个变量一起改
全局软链被覆盖他人编译结果突变变更前记录,避免全局切换
conda 内独立安装只影响该环境推荐做法
只查 nvcc误判运行环境编译期与运行期各查一次
运行期库与编译期工具都随版本走:程序实际链接哪套由安装方式与 LD_LIBRARY_PATH 决定,并存时务必核对两者搭配是否一致。
少用全局软链切换解决依赖问题:多人共用机器上全局切换会互相影响,优先用容器或 conda 把版本固定在各自环境内。
把每台机器的 toolkit 版本、默认软链指向与框架版本记进运维清单:出问题时先对照清单,再决定动哪一个环节。

易错点

  • 只改 PATH 不改 LD_LIBRARY_PATH:编译用新版本、运行找旧库,报错线索容易混乱
  • 随手改全局软链:同机其他人的编译结果突变,问题难以归因
  • 拿 nvcc 版本代表运行环境:编译期与运行期是两条链路,需要各查一次
  • 直接卸载旧版本清理环境:回滚能力随之消失,新版本出问题时只能原地抢修
  • 把版本切换写进脚本却不做校验:脚本执行成功不等于环境已生效,切完立刻查一次版本

数据来源与参考

  • NVIDIA CUDA 安装指南(docs.nvidia.com/cuda)
  • NVIDIA Conda 频道(anaconda.org/nvidia)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌