安装cuda与cudnn
- 查看当前设备和cuda驱动版本:
ubuntu-drivers devices
nvidia-smi
注意:高版本的驱动可以向下兼容低版本的cuda - 下载cuda
1). 查看驱动所能支持的cuda版本
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#abstract
2). 下载对应的cuda版本
https://developer.nvidia.com/cuda-toolkit-archive
(注释:下载时记得选择对应的系统版本,下载类型选择runfile(local),
由于版本的不同可能出现有两种情况:
第一种:直接下载,注意patch也要下载,这是补丁,就是显示出来可以下载的都要下载
第二种:出现一个wget … ,直接在新页面中打开wget后面的链接就行,下面的sudo sh …是具体的安装命令) - 安装cuda
找到下载cuda的目录,然后 sudo sh 文件名 (如:sudo sh cuda_11.1.0_455.23.05_linux.run),注意问是否要下载驱动时(一般都是第一个),输入n。 (如果显示more百分比,一直摁enter到100%即可,或者直接ctrl+c直接阅读完毕,然后输入是accept、y和enter键即可)
注意:有补丁的也要安装补丁,步骤一样 - 将cuda的目录设置到PATH(注意你是cuda还是cuda-10.0,注意你的版本号),文件路径 ~/.bashrc
export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
最后source ~/.bashrc
检测是否安装成功:
(注意: 找不到gcc或者make的话就下载
sudo apt-get install gcc
sudo apt-get install make
)
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
如果输出Result=PASS 则成功
- 安装cudnn(这里cuda不用改成对应的版本号,直接cuda即可)
链接路径:https://developer.nvidia.com/rdp/cudnn-archive
下载与cuda对应的cudnn版本,文件类型如下:cuDNN Library for Linux
解压cudnn文件(注意解压后是一个cuda文件夹),命令如下:tar -zxvf cudnn-9.0-linux-x64-v7.1.tgz
然后输入如下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/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*
- 查看cuda与cudnn版本(好像会自动)
cuda: cat /usr/local/cuda/version.txt
cudnn: cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
- 卸载显卡驱动(如果需要卸载的话)
sudo apt-get remove nvidia*
nvcc -V 与 cat查看cuda版本不一致解决方法:
- 卸载原先工具:
sudo apt-get autoremove nvidia-cuda-toolkit
- 进入 /usr/local/cuda/bin 查看是否有nvcc,有说明cuda正常安装了,没有则是cuda没有安装,需要重新安装
有nvcc的情况下:sudo gedit ~/.bashrc
添加如下命令(注意:路径换成你自己安装的版本,例如cuda-10.0换成cuda-11.0之类的,这里请一定按路径是在""中的格式,其他格式都试过了,不行):
export LD_LIBRARY_PATH="/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH"
export PATH="/usr/local/cuda-10.0/bin:$PATH"
export CUDA_HOME="/usr/local/cuda-10.0:$CUDA_HOME"
最后:source ~/.bashrc 让更改的配置生效,查看nvcc -V 发现与cat一致。
为什么nvcc -V 与nvidia-smi不一致
因为cuda有两种API,分为运行API和驱动API,只要驱动API版本高于运行时API就没关系。nvidia-smi显示的是驱动API,nvcc -V显示的是运行时API。