目录
操作系统: ubuntu 18.04(服务器)
更新时间: 2024年2月21日
显卡驱动版本: 510.108.03
CUDA版本: cuda 11.3.1(conda虚拟环境安装),cuda 11.8(conda虚拟环境安装)
本文介绍在Conda虚拟环境下CUDA的安装和配置,在虚拟环境vdisco中安装cuda 11.3,在vdisco2环境中安装cuda 11.8。
# 官网教程
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#conda-installation
Ⅰ. 背景
深度学习用显卡训练的时候,需要安装与显卡对应的cuda和cudnn。但不同的项目所支持的pytorch版本是不一样的,而pytorch版本和cuda版本之间又是互相依赖的,所以如果可以灵活地在不同cuda版本间切换将是非常方便的。anaconda就可以实现这个功能。我们可以在conda创建的不同虚拟环境中安装不同的cuda和cudnn版本,以此来实现不同cuda版本间的切换。
- 环境vdisco
- 环境vdisco2
Ⅱ. 使用Conda安装CUDA
2.1 查看显卡驱动兼容性
- GPU信息、驱动版本可以通过cmd输入
nvidia-smi
指令来查看。 - 显卡驱动版本向下兼容,其决定了可安装的CUDA Toolkit的最高版本,高版本的驱动支持低版本的CUDA。
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
- 比如我的显卡驱动版本是510.108.03,可安装的CUDA最高版本为11.6。(可能是推荐版本,我安装了11.8)
2.2 创建与激活虚拟环境
首先需要在conda中创建并激活虚拟环境,在特定虚拟环境下安装cuda。
# create conda env
conda create --name vdisco python==3.10
# env activate
conda activate vdisco
2.3 确定要安装的CUDA版本
在虚拟环境中,先用conda search cudatoolkit --info
命令查看源内所有的cuda 版本,以及下载地址。
conda search cudatoolkit --info
执行上述命令后,会显示出源内所有的cuda版本,以及下载地址,如图所示,本文选择安装CUDA 11.3.1。
2.4 下载与安装CUDA
找到自己想要的cuda版本后,可以先根据url字段的下载地址将CUDA下载到本地再安装,也可以直接使用指令安装对应版本。
方法一:把cuda下载到本地
首先复制url字段里的下载链接,然后用命令cd到想要下载的目录,执行如下代码下载
wget [你刚刚复制的链接地址]
安装:执行如下命令进行安装,因为是通过本地安装的,所以需要写明本地包的路径
# 在特定虚拟环境下安装
conda install --use-local [本地cuda包所在的路径]
方法二:直接安装(源内没有的版本无法通过这种方式安装,未测试)
如果是在所有conda环境中首次安装cuda的某个版本,则会下载并完成安装,如果已有环境中已经安装过的版本,则不会再下载,直接复制。比如我在conda虚拟环境env1中安装cuda 11.3.1时,其他虚拟环境都没有安装过这个版本,则会下载安装,之后我在env2环境中再次安装cuda 11.3.1,就不需要再下载了,直接复制相关配置。
# 在特定虚拟环境下安装
conda install cuda -c nvidia/label/cuda-11.3.1
2.5 conda卸载cuda
conda remove cuda
Ⅲ. 使用Conda安装CUDNN
3.1 查看cuda对应的cudnn版本
使用如下命令查看cudnn支持的cuda版本,注意cudnn的版本一定要和刚刚下载的cuda版本对应。
# 在特定虚拟环境下
conda search cudnn --info
执行后的结果如图所示,图中标出了cuda所对应的cudnn版本号位置。
3.2 下载安装cudnn
复制你想要版本的cudnn的下载地址,使用wget 链接地址进行下载。下载后使用如下指令安装:
# 在特定虚拟环境下安装
conda install --use-local [本地cudnn包所在的路径]
3.3 版本验证
在虚拟环境中安装完cuda和cudnn想要测试是否安装成功,不能使用nvcc -V
命令测试,需要在虚拟环境中安装pytorch包进行测试。
# 虚拟环境中,进入python环境
import torch
# 查看pytorch版本
print(torch.__version__)
# cuda是否可用
print(torch.cuda.is_available())
# cuda版本
print(torch.version.cuda)
# cudnn版本
print(torch.backends.cudnn.version())
参考文献
https://blog.csdn.net/qq_43705697/article/details/121618276