本机配置:i7-8700 GTX1070。经测试,本方案在i7-9700K TITAN XP; i7-7700K TITAN X上都也适用:
在安装之前首先感谢实验室师弟写的博客,但是写的估计有点乱,为了实验室以后装cuda这些东西方便一些,这里配上图,改进了一下之前师弟写的教程,更易懂一点:
进入软件更新,附加驱动,选择nvidia-384,之后点击右下角的应用更改,然后输入密码,等它安装:,你也可以通过手动安装驱动安装。
安装成功之后会提示我们重启:
然后我们选择重启。或者参考网址。
重启之后我们进入终端,输入命令:
nvidia-smi
如果能显示出下图类似的信息,则说明安装成功了:
在安装之前我们先更新一下,具体操作如下所示:
之后:
可能需要更新一些东西,我们输入y,然后回车就可以啦。之后系统就会自动下载更新一些东西。装完之后我们会显示如下信息:
就是不报错就可以了,我们接下来做一些测试:
1.验证自己的电脑是否有一个可以支持CUDA的GPU:
你可以在电脑的配置信息中找到显卡的具体型号,如果你是双系统,在windows下的设备管理器中也可以查到显卡的详细信息;在ubuntu下面的话,你可以通过下面这行命令来简单查看一下NVIDIA GPU版本信息:
lspci | grep -i nvidia
2.验证自己的linux版本是否支持CUDA:
uname -m && cat /etc/*release
3.验证系统是否安装了gcc
gcc --version
其实这个刚装完系统的话应该都装好了,但是为了保险起见,你还是可以查看一下,如果你没有安装的话,你可以采取下面的命令对其进行安装:
sudo apt-get install build-essential
4.验证系统是否安装了kernel header和package development:
a.查看正在运行的系统内核版本:
uname -r
b.安装对应kernel版本的kernel header和package development:
sudo apt-get install linux-headers-$(uname -r)
这个的话表示系统中已经有了,不用重复安装。
如果以上各项检查均满足要求的话,接下来就可以正式地进入安装界面了,如果有些地方没有满足要求的话,你需要参考cuda的官方文档,里面有详细的针对每个问题的解决方案。在以下链接中可以找到:https://docs.nvidia.com/cuda/
我们首先进入nvidia的官方cuda9.0下载网页。https://developer.nvidia.com/cuda-90-download-archive
我们按照上述方案进行选择,之后选择下载Base Installer。下载完成之后的话,我们会在ubuntu的下载目录下找到:
但是我一般将其安装在home文件夹下面,所以我需要将其复制到home文件夹下面:
之后的话,我们可以采用MD5检验序号,看看序号是否会对得上:
cuda_9.0.176_384.81_linux.run
可以看到这里的版本是对到的,那么没有什么问题,一切都很正常。接下来的话,我们需要采用runfile安装cuda:
1.禁用nouveau驱动:
lsmod | grep nouveau
可以看到,我的电脑是没有输出的。如果有输出的话则代表nouveau正在加载,我们需要手动禁止掉(由于我的电脑是已经被禁止掉了的,所以下面禁止的方法并没有试验过,大家慎重一点):
Ubuntu的nouveau禁用方法:
a、在/etc/modprobe.d中创建文件blacklist-nouveau.conf,命令如下:
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
在文件中输入以下内容:
blacklist nouveau
options nouveau modeset=0
b.执行命令:
sudo update-initramfs –u
之后再次查看是否禁止成功:
lsmod | grep nouveau
若无内容输出,则禁用成功,若仍有内容输出,请检查操作,并重复上述操作。
2.按Alt + ctrl +F1进入命令行界面:
输入自己的用户名以及密码:
这里的话会显示中文乱码,我们可以下载一个包来解决这个问题:
sudo apt-get install fbterm
之后启动它:
sudo fbterm
然后我们进入zhiqianghe这个用户(每个人设定的不同):
su zhiqianghe
得到下面的界面:
之后我们关闭图形化界面:
sudo service lightdm stop
之后我们再切换到我们cuda文件的位置,在我这里就是在当前目录下,然后我们运行它:
sudo sh cuda_9.0.xx_xx_linux.run
对应自己的文件名称。之后我们进入nvidia的协议里面,需要我们看他的协议:
我们敲回车,敲到100%
之后它显示问我们是不是接受这个东西,我们在终端输入accept。
然后提示是否安装nivdia的驱动,我们不需要安装这个,输入n,之后敲回车:
遇到提示是否安装openGL ,选择no(如果你的电脑跟我一样是双显,且主显是非NVIDIA的GPU在工作需要选择no,否则可以yes),其他都选择yes或者默认即可。(如果您的电脑是双显卡且在这一步选择了yes,那么你极有可能安装完CUDA之后,重启图形化界面后遇到登录界面循环问题:输入密码后又跳回密码输入界面。 这是因为你的电脑是双显,而且用来显示的那块GPU不是NVIDIA,则OpenGL Libraries就不应该安装,否则你正在使用的那块GPU(非NVIDIA的GPU)的OpenGL Libraries会被覆盖,然后GUI就无法工作了。)
安装成功后,会显示installed,否则会显示failed。
之后我们重新启动图形化界面:
sudo service lightdm start
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了。如果不能进入的话,参考以下方案,否则跳过:
如果你遇到了重复登陆情况,不用急着重装系统,官方教程上有提及,原因上一步的注中有提及,在安装openGL时你可能不注意选择了yes,请卸载cuda,然后重装。
卸载:由于登陆进入不到图形用户界面(GUI),但我们可以进入到文本用户界面(TUI)在登陆界面状态下,按Ctrl + Alt + f1,进入TUI
执行
$ sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl
$ sudo /usr/bin/nvidia-uninstall
然后重启
$ sudo reboot
重新安装.run 再次安装时请一定留意,在提示是否安装OpenGL时,你的是双显卡应该选则n。
进入ubuntu之后我们重启电脑:
sudo reboot
之后检查Device Node Verification
ls /dev/nvidia*
包含一个类似/dev/nvidia-uvm的,则安装成功。
大多数结果可能会是这样
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成功!
由于我这里是一次成功,所以上述方案仅供参考,并没有实践过。
接下来我们设置环境变量:
sudo gedit /etc/profile
上述命令会打开一个文件,我们在末尾添加两行:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
我这里装的是cuda9.0如果你们装的不是的话,这个cuda-9.0这个目录就还得改一下。
如果是32位系统的话:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
之后我们选择重启电脑:
sudo reboot
a.之后我们检查上述环境是否设置成功:
cat /proc/driver/nvidia/version
得到上述结果。
b.再验证CUDA Toolkit:
nvcc -V
得到下图结果:
如果你的是:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
这样的话,那就表明环境变量没有添加成功,你需要按照上文中说的添加环境变量,再去添加一下。
接下来我们尝试编译一下cuda的例子:
我们首先需要进入NVIDIA_CUDA-9.0_Samples这个文件夹下面,在这下面打开终端,然后make一下:
我这里的话也是一次就成功了,如果出现没有gcc报错的话,我们可以安装一下:
sudo apt-get install gcc
如果编译成功,最后会显示Finished building CUDA samples,如下图所示:
之后的话,我们运行编译生成的二进制文件:进入到这个NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release文件夹下面,输入:./deviceQuery
./deviceQuery
结果如下图所示:看到类似如下图片中的显示,则代表CUDA安装且配置成功,其中 Result = PASS代表成功,若失败 Result = FAIL:
最后再检查一下系统和CUDA-Capable device的连接情况:
终端输入 : $
./bandwidthTest
看到类似如下图片中的显示,则代表成功:
我们需要进入nvidia的官网:https://developer.nvidia.com/rdp/cudnn-archive,区选择我们需要的版本:
然后提示我们登录,有帐号的话就登录,没有的话就注册一个:
之后我们点击上图的安装包进行下载:
我们将其解压,解压之后名称会变为cuda:
之后我们将其移入home文件夹下面,然后进入cuda的include文件夹下面,执行下面这个命令复制头文件:
sudo cp cudnn.h /usr/local/cuda/include/
之后在终端进入cuda/lib64文件夹下面,运行以下命令:
#复制动态链接库
sudo cp lib* /usr/local/cuda/lib64/
#删除原有动态文件
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7
#生成软衔接
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7
#生成软链接
sudo ln -s libcudnn.so.7 libcudnn.so
随后需要将路径/usr/local/cuda/lib64 添加到动态库:
sudo gedit /etc/ld.so.conf.d/cuda.conf
在打开的文件里面输入:
/usr/local/cuda/lib64
终端下接着输入命令使链接生效:
sudo ldconfig
之后查看一下是否链接成功:
sudo ldconfig -v
可以看到,我们这里是有这个文件的。ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
之后用下面这个命令查看是否安装成功:
我们首先看一下有没有python:
一般都有,没有的话安装一下:
之后安装一下pip:
sudo apt-get install python-pip
更新一下pip:
sudo pip install -U pip
安装tensorflow-gpu 1.9.0:
sudo pip install tensorflow-gpu==1.9.0
之后进入python输入以下命令:
import tensorflow as tf
print(tf.__version__)
我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!