点击小箭头阅读更舒适 如果觉得卡顿,请点击小眼睛关闭蜘蛛网特效

pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置

前言

从安装ubuntu系统配置pytorch-GPU环境开始就已经走上了不归路,本以为没什么大问题,但其实坑非常的多,在此写上安装过程中遇到的种种问题与大家分享,希望大家少走弯路!

另外要说明,安装过程中一定要仔细看cuda、cudnn的官方文档,官方文档写的过程非常的详细,仔细看之后再安装会避免不少的问题!


电脑配置

电脑为个人闲置的笔记本电脑:
处理器:i7-6700
显卡:GTX 965M(集显)
系统ubuntu16.04


之前在安装nvidia-cuda-toolkit7.5的时候出现了错误,原因是在安装nvidia驱动之后,使用命令nvcc -V进行查看的时候,系统提示没有安装nvidia-cuda-toolkit,让使用apt-get命令进行安装,但是使用该命令安装后的cuda有问题。虽然通过nvcc -V命令可以查询到tool信息,但是在usr/local却没有发现安装文件,例程找不到,程序也无法调用工具包,估计安装出错,故卸载重新安装最新版。
(所以最好不要在终端中直接下载和安装cuda,大小1G多,在终端下载很容易出现问题,最好下载好直接安装)

于是使用命令sudo apt-get autoremove nvidia-cuda-toolkit卸载当前的cuda7.5版本

下载最新的cuda_9.0.176_384.81_linux.run
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
下载支持与cuda9匹配的cudnn: cuDNN v7.0.3 (Sept 28, 2017), for CUDA 9.0
https://developer.nvidia.com/rdp/cudnn-download

注意!

1、在官网下载cuda9的时候总是下到一半就停住了,翻墙下载也一样,最后试了几次总结:与网络关系不大,与下载环境有关,可以多换着环境下载。注意不要使用迅雷和360浏览器下载、使用谷歌浏览器或火狐浏览器下载;

2、这个cuda9.0安装包里面包含了很多东西,其中包括了与当前cuda版本匹配的nvidia驱动,所以在安装前,建议在安装前卸载掉与NVIDIA相关的所有东西以防之后在安装过程中发生冲突。

《pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置》

使用sudo apt-get remove --purge nvidia*命令卸载掉所有系统上存在的nvidia驱动。

安装前进行检查(必要)

1、 检查自己的GPU是否为CUDA-capable,即是否支持cuda

使用命令 $ lspci | grep -i nvidia ,来检查gpu版本信息,然后在官网查找是否有你的显卡在支持列表中(满足条件),如果上面那个命令无法执行,执行update-pciids (generally found in /sbin) 命令更新后重新来一遍。
查询网址:http://developer.nvidia.com/cuda-gpus

2、检查自己的linux版本是否支持CUDA

使用命令:$ uname -m && cat /etc/*release,一般来说,ubuntu16.04和14.04都没有问题

3、查看自己的系统中是否安装了gcc

使用命令$ gcc --version来查看

4、查看自己的系统是否安装了正确的kernel header和package development

使用命令:$ uname -r查看
使用$ sudo apt-get install linux-headers-$(uname -r)
来安装对应的kernel header和package development

《pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置》
上面是我的配置,你可以看看你的是否符合,具体详细的问题可以上官网查询。

开始安装

选择安装方式

提供distribution-specific packages (RPM and Deb packages)和 distribution-independent package (runfile packages),这个安装方式各有其优点,但是官方建议使用runfile方式来进行安装,我也是用这个方式进行安装的。

安装cuda9.0

从官方下载cuda的时候,发现已经推送了最新版的(2017-11)9.0版,当然能用最新就用最新,虽然pytorch上面未写的支持9.0,但接口都是一样的,所以这里直接拿来用了。

1、首先禁止 Nouveau驱动
先查看以下驱动是否工作(如果打印出来信息则说明在工作)

$ lsmod | grep nouveau

创建一个 /etc/modprobe.d/blacklist-nouveau.conf 文件,里面写上

blacklist nouveau
options nouveau modeset=0

然后进行更新

$ sudo update-initramfs -u

2、然后退出图形界面,按alt+ctrl+f1进入命令行模式,输入sudo service lightdm stop 关闭图形化界面,然后切换到cuda安装文件的路径,也就是之前下载好的目录,运行sudo sh cuda_9.0.176_384.81_linux.run

然后就开始进行安装,安装过程中会安装一下几个东西:
EULA Acceptance
CUDA Driver installation
CUDA Toolkit installation, location, and /usr/local/cuda symbolic link
CUDA Samples installation and location
其中会问题是否安装openGL,强烈建议选择不要安装(除非你的显卡主设是NVIDIA),我当时选安装后重启直接进不了图形界面。其他的默认选推荐就行。

3、安装完成后,重启图形界面sudo service lightdm start
按alt+ctrl+f7之后回到图形界面,登录
注意,如果这时候登录不了,一直循环重复登录,不要着急,看下头的问题汇总。

4、重启电脑,进行Device Node 检查
检查你的路径/dev下 有无存在名为nvidia*(以nvidia开头)的多个文件(device files),如果没有
进入目录/etc/init.d中创建一个.sh文件(名字随便起),然后写入

《pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.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

写好后保存即可。

5、设置环境变量
进入/home,终端中输入 $ sudo gedit .bashrc (ubuntu)
在打开的文件末尾,添加以下两行。(64位)

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}}

保存后,执行env检查一下看是否成导入环境变量。
到此,cuda的安装就基本完成了

cuda安装后进行验证

1、检查 NVIDIA Driver是否安装成功
输入:$ cat /proc/driver/nvidia/version 输出NVIDIA Driver的版本号
2、检查 CUDA Toolkit是否安装成功
输入 : $ nvcc –V 会输出CUDA的版本信息
3、进行编译cuda提供的例子
进入例子存放的路径,默认路径是 ~/NVIDIA_CUDA-9.0_Samples
(即 /home/x/ NVIDIA_CUDA-9.0_Samples, x是你的用户名)
终端输入:$ make
开始进行编译,如果出现错误则会停止编译,注意编译过程稍微长一些,10来分钟,可以看会别的
4、运行编译生成的二进制文件。
编译后的二进制文件 默认存放在~/NVIDIA_CUDA-9.0_Samples/bin中。
切换路径 : cd ~/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release
终端输入 :$ ./deviceQuery
如果出现下面的图片,Result = PASS则说明安装成功!!

《pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置》

然后运行 bandwidthTest 程序确保系统和 CUDA-capable device可以正常的进行通信。

《pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置》

同样出现pass说明成功!
开始cudnn的安装

cudnn安装

cudnn安装相对比较简单,只要将相应的文件复制到相应的目录即可
1、进入到你下载好的cuDNN的目录
2、进行解压cuDNNU

$ tar -xzvf cudnn-9.0-linux-x64-v7.tgz

3、复制下面的文件到你的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
/usr/local/cuda/lib64/libcudnn*

到此cuda和cudnn的安装就结束了,开始pytorch的安装!

安装pytorch

很多人建议安装源码版本的,从github上进行源码下载,这样如果不使用cuda的话问题不大,如果你安装了cuda的话,在进行源码编译的时候会顺便编译cuda的文件,这时候很容易出现gcc和cmake编译的问题,本人当时安装的时候出现了许多编译问题,无法安装成功。

安装前首先引入路径环境,将以下写到~/.bashrc中,路径为anaconda的bin路径,一般为~/anaconda3/bin

export CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" #

在安装pytorch之前还需要安装一些其他依赖软件,同样通过conda进行安装,这时候可以切换成清华源,来加快下载:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

切换后安装:

conda install numpy pyyaml mkl setuptools cmake cffi

然后,通过conda进行安装pytorch即可

conda install pytorch torchvision cuda80 -c soumith

等待安装后,进行测试即可

《pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置》

Import torch后打印系统是否支持cuda,如果初出现True则说明安装成功!

print(torch.cuda.is_available())

到此就成功完成了pytorch0.2-gpu版本的安装和测试,接下来就可以愉快地进行玩耍测试了!

安装过程中出现的问题

1、分辨率发生变化:could not apply the stored configuration for monitors

好吧,在卸载掉所有nvidia驱动和cuda重新安装后,重启发现桌面分辨率出现问题…竟然找不到分辨率配置信息,导致出现的分辨率很低。我之前是1920*1080的分辨率
从网上查到了解决方法:
打开/etc/X11/xorg.conf
1、在Section “Monitor”中添加一行ModeLine

ModeLine "1920x1080" 148.5 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync

2、根据monitor的手册修改Section “Monitor”中的水平和垂直扫描参数

HorizSync    31.469 - 75.0
VertRefresh  59.86 - 70.087

2、修改Section “Screen”下的SubSection “Display“里的Modes
增加”1920×1080” ,而且要排在第一个
3、重启电脑

参考资料

1、NVIDIA官网,CUDA-toolkit-documtation:
http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions

  点赞
本篇文章采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
转载请务必注明来源: https://oldpan.me/archives/pytorch-gpu-ubuntu-nvidia-cuda90

   欢迎关注Oldpan博客微信公众号,同步更新博客深度学习文章。


发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论审核已启用。您的评论可能需要一段时间后才能被显示。