台式机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