1、安装CUDA
1、下载
https://developer.nvidia.com/cuda-downloads
(1)大概是下面这个样子,按照自己的平台来选,然后下载那个.run文件就行。
注意,这里有几个包,都下下来。准备工作已经做完,这时候,你已经知道了你需要的驱动信息并且下载了几个cuda的run文件。
(2)你自己可以建个文件夹,然后在文件夹中输入上命令下载:
sudo wget http://developer.nload.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run$:sudo
2、安装
直接安装cuda,进到下载好的cuda的run文件目录运行如下指令:sudo sh cuda~~~.run
注意:
(1)执行后会有一些提示让你确认,在第3个提示的地方,有个让你选择是否安装驱动时(Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?),选择否:因为前面我们已经安装了新的驱动,所以这里不要选择安装。
在desktop版本下会出现如下界面:
同样地,由于我之前已经安装了Nvidia的显卡驱动,这里不安装driver,那么只需要移动到Driver,按enter键,将"[]"中的X去掉即是不选择.然后在Install。
(2)其余的都直接默认或者选择是即可。
然后安装的时候会比你预想的要快很多。。。安装成功之后,会出来类似于下面形式的提示:
然后继续把接下来的几个补丁也安装上,安装路径使用默认的路径就行了。
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
到这里,你已经安装成功CUDA了,最后,还要多配置一下环境变量:
sudo vim ~/.bashrc 来编辑.bashrc配置文件,到文件最后,写入下面几句话(直接复制就行)
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
最后使其生效:
source ~/.bashrc
好了,重启一下
sudo reboot
现在你已经重启了机子了,要是没有出现很多人遇到的在登录界面进不去的情况的话,就恭喜你了。来个自带的例子测一下。
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
出现了下面的你的GPU的一些信息的话,就是真的安装成功了。
到这里,CUDA就安装成功了,其实不算是很难,注意一些情况就行了
3、查看cuda版本
nvcc --version 或者 nvcc -V
或者
cat /usr/local/cuda/version.txt
4、查看GPU使用情况
watch -n 1 nvidia-smi
nvcc -v & nvidia-smi 的区别
CUDA有两种API:
一个是驱动API(Driver Version),依赖NVIDIA驱动,由nvidia-smi查看,nvidia-smi 的结果除了有GPU驱动版本型号,还有CUDA Driver API的型号;
另一个是运行API(Runtime Version)是软件运行所需要的。
一般驱动API版本>=运行API版本即可。
遇到两者不一致问题,需要确定版本是否兼容。如果不兼容,解决方案是更改Runtime API,具体方法是安装对应Driver API版本的cuda.。
2、安装cudnn
1、下载
cuDNN深度学习加速的一些库。
下载:https://developer.nvidia.com/rdp/cudnn-download
可能要自己注册一下,之后下载其中的cuDNN v5.1 Library for Linux,下图中的第三个就是了。
下载的时候发现是一个压缩包,下完之后解压
解压出来是一个cuda文件夹,进去有两个文件夹,如下图
或者指令解压:
tar -xzvf cudnn-10.1-linux-x64-v7.6.3.30.tgz
2、安装
(提示:接下来的步骤命令直接复制就行,后面有讲解,复制方便一些)
下载完cudnn5.0之后进行解压,cd进入cudnn5.1解压之后的include目录,在命令行进行如下操作:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ #复制头文件
再将cd进入lib64目录下的动态文件进行复制和链接:
sudo cp cuda/lib64/lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
执行完之后,cuDNN算是安装完成了。
可能问题:
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link
解决方法
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8.0.2 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 && \
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 && \
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 && \
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 && \
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 && \
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 && \
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8 && \
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so.450.66 /usr/lib/x86_64-linux-gnu/libcuda.so
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 && \
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 && \
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 && \
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 && \
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 && \
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 && \
ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8.0.3 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8
ubuntu终端一次多条命令方法和区别
1.每个命令之间用;隔开:各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开:若前面的命令执行成功,才会去执行后面的命令。保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
安装剩下的三个.deb文件:
#Install the runtime library, for example:
sudo dpkg -i libcudnn7_7.6.3.30-1+cuda10.1_amd64.deb
#Install the developer library, for example:
sudo dpkg -i libcudnn7-dev_7.6.3.30-1+cuda10.1_amd64.deb
#Install the code samples and the cuDNN Library User Guide, for example:
sudo dpkg -i libcudnn7-doc_7.6.3.30-1+cuda10.1_amd64.deb
3、查看版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
4、实例测试
#Copy the cuDNN sample to a writable path.
cp -r /usr/src/cudnn_samples_v7/ $HOME
#Go to the writable path.
cd $HOME/cudnn_samples_v7/mnistCUDNN
#Compile the mnistCUDNN sample.
make clean && make
#Run the mnistCUDNN sample.
./mnistCUDNN
If cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:
Test passed!