yolov3的训练(二)cuda和cudnn

提出的问题
https://ask.csdn.net/questions/7771526

参考的教程
https://blog.csdn.net/zhaoxueqi666/article/details/120333153


##################################
同学们,这个系列的文件不要直接就跟着我操作了,因为这个是踩坑的记录,不是教程,我只是将整个流程记录下来,让后面的同学操作的时候能够避开这些坑,希望你能将整个系列的操作流程看了一遍斟酌后进行操作
##################################


根据在csdn和网上其他大神的指导
初次怀疑是机器的cuda和cudnn的版本过低
所以首先尝试对cuda和cudnn进行升级
其实图片这里反映了另一个重大的问题,只是当时眼挫没注意到,后面注意到了并修复

nvidia-smi

yolov3的训练(二)cuda和cudnn_第1张图片

现阶段CUDA的版本是10.2

升级为11.1
进入到官网
https://developer.nvidia.com/cuda-downloads

选择对应的版本,然后选择runfile的下载方式,nvidia会给出命令行的下载方式
yolov3的训练(二)cuda和cudnn_第2张图片
如果要选择其他版本的cuda,可以在页面下端选择
yolov3的训练(二)cuda和cudnn_第3张图片

然后找到需要的版本,点击进去
yolov3的训练(二)cuda和cudnn_第4张图片
执行nvidia给出的安装命令

wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run

yolov3的训练(二)cuda和cudnn_第5张图片
然后查看nouveau驱动

lsmod | grep nouveau

yolov3的训练(二)cuda和cudnn_第6张图片

无输出则代表nouveau没有加载,有的话要禁用nouveau
Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,如果需要用nvidia自己的驱动的话就要先禁止

到下载cuda的位置,然后执行安装脚本
sudo sh cuda_11.1.0_455.23.05_linux.run
yolov3的训练(二)cuda和cudnn_第7张图片

中间参考的文件
重装cuda报错“Error installing Cuda toolkit: Existing package manager installation of the driver found”


然后等待一下,可以先尝试直接选择continue,之后安装的时候不在装driver就好,顺利的话也可以直接成功安装,记得之后修改.bashrc文件
yolov3的训练(二)cuda和cudnn_第8张图片

然后就是用户许可协议
在终端输入accept同意协议
yolov3的训练(二)cuda和cudnn_第9张图片
由于我之前已经安装了Nvidia的显卡驱动,这里不安装driver,那么只需要移动到Driver,按enter键,将"[]"中的X去掉即是不选择.
然后移动到install回车即可
yolov3的训练(二)cuda和cudnn_第10张图片

选择升级全部
yolov3的训练(二)cuda和cudnn_第11张图片

然后选择yes
yolov3的训练(二)cuda和cudnn_第12张图片

稍等片刻后,安装完成

然后添加环境变量

sudo gedit ~/.bashrc 

将原本的cuda注释或删除
根据终端的提示,然后添加以下语句

export PATH=$PATH:/usr/local/cuda-11.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.1/lib64

yolov3的训练(二)cuda和cudnn_第13张图片

然后刷新环境变量,使其生效

sourec .bashrc

接着查看cuda的版本,可以看到环境变量已经生效

nvcc -V

yolov3的训练(二)cuda和cudnn_第14张图片

中途参考的资料
cuda版本nvidia-smi和nvcc -V显示不同

然后查看GPU的使用情况

nvidia-smi

yolov3的训练(二)cuda和cudnn_第15张图片

那么cuda安装完成了,接下来就安装cudnn
根据官网,和CUDA11.1配套的是CUDNN8.0.4
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse804-111


进入到下载页面,nvidia要求下载cudnn需要登陆账号
yolov3的训练(二)cuda和cudnn_第16张图片

然后查找
yolov3的训练(二)cuda和cudnn_第17张图片

点击CUDNN8.0.4,进去有很多的版本
yolov3的训练(二)cuda和cudnn_第18张图片
添加链接描述
如果不知道电脑的版本可以查看

uname -a

yolov3的训练(二)cuda和cudnn_第19张图片

完成后会下载
由于网络比较卡,所以我是在Win10下载,然后使用filezilla发送过去

中途参考的资料
解压 .solitairetheme8 文件

然后下载的是.solitairetheme8类型的文件,需要转换成tgz然后解压
yolov3的训练(二)cuda和cudnn_第20张图片

cd NVIDIA_CUDA-11.1_Samples/
cp cudnn-11.1-linux-x64-v8.0.4.30.solitairetheme8 cudnn-11.1-linux-x64-v8.0.4.30.tgz
tar -xvf cudnn-11.1-linux-x64-v8.0.4.30.tgz

yolov3的训练(二)cuda和cudnn_第21张图片

解压之后得到一个cuda文件夹
yolov3的训练(二)cuda和cudnn_第22张图片

将解压缩的文件放入对应cuda项目下,但是发现终端报错

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

yolov3的训练(二)cuda和cudnn_第23张图片

终端报错,移动到路径,发现文件名称不一样
yolov3的训练(二)cuda和cudnn_第24张图片

进行对应的修改,将将解压缩的文件放入对应cuda项目下

sudo cp cuda/include/cudnn.h /usr/local/cuda-11.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64/

在这里插入图片描述

并设上只读权限

sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-11.1/lib64/libcudnn*

在这里插入图片描述

然后为了查看安装的版本号,可以将cudnn_version.h文件放到usr/local/cuda/include目录下

将 /home/heying/NVIDIA_CUDA-11.1_Samples/cuda/include/cudnn_version.h文件移动到/usr/local/cuda-11.1/include/路径下

sudo mv cudnn_version.h /usr/local/cuda-11.1/include

yolov3的训练(二)cuda和cudnn_第25张图片

查看版本号,可以看到cudnn版本为8.0.4

cat /usr/local/cuda-11.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

yolov3的训练(二)cuda和cudnn_第26张图片

在完成修改后对darknt进行编译
yolov3的训练(二)cuda和cudnn_第27张图片


初步怀疑是版本不对应

首先将下载的cudnn的修改文件进行删除
yolov3的训练(二)cuda和cudnn_第28张图片
然后重新下载一个

重新移动

sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

然后查看版本信息

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

没有输出

sudo cp include/cudnn_version.h /usr/local/cuda/include/
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

流程失败

你可能感兴趣的:(深度学习,人工智能,ubuntu,linux,目标检测)