CUDA(Compute Unified Device Architecture)是由NVIDIA公司推出的一种高性能并行计算架构。它利用GPU的并行处理能力,能够显著提高计算效率,尤其在科学计算、数据分析、深度学习等领域具有广泛应用。CUDA提供了一套编程模型和API,使开发人员能够利用GPU并行执行计算任务,从而获得更快的计算速度。同时,CUDA还提供了丰富的开发工具和文档,方便开发人员进行并行计算开发和调试。
安装顺序
开始之前,我建议大家在搭建深度学习环境时的安装顺序为:
显卡驱动——CUDA——cuDNN——Anaconda——pytorch以及其他各种依赖包
版本选择
强烈建议大家查看一下显卡、驱动、cuda、cudnn、pytorch、python、tensorflow等等等等错综复杂的依赖包的对应关系,不要闷头照搬别人的安装教程,一定要选择好适合自己的各种版本,这个博主的总结非常全面,是一个很好的参考~
https://blog.csdn.net/qq_41498261/article/details/120067750
-----------------------------------------------------------------------------------------------------------------
到官网下载11.3
https://developer.nvidia.com/cuda-toolkit-archive
执行官网给出的命令
~$ wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
#下载完成后,先对安装包提升权限
~$ chmod 755 cuda_11.3.0_465.19.01_linux.run
#安装
~$ sudo sh cuda_11.3.0_465.19.01_linux.run
不选择驱动,其他都选择上
键盘上下键,选择install,按空格选中
接下来就是配置过程了
#首先切换到自己的根目录,修改.bashrc文件
cd
vim .bashrc
#进入.bashrc文件后,按键盘i键,在文件最后插入这几行
export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-11.3
#插入之后,命令行按esc键,然后输入:wq
#即可保存文件
#转回命令行执行以下语句,查看cuda版本
nvcc -v
#输出意为:cuda版本11.3
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Mar_21_19:15:46_PDT_2021
Cuda compilation tools, release 11.3, V11.3.58
Build cuda_11.3.r11.3/compiler.29745058_0
到官网查看自己需要的版本
https://developer.nvidia.com/rdp/cudnn-archive
我下载了cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive.tar安装包
和另外三个验证文件
切换到下载位置,运行以下命令
tar -zxvf cudnn-11.3-linux-x64-v8.2.0.53.tgz
报错:tar: 归档文件中异常的 EOF
tar: 归档文件中异常的 EOF
是因为下载包损坏,没有下载完。重新下载完整的包即可
完成解压后,将一些包拷贝到对应文件夹
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
此时可以查看cudnn的版本:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
#输出:意为cudnn版本8.2.0
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 2
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#endif /* CUDNN_VERSION_H */
首先切换到三个验证文件的目录下(也就是大的红框框选的文件)
然后安装这三个验证文件,依次执行以下语句
#依次执行
sudo dpkg -i libcudnn8_8.2.0.53-1+cuda11.3_amd64.deb
sudo dpkg -i libcudnn8-dev_8.2.0.53-1+cuda11.3_amd64.deb
sudo dpkg -i libcudnn8-samples_8.2.0.53-1+cuda11.3_amd64.deb
拷贝相关文件,并切换到目标文件路径,编译文件
sudo cp -r /usr/src/cudnn_samples_v8/ $HOME #拷贝相关文件
cd $HOME/cudnn_samples_v8/mnistCUDNN #切换到目标文件路径
sudo make clean && make #编译文件
报错:
cp: 无法创建普通文件’/home/niu/cudnn_samples_v8/samples_common.mk’: 权限不够
解决方案:
加上在cp命令前加上 sudo即可
sudo cp -r /usr/src/cudnn_samples_v8/ $HOME
报错:
编译mnistCUDNN时报错:
/bin/sh: 1: cannot create test.c: Permission denied
/bin/sh: 1: cannot create test.c: Permission denied
解决方案:
安装libfreeimage3
sudo apt-get install libfreeimage3 libfreeimage-dev
#然后重新编译
sudo make clean && sudo make
报错:
nvcc warning : The ‘compute_35’, ‘compute_37’, ‘sm_35’, and ‘sm_37’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
可以忽略,因为Makefile中采用了CUDA中的compute capability 3.5、3.7和5.0这几种计算能力,而这几种计算能力CUDA11.3中已经弃用了。
#重新执行编译好的文件
./mnistCUDNN
进入cuda安装文件夹,一般是
/usr/local/cudaa-11.6/bin
#切换到cuda安装目录,根据自己的cuda版本进行更改
cd /usr/local/cuda-11.6/bin
#执行自动卸载的脚本
sudo ./cuda-uninstaller
#在所有类目上按空格,选中,删除
#查看现在的cuda版本
$ nvcc -V
我这里安装了cuDNN7和cuDNNn8
#查看现存的cudnn
~$ sudo dpkg -l | grep cudnn
ii cudnn-local-repo-ubuntu2004-8.5.0.96 1.0-1 amd64 cudnn-local repository configuration files
ii cudnn-local-repo-ubuntu2004-8.6.0.163 1.0-1 amd64 cudnn-local repository configuration files
ii libcudnn7 7.6.0.64-1+cuda10.0 amd64 cuDNN runtime libraries
ii libcudnn7-dev 7.6.0.64-1+cuda10.0 amd64 cuDNN development libraries and headers
ii libcudnn8 8.6.0.163-1+cuda11.8 amd64 cuDNN runtime libraries
ii libcudnn8-dev 8.6.0.163-1+cuda11.8 amd64 cuDNN development libraries and headers
执行以下三条命令,删除samples、dev、和lib包
注意,一定要按顺序执行
#注意,要按顺序执行
sudo dpkg -r libcudnn8-samples
sudo dpkg -r libcudnn8-dev
sudo dpkg -r libcudnn8
查看现存的cudnn文件,发现还有一个cudnn-local-repo-ubuntu2004-8.5.0.96 存在,也需要删掉。
这个包和上述三个的删除不一样,需要执行以下语句删除:
sudo dpkg -l | grep cudnn #查看现存cudnn文件
ii cudnn-local-repo-ubuntu2004-8.5.0.96 1.0-1 amd64 cudnn-local repository configuration files
ii cudnn-local-repo-ubuntu2004-8.6.0.163 1.0-1 amd64 cudnn-local repository configuration files
#这个包和上述三个的删除不一样,需要执行以下语句删除:
sudo apt-get purge cudnn-local-repo-ubuntu2004-8.5.0.96
#再次查看还有什么cudnn存在
sudo dpkg -l | grep cudnn
#没有输出即为卸载成功