多版本并存怎么用
同一台机器可以并存多个 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 版本、默认软链指向与框架版本记进运维清单:出问题时先对照清单,再决定动哪一个环节。