caffe2环境配置
搭建一个平台实践机器学习算法;贾扬清博士的盲粉,选择caffe2。
内存:16G
处理器:Intel® Core™ i7-7700 CPU @ 3.60GHz × 8
显卡:GeForce GTX 1070/PCIe/SSE2
硬盘:SSD 240G
其他:台式机,显示器由NVIDIA显卡驱动
操作系统:linux
系统版本:ubuntu16.04 LTS
内核:4.10.0-38-generic
系统类型:x86_64
CUDA的安装我尝试过两种方法,有大家建议的runfile安装,可以通过交互的文本界面选择不安装显卡驱动,当然了官方也建议以runfile安装,但我最后是通过deb方式安装成功的。
先说我的runfile安装后出现的情况。runfile方式安装成功后(命令行模式下输入”nvcc -V”,有版本输出,而且也填加了需要的环境变量),编译不通过,报的错误是动态库缺失(libcudadevrt和libcudart-static,这两个只是编译停止后报出来的,后续可能会有更多),但是我在文件系统中搜索了这两个库,库是存在的但是是静态库(.a格式而非.so),由于本人对编译不是很精通,就没有将编译命令单独抽出来修改,个人感觉安装不是很成功,所以选择重装。
在runfile之前我就尝试过deb方式安装,但是都没有成功。后来仔细阅读官方说明文档(CUDA_Installation_Guide_Linux,在官网可以下到对应版本的,或者安装完成后在/usr/local/cuda-8.0/doc/pdf中找),发现deb方式也可以选择不安装显卡驱动,而且可以实现选择性的更新,我本人更青睐这种可以更新的安装方式。下图所示为官方文档对deb方式选择性安装的说明截图。
因为我要自己选择安装显卡驱动(跟随deb安装的是最新的390,我想安装低版本稳定的375),所以我的CUDA8.0安装步骤是:
a. 将面向NVIDIA的开源驱动加入黑名单
方法是在‘/etc/modprobe.d/blacklist.conf’中加入如下两行,新建一个nouveau-blacklist.conf文件也可以:
blacklist nouveau
options nouveau modeset=0
b. 然后要输入以下命令更新系统的启动内核
$ sudo update-initramfs -u
可以通过”lsmod | grep nouveau”来查看是否禁用成功。
在NVIDIA官网上选择对应的版本的deb文件,然后命令行进入文件存放路径,输入以下命令
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb //对应自己版本的.deb
$ sudo apt-get update
$ sudo apt-get install cuda-tookit-8-0
$ sudo reboot
CUDA的使用还需要添加环境变量,我的做法是在自己的用户shell启动脚本中添加环境变量
$ vi ~/.bashrc
//在.bashrc文件中添加语句‘export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}’,并保存
//如果是用runfile安装,还需要添加动态链接库路径,‘export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}’
$ source ~/.bashrc //下次启动就不用重新source了
在浏览一些安装笔记时看到有人说高版本的驱动会存在问题,375问题比较少,所以选择安装375。安装的方式是大家推荐的runfile。
在NVIDIA官网上查找并下载对应系统和显卡型号版本的驱动run文件,然后命令行进入run文件存放路径,输入以下命令
$ sudo service lightdm stop //停止 X server
$ chmod +x NVIDIA-Linux-x86_64-375.66.run //对应自己的版本的.run
$ sudo ./NVIDIA-Linux-x86_64-375.66.run
$ sudo reboot
有很多安装笔记说”sudo ./NVIDIA-Linux-x86_64-375.66.run”的命令应该加三个参数,如下。
$ sudo ./NVIDIA-Linux-x86_64-375.66.run -no-nouveau-check -no-x-check -no-opengl-files
为什么我这里可以不加呢?在此一一说明。
‘-no-nouveau-check’:禁用nouveau的,前期在安装CUDA时已经禁用了
‘-no-x-check’: 命令‘service lightdm stop’已经将Xserver停掉了
‘-no-opengl-files’: 我在CUDA安装说明中看到了原因,说是如果NVIDIA显卡没有用来驱动显示器,那么OpenGL就不应该装,因为会覆盖负责驱动显示器的显卡的OpenGL,导致图形界面出错,也就是大家常见的循环登录问题。我的NVIDIA显卡也用来驱动显示器,所以我可以安装。安装说明的截图如下所示。
运行.run开始安装后NVIDIA Installer会提示几个选择:
a. 是否安装32位兼容库,我选择的是”Yes”。我第一次安装提示说没找到安装的位置,我就在自己的系统上安装了32位的库,在命令行中执行。
$ sudo apt-get install lib32ncurses5
$ sudo apt-get install lib32z1
然后再安装驱动的32位兼容库时就不会找不到安装位置
b. ‘是否安装DKMS包管理器’,我选择”Yes”
c. ‘是否运行nvidia-xconfig’产生xorg.conf配置文件,我选择”Yes”,如果不用NVIDIA显卡来驱动显示,应该选择‘No’
安装完成
a. 检验显卡驱动,命令行输入:
$ nvidia-smi
如果安装成功应该打印出显卡的工作信息,如图所示。
b. 检验CUDA安装
$ nvcc -V
安装成功后会打印CUDA的版本信息
c. 编译并测试CUDA例子
$ cuda-install-samples-8.0.sh ./ //用cuda自带的脚本安装例子到当前目录(./)
$ cd NVIDIA_CUDA-8.0_Samples
$ make // 如果编译成功会打印出‘PASS’
$ cd bin
$ ./deviceQuery //测试驱动正确安装
$ ./bandwidthTest //测试系统和显卡之间的正常通信
两个测试打印的信息如下图所示。
参照Caffe2上的方法
$ CUDNN_URL="http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz"
$ wget ${CUDNN_URL}
$ sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
$ rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig
export PYTHONPATH=/usr/local:$PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
成功的话会打印出”Success”
$ python -m caffe2.python.operator_test.relu_op_test
如果CUDA安装的有问题,输出的结果会包一个”warning”,意思是例子是在CPU-only的模式下计算的,然后就说明CUDA可能没有安装成功(也可能是显卡的问题,我曾经有一次安装就是驱动和CUDA的测试都通过了,但是 Caffe2的测试样例用的是CPU,没有用到GPU)。
驱动和CUDA安装:http://www.linuxdiyf.com/linux/26370.html
驱动和CUDA安装:http://www.cnblogs.com/devilmaycry812839668/p/6867780.html
驱动和CUDA安装:http://www.cnblogs.com/txg198955/p/5473419.html
ubuntu16.04启动进入text-mode: https://askubuntu.com/questions/870221/booting-into-text-mode-in-16-04
ubuntu16.04安装32位库:http://www.linuxdiyf.com/linux/21656.html