ubuntu18.04+GTX2080 部署cuda10.2

台式机ubuntu18.04+GTX2080 部署cuda开发环境,是个理想的平台。部署不宜,遇到坑,且填且珍惜。

 

1、安装系统

主流的都是u盘用ultrISO刻录好系统18.04的iso文件安装。

分区的时候注意单独分个efi启动区(UEFI安装),别选成bios预留了,不然启动项找不到系统。(这一条在14.04试过, 18.04未试过, 但是第一次会失败, 再次重装会OK)

分区: boot, 主分区, ext4, 400MB; swap分区8G(对应内存32G); 根分区“ / ”, 主分区, ext4, 占有剩下所有大小。

用了一段时间14.04,发现swap分区太小了,只留了2G(内存32g,一般情况下内存使用都会超过2G),电脑休眠的时候数据会存到这个分区,太小了不够存放,休眠后重新唤醒,显示界面有大片花点区域,估计是数据丢失一部分导致的。以后swap多分些。

--------------------------以下内容属于标题相关的最近更新-------------------------

2、系统驱动安装前, 卸载已有nvidia驱动, 禁止nouveau驱动

2.1.sudo apt-get remove --purge nvidia*    #卸载原有的nvidia驱动
2.2.sudo gedit /etc/modprobe.d/blacklist-nouveau.conf        #创建文本文件
#打开后加上两行:1.blacklist nouveau    2.options nouveau modeset=0
2.3.sudo update-initramfs -u # 此时可以用lsmod | grep nouveau #查看没有输出即下载成功,如果有可重启再次查看

 

3 安装nvidia的指定版本驱动(tty中执行, ctrl+alt+F[1-9]  )

确定执行了: sudo apt-get remove --purge nvidia*

确定执行了:lsmod |grep nouveau #无显示。

确定tty中执行了:sudo service lightdm stop #关闭图形界面。

方法一:安装下载的 NVIDIA-XXXX.run:  sudo sh NVIDIA-XXXX.run #如果Ubuntu 安装nvidia驱动遇到 pre-install scipt failed 错误, 据说只是被nvidia开了个玩笑, 直接忽略继续下去。

方法二:
a. sudo add-apt-repository ppa:graphics-drivers/ppa
b. sudo apt-get update
c. sudo apt-get install nvidia-driver-410    #也可以选择自己需要的版本
d. 重启,使用nvidia-smi查询是否安装

方法三:

 

soft-update中直接选目标驱动安装(18.04的便利)

 

3、 装cuda10.2

我下载xxx.run的loca安装文件,注意10.2版本中选择安装哪一项,是用[X]表示选中安装,[ ] 表示不选择该项。 这个叉叉符号是反过来理解成勾勾。

这一步需要注意点比较多,直接参考官网文档(官网,官网,官网。重要的事情说三遍,官网才算权威,别瞎折腾看别人博客)

cuda官网安装文档链接[1] http://docs.nvidia.com/cuda/cuda-installation-guide-linux/#axzz4HIBXnwyt,通过官网指导运行.run文件。

但是,官网也不全完整。运行完 .run 文件,看============ Summary ============下面的运行结果提示,有missing的包,找到手动安装。

 

 

 

添加系统环境变量,写到/etc/profile的尾部

$ sudo gedit /etc/profile

 

export PATH=/usr/local/cuda-10.2/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

 

 

 

4、 检测cuda是否正常

$ nvcc -V //查看是否为10.2的nvcc版本

$ cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery

$ make

$ sudo ./deviceQuery //查看是否有cuda8.0 的gpu内容

上面这一步,可能会报错could not insert 'nvidia_340_uvm'(跳过这一步检测,后面可能会继续报相同错误,或者提示gpu0不能用)。如下:

./deviceQuery Starting...
 CUDA Device Query (Runtime API) version (CUDART static linking)
modprobe: ERROR: could not insert 'nvidia_340_uvm': Invalid argument
cudaGetDeviceCount returned 30
-> unknown error
Result = FAIL

解决参考[3]中所述: sudo apt-get remove nvidia-340 。然后继续检测sudo ./deviceQuery 看是否正常。

 

5、装cudnn, [5]是nvidia官方的cudnn指导文档(https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#axzz4qYJp45J2)。

另外,[4]和[2]都有详述,以[2]为主要参考, 目前不支持cudnn6吧,我试了下失败。

选择对应你cuda版本的cudnn下载。这里我下载的是cudnn5.1,解压后复制到相应位置,授权,增加链接关系。如下:

$ cd cudnn/include/ (解压后的cudnn目录,目录文件有可能叫cudn)

$ sudo cp cudnn.h /usr/local/cuda/include/   #复制头文件

$ cd cudnn/lib64/

$ sudo cp lib*  /usr/local/cuda/lib64/   #复制动态链接库

$ cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.5   #删除原有动态文件

$ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接

$ sudo ln -s libcudnn.so.5 libcudnn.so     #生成软链接

--------------------------以上内容属于标题相关的最近更新-------------------------

6、各种依赖项安装,详细看[4]。

6.1  装bazel,看[4],也可参考bazel官网。

6.2  装jdk8,看[4],这个也可以百度,就复制+环境变量操作而已。

6.3  装其他python 依赖:

# For Python 2.7:
$ sudo apt-get install python-numpy swig python-dev python-wheel
# For Python 3.x:
$ sudo apt-get install python3-numpy swig python3-dev python3-wheel 

 

7、编译tensorflow

 这一步要一气呵成,中途出错回到7的起点继续往后装。下载好的tensorflow编译文件备份,出错就删掉之前用过的,再用备份的。别问为什么,填过的坑,没必要再填。

7.1 从tensorflow的github仓库下载代码
$ git clone https://github.com/tensorflow/tensorflow

$ cd tensorflow根目录

$ ./configure 出现error或者没有successful,退回到7的起点。

7.2 配置GPU支持,这一步耗费时间比较长

$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu(这步有可能出现4中错误)
# Lots of output. This tutorial iteratively calculates the major eigenvalue of
# a 2x2 matrix, on GPU. The last few lines look like this.
000009/000005 lambda =2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]

7.3 创建pip包并安装它

$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
# To build with GPU support:
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
#The name of the .whl file will depend on your platform.
#这一步之前,你要进入/te//tensorflow_pkg目录查看具体生成的whl文件的名称

#进入anaconda的bin目录,执行
./pip install /tmp/tensorflow_pkg/tensorflow-0.11.0rc0-py2-none-any.w

到这里算是修道飞升成功!

 

8 、reference

[1] http://docs.nvidia.com/cuda/cuda-installation-guide-linux/#axzz4HIBXnwyt

[2] http://www.th7.cn/system/lin/201608/176823.shtml

[3] https://github.com/fchollet/keras/issues/3043

[4] http://blog.csdn.net/u010900574/article/details/52201808

[5] https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#axzz4qYJp45J2





你可能感兴趣的:(DeepLearning)