文章目录
- 前言
- 一、基本知识
- 二、安装步骤
- 1.首先判断自己有无英伟达的显卡
- 2.安装或者查看自己的显卡驱动
- 3.显卡的算力必须与Cuda runtime version相匹配
- 4.根据以上两条来选择合适Cuda runtime version
- 5.下载pytorch
前言
显卡为3060ti g6x,操作系统win10
一、基本知识
要清楚下面的几个常识
1.GPU和CPU是采用不同架构设计出来的,简单来说,GPU会比CPU多很多计算单元,用于训练网络时,速度比CPU快很多。
2.CUDA是一个计算平台和编程模型,提供了操作GPU的接口。
3.网上很多教程说的安装CUDA其实是指CUDA Toolkit,是一个工具包
4.CUDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。
5.区分Cuda runtime version和Cuda driver version
这里分享一张某个UP主的图
在命令行中输入nidia-smi
图中的红框的CUDA版本代表的是Cuda driver version,是与我们显卡的驱动相关的。
而常说的安装对应版本的Cuda是指Cuda runtime version,可以理解为Cuda toolkit的版本。
6.很多教程都是单独下载Cuda toolkit和Cudnn,其实对于新手来说,在利用Anaconda创建好虚拟环境之后,可以直接在虚拟环境中运行pytorch的安装命令,会自动把Cuda toolkit和Cudnn安装到这个虚拟环境中。
二、安装步骤
1.首先判断自己有无英伟达的显卡
如果没有,直接按照CPU版本的即可
如果有,进入下一步
2.安装或者查看自己的显卡驱动
在以下网址查看自己显卡对应的驱动。
最好是将自己的显卡驱动更新到最新版本。
https://www.nvidia.cn/Download/index.aspx" />
驱动安装好之后
在cmd中输入 nvidia-smi
再次提醒,这里的CUDA version:12.1代表Cuda driver version是12.1,是与显卡的驱动相关的。
3.显卡的算力必须与Cuda runtime version相匹配
首先说明一下,这里的Cuda runtime version其实就是Cuda toolkit的版本,即网上很多教程所指的CUDA version(与第二步的区分开)
在以下网址查看显卡算力和与之相匹配的Cuda runtime version
https://en.wikipedia.org/wiki/CUDA#cite_note-38
3060ti对应的算力是8.6
再查看显卡算力8.6对应的Cuda runtime version
对应的版本是11.1-11.4,顺嘴插一句,图中的Ampere是指的该显卡所采用的架构。
4.根据以上两条来选择合适Cuda runtime version
选择的版本应该满足两点要求
(1)Cuda runtime version必须小于等于Cuda driver version,我的例子中,就是必须小于等于12.1。
(2)在满足(1)的条件下,还要满足版本必须与显卡的算力相匹配。
即在我的例子中,选择11.1-11.4都可以,这里有一点我不清楚,如果
Cuda driver version大于11.1-11.4小于等于12.1是否可以,即是否向低版本兼容,我没有试过,有知道的大佬欢迎评论区讨论。
5.下载pytorch
pytorch官网
https://pytorch.org/
这里只有11.7和11.8两个版本,不符合我的要求,点击图中的install previous versions去寻找合适的版本。
根据上面的步骤,满足条件的版本是11.1-11.4,11.4没有,搜索11.3
运行以下命令换源安装pytorch
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64
将命令后的pytorch换成清华源。
安装过程已退出,无法截图
安装完成后,输入conda list
看到cudatoolkit已经有了,至于cudann,在conda list中找不到,网上说是在pytorch中,通过以下命令可以验证
import torchprint(torch.backends.cudnn.enabled)
最后再验证以下Cuda
输入以下代码
import torchdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")#返回cuda表示成功#或者print(torch.cuda.is_available())#返回True表示成功