参考:
Ubuntu 16.04 上安装 CUDA 9.0 详细教程
Ubuntu16.04下安装cuda和cudnn的三种方法(亲测全部有效)
ubuntu14.04 英伟达显卡 安装cuda 8 解决循环登录问题
ubuntu16.04安装(循环登录和CUDA8.0安装教程----非常重要,以后按这个来)
深度学习环境配置:Ubuntu+anaconda+cuda8.0+cuDNN7.2.1+ pytorch源码安装+及过程中出现的错误和解决办法
建议:
1)去官网下载CUDA的同时,一定要找份相应官方的安装指导书仔细阅读,尽可能按照它的步骤一步步走,不可偷懒。同时再找几篇好的博客作为参考,安装之前做到胸有成竹。
2)在安装之前一定要详细检查自己的电脑配置(单显卡还是双显卡)、显卡的种类是否符合CUDA的安装要求、系统是否满足安装要求。
3)安装过程中每进行一项操作,都尽量去检查一下该项操作是否操作成功。
查看NVIDIA的信息:
lspci | grep -i nvidia到官网查看是否符合cuda要求以及算力,https://developer.nvidia.com/cuda-gpus
验证自己的Linux版本是否支持 CUDA(Ubuntu 16.04没问题)
uname -m && cat /etc/*release查看gcc版本
gcc –version g++ –version验证系统是否安装了kernel header和 package development
uname –rCUDA提供两种安装方式:package manager安装和runfile安装, package manager 安装方式相对简单一些,但是我在阅读别人博客的过程中发现选择这种方式在安装过程中问题可能多一点,失败的概率较大。为了减少不必要的麻烦我选择runfile安装方式。
我自己的笔记本gpu是GT 730M,算力很差,所以选择了cuda8,并且之前没有安装过显卡驱动(nvidia-smi查看),所以选择用runfile安装。首先到 https://developer.nvidia.com/cuda-zone 根据系统版本下载runfile文件, 下载runfile文件,主要根据需要的深度学习环境选择,如果pytorch要使用1.0以上版本,基本会使用cuda9,
下载完后,用MD5 检验,如果序号不和,得重新下载
md5sum cuda_9.0.176_linux.run1) 禁用 nouveau驱动
终端中运行:$ lsmod | grep nouveau,如果有输出则代表nouveau正在加载。需要我们手动禁掉nouveau。
Ubuntu的nouveau禁用方法: a、在/etc/modprobe.d中创建文件blacklist-nouveau.conf
输入命令:$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf (利用vi编辑器编辑和保存文件)
在文件中输入一下内容:
blacklist nouveau options nouveau modeset=0
b、执行: $ sudo update-initramfs –u
c、再执行: $ lsmod | grep nouveau 若无内容输出,则禁用成功,若仍有内容输出,请检查操作,并重复上述操作。
2) 重启电脑,进入登录界面的时候,不要登录进入桌面(否则可能会失败,若不小心进入,请重启电脑),直接按Ctrl+Alt+F1进入文本模式tty1(命令行界面),登录账户。
安装一些依赖
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev3) 输入,关闭图形化界面,很重要!
sudo service lightdm stop4) 切换到cuda安装文件的路径:$ cd Home/
运行$ sudo sh cuda_8.0.44_linux.run
安装过程中很漫长
(1)前面都是文档,直接一直回车 到100%就好
(2)然后accept (3)install nvidia accelerated Graphics Driver (y),因为我没有安装过nvidia gpu显卡驱动
(4)因为我是双显卡,不安装opengl和 x-fig,如果选择yes安装会出现循环登录的情况。!!
按照提示一步步操作如下:
Do you accept the previously read EULA? accept/decline/quit: accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62? (y)es/(n)o/(q)uit: y opengl? (y)es/(n)o/(q)uit: n Would you like to run the nvidia-xconfig utility to automatically update your X Configuration file so set the NVIDIA X driver will be used when you restart X? (y)es/(n)o/(q)uit: n Install the CUDA 8.0 Toolkit? (y)es/(n)o/(q)uit: y Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]: 回车 Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y Install the CUDA 8.0 Samples? (y)es/(n)o/(q)uit: y Enter CUDA Samples Location [ default is /root ]:回车 接下来会出现 Installing the CUDA Toolkit in /usr/local/cuda-8.0 … Installing the CUDA Samples in /root … Copying samples to /home/derek/NVIDIA_CUDA-8.0_Samples now… Finished copying samples. = Summary = Driver: Installed Toolkit: Installed in /usr/local/cuda-8.0 Samples: Installed in /home/derek .....省略5)输入 $ sudo service lightdm start 重新启动图形化界面,自动回到输入密码登录ubuntu的界面
如果你遇到了重复登陆情况,不用急着重装系统,官方教程上有提及,原因上一步的注中有提及,在安装openGL时你可能不注意选择了yes,请卸载cuda,然后重装。
卸载:由于登陆进入不到图形用户界面(GUI),但我们可以进入到文本用户界面(TUI)
在登陆界面状态下,按Ctrl + Alt + f1,进入TUI 执行 $ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl $ sudo /usr/bin/nvidia-uninstall 然后重启 $ sudo reboot 重新安装.run ,注意opengl的选项,在提示是否安装OpenGL时,你的是双显卡应该选则n。
6) 重启电脑,检查Device Node Verification。
执行
ls /dev/nvidia*可能出现a、b两种结果,请对号入座。
a、若结果显示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。
b、大多数结果可能会是这样
ls: cannot access/dev/nvidia*: No such file or directory
或是这样的,只出现
/dev/nvidia0 /dev/nvidiactl
a中的一个或两个,但没有/dev/nvidia-num,即文件显示不全。
不用着急也不用急着重装系统(我在安装时就是这种情况),官方指导中有详细的解决方案,但是我的方法和官方稍微有些出入。
首先要添加一个启动脚本(添加启动脚本的方法大致有两种,我采用最直接的方法,另一种可以先创建一个文件然后通过mv的方式移动到启动文件夹下,可自行百度):
sudo vi /etc/rc.local如果你是第一次打开这个文件,它应该是空的(除了一行又一行的#注释项外)。
这文件的第一行是 #!/bin/sh -e 把-e去掉(这步很重要,否则它不会加载这文本的内容) 然后把下列内容除了#!/bin/bash外复制到其中,(before exit 0 )保存退出。
#!/bin/bash /sbin/modprobe nvidia if [ "$?" -eq 0 ]; then # Count the number of NVIDIA controllers found. NVDEVS=`lspci | grep -i NVIDIA` N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l` NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l` N=`expr $N3D + $NVGA - 1` for i in `seq 0 $N`; do mknod -m 666 /dev/nvidia$i c 195 $i done mknod -m 666 /dev/nvidiactl c 195 255 else exit 1 fi /sbin/modprobe nvidia-uvm if [ "$?" -eq 0 ]; then # Find out the major device number used by the nvidia-uvm driver D=`grep nvidia-uvm /proc/devices | awk '{print $1}'` mknod -m 666 /dev/nvidia-uvm c $D 0 else exit 1 fi下次重启时,你应该能直接看到/dev目录下的三个nvidia的文件 输入:$ ls /dev/nvidia* 结果显示:/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
成功!
7)配置环境变量
在/etc/profile ~/.bashrc上写会更好.
/etc/profile影响所有用户,~/.bashrc影响当前用户使用的bash shell 。
分别打开:
sudo gedit /etc/profile sudo vim ~/.bashrc最下面加入:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}保存后立即生效:
sudo -s source /etc/profile source ~/.bashrc检查环节变量有没有出现cuda:
env8)重启进行验证:
查看显卡驱动
nvidia-smi
显示驱动版本,显存大小,正在运行的进程等等
a、 验证驱动版本 敲入 $ cat /proc/driver/nvidia/version 结果显示 NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.81 Sat Sep 2 02:43:11 PDT 2017 GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) b、 验证CUDA Toolkit 敲入 $ nvcc -V 会输出CUDA的版本信息 如果是这样的: The program 'nvcc' is currently not installed. You can install it by typing: sudo apt-get install nvidia-cuda-toolkit 可能是环境配置没有成功,请重复上述步骤7)。
预先下载cudnn文件包,https://developer.nvidia.com/rdp/cudnn-archive
解压下载的文件,可以看到cuda文件夹,在当前目录打开终端,执行如下命令
3.1 cuDNN安装 下载下来以后,发现是一个tgz的压缩包,使用tar进行解压 tar -xvf cudnn-8.0-linux-x64-v5.1.tgz 安装cuDNN比较简单,解压后把相应的文件拷贝到对应的CUDA目录下即可 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* 3.2 更改动态文件链接 cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件 以下的两步设置软连接时,一定要注意自己电脑的/usr/local/cuda/lib64/下libcudnn.so.5.1.10名字,要依据自己的电脑上的文件来定 sudo ln -s libcudnn.so.7.1.5 libcudnn.so.7 #生成软链接 sudo ln -s libcudnn.so.7 libcudnn.so #生成软链接 3.3 cuDNN后续升级 (1)重复3.1的步骤 (2) cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件 sudo ln -s libcudnn.so.5.1.x libcudnn.so.5 #生成软链接 sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接 解释,根据升级对应的版本号修改x符号查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2三、pytorch环境
我习惯使用anaconda的虚拟环境,对不同的深度学习sota代码,配置不同版本虚拟环境。
创建虚拟环境 conda create -n env_my python=3.7 激活虚拟环境,先激活再安装其他包 source activate env_stereo 安装cuda支持 conda install cuda80 -c pytorch 安装pytorch和 torchvision conda install pytorch=1.3.0 torchvision然后git相关项目,在虚拟环境中,按照需求pip install 以及编译
结束后退出虚拟环境
退出虚拟环境 source deactivate 如果需要删除虚拟环境 conda remove -n env_my --all