Skip to content

cuda 的版本问题

2025-07-11 · 612字 · 3分钟

最近遇到一些 cuda 的版本问题,特来记录一下。

分清几个概念

名称版本号举例查看版本方式作用
NVIDIA 驱动535.104.05modinfo nvidia | grep version用于控制 GPU 硬件、提供 CUDA 支持
CUDA 运行时(runtime)12.2 11.8torch.version.cuda指程序运行所依赖的 .so 库,用于运行 PyTorch/CuPy
CUDA 工具箱(Toolkit)12.2 11.8nvcc --version包括 nvcc 编译器、头文件、运行时、开发工具等,用于编译

而一般单说 CUDA 版本时,指的是 Toolkit 的版本。

驱动与向后兼容

另外,输入命令 nvidia-smi 得到 CUDA version 实际上对应的是当前驱动所支持的最高 CUDA 版本,例如

Fri Jul 11 11:07:18 2025       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.216.01             Driver Version: 535.216.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA A40                     On  | 00000000:D8:00.0 Off |                    0 |
|  0%   23C    P8              28W / 300W |      0MiB / 46068MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

说明该驱动最高支持 12.2 版本的 CUDA,由于驱动是向后兼容的,因此只要驱动足够新就可以兼容旧版本的 CUDA。例如上述驱动可以兼容基于 CUDA 11.8 的 PyTorch。

不同版本

如果系统中有不同版本的 CUDA Toolkit,则可以用命令 ls -ld /usr/local/cuda* 列出所有可用版本。通过

bash
export PATH=$PATH:/usr/local/cuda-11.8/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64

来设置相应的版本(如上为 11.8)。

PyTorch 和 CUDA

pip install torch 的命令总是下载最新构建的 wheel,而这有时并不符合我们的需要。所以有时需要下载特定版本的 PyTorch,例如 https://download.pytorch.org/whl/cu118/torch-2.6.0+cu118-cp310-cp310-linux_x86_64.whl 这个路径下的 wheel,根据 Python Packaging User Guide 上的 二进制发行版 命名格式 {distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl 可知,它是基于 CUDA 11.8(cu118)和 CPython 3.10(cp310)构建的,因此其需要 CUDA 运行时版本为 11.8。

而通过 pip 下载的 wheel 也自带了相应版本的 CUDA 运行时,但有时 python 包路径下的 CUDA 运行时和系统路径下的 CUDA Toolkit 所包含的运行时版本可能冲突,因此最好用前面的方法指定对应版本的环境变量。

返回

人同此心,心同此理;如风沐面,若水润心