一、 cuda是什么
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
二、cudnn是什么
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
三、cuda和cudnn之间的关系
CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
来自于:https://www.jianshu.com/p/622f47f94784
四、版本对应关系
(一)cuda/cudnn/tensorflow_gpu之间的对应关系
版本对应请查看以下链接:
https://www.tensorflow.org/install/source#common_installation_problems
五、cuda安装包下载
(一)下载链接
https://developer.nvidia.com/cuda-toolkit-archive
(二)选择与系统相对应的cuda安装包
下载runfile文件
六、cuda安装步骤
(一)sh cuda_10.0.130_410.48_linux.run
按enter到最后一行,分别输入以下的选择:
(二)修改~/.bashrc文件
- 在.bashrc文件最后面添加
export CUDA_HOME=/usr/local/cuda
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda/lib64"
- 刷新
source ~/.bashrc
(三)查看cuda是否安装完成
cat /usr/local/cuda/version.txt
七、cudnn安装包
(一)下载链接
https://developer.nvidia.com/rdp/cudnn-archive
(二)选择与cuda对应的cudnn
八、安装cudnn
(一)Cudnn压缩与解压
- 压缩
mv cudnn-10.0-linux-x64-v7.6.4.38.solitairetheme8 cudnn-10.0-linux-x64-v7.6.4.38.tgz
- 解压
tar -zxvf cudnn-10.0-linux-x64-v7.6.4.38.tgz
(二)安装
- 进入cuda目录
- 执行
cp ./include/cudnn.h /usr/local/cuda/include
cp ./lib64/libcudnn* /usr/local/cuda/lib64
chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
- 查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
九、重新安装tensroflow和torch
需要重新安装tensorflow和torch,因为tensorflow和torch会根据系统重新编译
十、常见问题
场景:在原有的docker内部离线安装cuda、cudnn,使项目将gpu使用起来
(一)问题一
Could not dlopen library ‘libcudart.so.10.0’; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory
1.原因
1、cuda/cudnn/tensorflow_gpu版本没有对应上
2、环境没有加载进来
2.解决方法
1、文件拷贝
https://www.it610.com/article/1290427172426686464.htm
2、降低cuda版本(特别为cuda是10.1的版本)
https://blog.csdn.net/qq_28193019/article/details/103146116
3、conda直接安装cuda
https://www.codeleading.com/article/98663142910/
4、设置环境变量,新增文件(我最后的解决是增加了cuda.sh等文件)
https://www.it610.com/article/1290184912674037760.htm
5、配置环境变量
https://eveture.blog.csdn.net/article/details/110453680
…
(二)问题二
AssertionError: CUDA unavailable, invalid device 0 requested
1.原因
Cuda安装好了,tensorflow的版本是1.13.1,torch的版本是1.6.0,torchvision是版本是0.7.0,版本对应也没有问题
2.解决方法
https://github.com/ultralytics/yolov5/issues/474
pip install torch1.5.1+cu101 torchvision0.6.1+cu101 -f https://download.pytorch.org/whl/torch_stable.html
用这个解决的(不存在版本的问题):
https://github.com/NVIDIA/nvidia-docker/issues/904