这类环境配置教程最怕的就是“看起来装上了,但实际跑不起来”。我见过太多人跟着教程一路点下一步,最后在import torch或nvidia-smi这一步卡住,回头排查又要重装驱动、重配环境变量,特别折腾。
所以这篇教程不会只给步骤,我会把每个环节的验证点、常见报错和排查顺序都拆清楚。目标是让你装完就能直接跑 CUDA 程序,而不是只看到“安装成功”的界面。
1. 先搞清楚你要的到底是驱动、CUDA Toolkit 还是 cuDNN
很多人一上来就找 CUDA 安装包,但其实 NVIDIA 环境分三层:
- 显卡驱动:让系统能识别和使用显卡,这是最底层。没有驱动,
nvidia-smi都跑不起来。 - CUDA Toolkit:包含编译器和运行时库,让你能开发和运行 CUDA 程序。
- cuDNN:针对深度学习的加速库,通常需要单独安装。
如果你的目标只是跑现成的深度学习框架(如 PyTorch、TensorFlow),那么通常只需要正确版本的驱动 + 框架自带 CUDA 即可。但如果你要自己编译 CUDA 项目,那就必须装完整 CUDA Toolkit。
1.1 检查当前环境状态
在开始安装前,先打开命令提示符(按 Win+R,输入cmd),运行:
nvidia-smi如果这个命令能运行并显示显卡信息,说明驱动已经安装。注意看右上角的 CUDA Version,这个是你当前驱动支持的最高 CUDA 版本。
如果报错'nvidia-smi' 不是内部或外部命令,说明连驱动都没装,需要从驱动开始。
1.2 确定你需要哪个版本的 CUDA
这不是越新越好。如果你要用 PyTorch 或 TensorFlow,先去官方文档查他们支持哪个 CUDA 版本。
比如 PyTorch 官网会明确写:
- Stable (2.3.1) 支持 CUDA 11.8 和 12.1
- 如果你装 CUDA 12.4,可能无法直接使用
原则:框架文档说支持什么版本,就装什么版本,不要追新。
2. 安装流程:驱动 → CUDA Toolkit → 环境验证
2.1 显卡驱动安装(如果 nvidia-smi 失败)
到 NVIDIA 官网下载页面:
- 产品类型:GeForce(游戏卡)或 Quadro(专业卡)
- 产品系列:按你的显卡型号选择
- 操作系统:Windows 10/11,注意是 64 位还是 32 位
- 下载类型:Studio 驱动(适合创作)或 Game Ready 驱动(适合游戏),对开发来说区别不大
- 语言:中文
下载后运行安装程序,选择「自定义安装」→「执行清洁安装」,这会清除旧驱动配置。
安装完成后重启,再运行nvidia-smi确认。
常见问题:
- 安装失败:可能是 Windows 更新正在后台安装驱动,去设备管理器里禁用自动更新驱动
- 显示「NVIDIA 安装程序失败」:用 DDU(Display Driver Uninstaller)在安全模式下彻底清除旧驱动再重试
2.2 CUDA Toolkit 安装
到 NVIDIA CUDA Toolkit 下载页面,选择和你框架兼容的版本。比如 PyTorch 2.3.1 支持 CUDA 12.1,就下 12.1.1。
下载时选:
- 操作系统:Windows
- 架构:x86_64
- 版本:Windows 10/11
- 安装程序类型:exe(local)本地安装包(大约 3GB)
运行安装程序时,选择「自定义安装」:
- 取消勾选「NVIDIA GeForce Experience」(除非你需要游戏录制等功能)
- 确保「CUDA」下面的「Development」和「Runtime」都选中
- 确保「Driver components」下面的「Display Driver」取消勾选(除非你想更新驱动)
- 其他保持默认
安装路径建议用默认的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\,不要改到中文或带空格的路径。
安装完成后,需要验证环境变量是否自动添加。打开系统环境变量,检查「系统变量」中的 Path 是否包含:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\libnvvp
如果没有,手动添加这两个路径。
2.3 验证安装
重新打开命令提示符(重要:必须重新开),依次运行:
nvcc --version这个命令应该显示 CUDA 编译器的版本信息。
然后运行:
nvidia-smi对比两个命令显示的 CUDA 版本。nvidia-smi显示的是驱动支持的最高版本,nvcc显示的是你实际安装的 Toolkit 版本。前者应该大于等于后者。
3. 测试实际代码:从简单 CUDA 样例到 PyTorch
3.1 编译 CUDA 样例程序
CUDA Toolkit 自带样例代码,位置在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\demo_suite
在这个目录打开命令提示符,运行:
deviceQuery.exe这个程序会详细显示显卡的 CUDA 能力,如果能看到类似以下输出,说明安装成功:
CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "NVIDIA GeForce RTX 4090" CUDA Driver Version / Runtime Version 12.1 / 12.1 CUDA Capability Major/Minor version number: 8.9 Total amount of global memory: 24564 MBytes ... Result = PASS再运行:
bandwidthTest.exe这个测试内存带宽,也应该显示Result = PASS。
3.2 测试 PyTorch GPU 支持
如果你要做深度学习,现在测试框架支持:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121然后启动 Python 解释器:
import torch print(torch.cuda.is_available()) # 应该返回 True print(torch.cuda.device_count()) # 应该返回显卡数量 print(torch.cuda.get_device_name(0)) # 应该返回你的显卡型号如果torch.cuda.is_available()返回 False,说明 PyTorch 没有检测到 CUDA。
4. 常见问题排查顺序
4.1 nvidia-smi 能运行但 torch.cuda.is_available() 返回 False
这是最常见的问题,排查顺序:
- 检查 CUDA 版本兼容性:
nvidia-smi显示的 CUDA 版本是否大于等于 PyTorch 需要的版本 - 检查 PyTorch 安装命令:是否用了对应 CUDA 版本的安装命令(如 cu121 对应 CUDA 12.1)
- 检查环境变量:Path 中是否有 CUDA 的 bin 和 libnvvp 路径
- 重启命令提示符:环境变量修改后必须重新打开终端
- 检查显卡计算能力:较老的显卡可能不被新版本 PyTorch 支持
4.2 编译 CUDA 代码时报错
如果是自己写 CUDA 程序编译失败:
- 检查 Visual Studio 版本:CUDA 需要特定版本的 MSVC 编译器,查看 CUDA 文档的兼容性表格
- 检查项目配置:在 Visual Studio 中确保正确设置了 CUDA 工具路径
- 检查代码兼容性:较新的 CUDA 特性可能不支持老显卡的计算能力
4.3 运行时报「out of memory」或性能不佳
- 检查显存占用:用
nvidia-smi看是否有其他程序占用显存 - 调整批量大小:减少 batch size
- 检查数据加载:确保数据加载没有内存泄漏
- 监控温度:显卡过热会降频,影响性能
5. 生产环境建议
如果这台机器要长期做开发或训练:
5.1 环境隔离
不要用系统全局环境,用 conda 或 venv 创建独立环境:
conda create -n cuda-dev python=3.10 conda activate cuda-dev然后在独立环境中安装 PyTorch 等框架。
5.2 版本记录
创建一个environment.yml文件记录环境版本:
name: cuda-dev channels: - pytorch - nvidia - conda-forge dependencies: - python=3.10 - pytorch=2.3.1 - torchvision=0.18.1 - torchaudio=2.3.1 - cudatoolkit=12.1 - pip - pip: - tensorflow==2.13.05.3 监控和维护
- 定期用
nvidia-smi检查驱动状态 - 关注框架更新,确认兼容性后再升级 CUDA
- 重要项目开始前,先跑一遍
deviceQuery和bandwidthTest确认环境正常
我个人习惯是每台新机器装完环境后,创建一个简单的测试脚本,包含上述所有验证步骤,每次重大更新后跑一遍这个脚本确认环境完好。
这种验证流程看起来多花 10 分钟,但能避免后面几天甚至几周的排查时间。CUDA 环境最怕的就是「差不多装好了」,一定要每个环节都验证通过再开始正式开发。