- 系统的Nvidia Driver决定着系统最高可以支持什么版本的cuda和cudatoolkit,Nvidia Driver是向下兼容的(数据可能会更新,请查看:Release Notes :: CUDA Toolkit Documentation (nvidia.com)):
- 使用nvidia-smi指令查看Nvidia Driver的版本:(由下图可知我的版本是470.82.00,所以应该对应11.4版本)
- cuda和cudatoolkit不同,前者说的是系统安装的cuda,它是由Nvidia官方提供的(/usr/local/cuda就是系统安装的cuda的软链接),这与我们要安装的pytorch几乎没有什么关系。后者是anaconda官方提供的用来build pytorch的一个工具包,它是Nvidia所提供的cuda的一个子集。
- pytorch相关:
- pytorch和cudatoolkit版本并不是一一对应的关系,一个pytorch版本可以有多个cudatoolkit版本与之对应。例如1.5.1版本的pytorch,既可以使用9.2版本的cudatoolkit,也可以使用10.2版本的cudatoolkit。
- 只指定pytorch版本来安装不一定是能work的,例如执行conda install pytorch=X.X.X -c pytorch时,conda会自动为你选择合适版本的cudatoolkit。但conda只能保证你的pytorch和cudatoolkit版本一定是对应的,但并不能保证pytorch可以正常使用,因为系统的Nvidia Driver有可能不支持你所安装的cudatoolkit版本。
- 除非你对你的Nvidia driver版本很有自信,否则,还是先查看系统Nvidia Driver的版本,并在上方图表中查询最高支持的cudatoolkit版本,然后指定cudatoolkit版本来安装pytorch吧。例如系统的Nvidia Driver版本为470.82.00,查询到最高支持cudatoolkit版本为11.4,则可以使用
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu114
命令安装pytorch。
- 下载cuda toolkit的官网网址:https://developer.nvidia.com/cuda-downloads
- cuda版本:
- 查看cuda版本(取决于路径中包含什么):
- 输出当前的默认路径,如果CUDA安装没问题的话,会看到类似cuda/bin的路径
- 或者直接打开配置文件查看:
vi .bashrc
- 使用指令查看软连接(即真正的cuda目录):
- 如果电脑里有多个CUDA(比如上图中我就有10.2和11.8两个版本),哪个路径在系统默认路径,哪个就是当前在使用的版本。默认路径就是输入命令后,系统去哪里找要执行的东西。
- 快速查看的方法:
nvcc -V
- nvidia-smi的cuda版本大于等于你要安装的cuda版本就不会出问题,且你的实际cuda版本以nvcc为准。
- 切换CUDA版本实际上就是修改路径中的CUDA目录。
- CUDA在大版本下向下兼容。比如装了CUDA11.5,它支持CUDA11.0-CUDA11.5的环境,但不支持CUDA10.2。所以选版本的时候直接选符合要求的大版本的最新版就行,比如10.2, 11.6。(所以虽然有序列表我的机器实际需要的是11.4,但目前实际是11.8也是可以的)
- 30系不支持直接使用CUDA10
- 更改cuda版本后nvcc -V依然显示更改前的版本解决办法:该环境变量,还是一样的,实际cuda以环境变量路径为准。
- nvidia-smi和nvcc --version出来的版本不一致:
- 这主要是因为,CUDA有两个主要的API:runtime(运行时) API和driver API。
- 根据runtime cuda版本选择tf/torch/dgl等对应的cuda版本,即以nvcc -v 得到的版本为准
- 查看cuda版本(取决于路径中包含什么):
#---------------------------12.3 补充一些笔记------------------------------------------------------------------------
-
nvidia官方提供的 CUDA Toolkit 是一个完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。
-
Nvidia 官方提供安装的 CUDA Toolkit 包含了进行 CUDA 相关程序开发的编译、调试等过程相关的所有组件。但对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。
-
所以安装pytorch时自动安装的cudatoolkit,主要包含的是应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。在安装了 cudatoolkit 后,只要系统上存在与当前的 cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit .
-
每个版本的CUDA Toolkit 都对应一个最低版本的显卡驱动版本(CUDA Driver)
-
CUDA 有两种API,分别是运行时API和驱动API,即所谓的 Runtime API 与 Driver API。
nvidia-smi是 CUDA Driver API(驱动API)的版本,而nvcc的结果是对应 CUDA Runtime API(运行API)的版本。