选择适合旧版 CUDA 的系统,核心原则是驱动兼容性优先,即先确认你的 GPU 显卡型号,再选择支持对应旧版 CUDA 的 NVIDIA 驱动,最后搭配与之兼容的操作系统和软件版本。
以下是针对不同 CUDA 版本的详细系统推荐指南:
1. 核心逻辑:显卡 → 驱动 → CUDA → 系统
在动手前,请务必查看你的显卡计算能力(Compute Capability)和 NVIDIA 官方文档:
- 旧显卡(Kepler 架构,如 GTX 780, Titan X):最高仅支持 CUDA 11.x 或更低,且需要旧版驱动。
- 较新显卡(Maxwell/Pascal,如 GTX 970, 1080Ti):可以支持到 CUDA 11.x 或 12.x,但需要权衡驱动稳定性。
2. 推荐系统方案
根据 CUDA 的“新旧”程度,推荐以下三种搭配:
方案 A:极旧版 CUDA (CUDA 8, 9, 10) —— 适配老显卡
- 适用场景:训练代码极老、特定深度学习框架(如 TF 1.x)、老旧计算卡(K80, GTX 780)。
- 推荐 OS:
- Ubuntu 16.04 LTS (最稳妥)
- Ubuntu 18.04 LTS (需降级 GCC)
- 关键配置:
- 驱动:通常需要手动安装
NVIDIA 390.x 或 410.x 系列驱动。 - GCC 版本:CUDA 8/9 不支持高版本 GCC,需降级至 GCC 5 或 GCC 6。
- Python:建议使用 Python 3.6 或 3.7。
- 注意:Ubuntu 16.04 已停止标准支持,建议仅在离线或内网环境使用。
方案 B:中旧版 CUDA (CUDA 11.0 - 11.8) —— 主流过渡期
- 适用场景:PyTorch 1.7+ 早期版本、TensorFlow 2.x 早期版本、GTX 10系列/RTX 20系列显卡。
- 推荐 OS:
- Ubuntu 18.04 LTS (最推荐,生态最稳)
- Ubuntu 20.04 LTS (需安装特定内核头文件)
- Windows 10 (22H2 或更早版本)
- 关键配置:
- 驱动:建议使用 470.x 或 510.x 系列驱动(这些驱动对 CUDA 11 支持最好)。
- GCC:Ubuntu 18.04 自带 GCC 7.5 即可;Ubuntu 20.04 需安装
gcc-9。 - 优势:这是目前大多数旧项目的“甜点区”,Docker 镜像资源最丰富。
方案 C:旧版 CUDA (CUDA 12.1, 12.2) —— 较新卡但需旧环境
- 适用场景:RTX 30/40 系列显卡,但需要跑对 CUDA 12.3+ 不兼容的代码。
- 推荐 OS:
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- 关键配置:
- 驱动:需要 535.x 或 550.x 新驱动。
- 注意:新驱动通常向下兼容旧 CUDA,但如果你需要编译旧代码,可能会遇到 GLIBC 版本问题。
3. Windows 系统特别说明
Windows 对旧 CUDA 的支持不如 Linux 友好:
- Windows 10:支持大多数 CUDA 版本(10.0 以上基本没问题)。
- Windows 7:仅支持 CUDA 10.2 及以下,且安装极其困难,不推荐。
- Visual Studio:旧版 CUDA(特别是 9.x, 10.x)需要安装 Visual Studio 2015, 2017 或 2019。CUDA 11+ 才开始较好支持 VS 2022。
4. 推荐方案对比表
| 目标 CUDA 版本 | 推荐操作系统 | 推荐 NVIDIA 驱动版本 | 关键依赖/注意事项 |
|---|
| CUDA 8.0 ~ 10.2 | Ubuntu 16.04 | 390.x / 410.x / 440.x | GCC 需降级; 需手动安装驱动; Python 3.6 |
| CUDA 11.0 ~ 11.8 | Ubuntu 18.04 / 20.04 | 470.x (推荐) | 最通用的组合; 适合大多数旧项目 |
| CUDA 12.x (旧) | Ubuntu 20.04 / 22.04 | 525.x / 535.x | 新显卡适用; 注意 GLIBC 版本 |
| 任意旧版 (通用) | Docker 容器 | 宿主机装最新驱动 | 最佳方案: 宿主机用新系统,容器内跑旧环境 |
5. 终极解决方案:使用 Docker
如果你不想折腾系统降级,Docker 是运行旧版 CUDA 的最佳方式。
- 做法:在最新的 Ubuntu 22.04 或 Windows 11 上安装最新的 NVIDIA 驱动。
- 运行:拉取 NVIDIA 官方旧版镜像,例如:
# 运行一个 CUDA 10.2 的环境,即使你的宿主机是最新的
docker run --gpus all -it nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 bash
- 优点:隔离环境,不用担心系统库冲突,随时切换 CUDA 版本。
6. 总结建议
- 如果是老显卡(GTX 960/970/1080Ti):优先安装 Ubuntu 18.04 + 470 驱动 + CUDA 11.4。这是最稳定的平衡点。
- 如果是极老代码(CUDA 9/10):不要折腾本机系统,直接使用 Docker。
- 如果是新显卡(RTX 30/40系):本机系统用 Ubuntu 22.04,通过 Conda 或 Docker 管理 CUDA 版本,不要试图在本机安装旧版 CUDA Toolkit,因为新显卡的驱动太新,旧 Toolkit 可能不识别。