首先吐个槽,ubuntu + nvidia的显卡驱动简直是反人类,害的我折腾了一天多。
一、问题及解决办法
寒假放假回家没事干,正好给家里电脑升级了显卡gtx1050可以跑跑CNN。我在实验室的显卡是560,比较老了,按着实验室的环境配置流程走下来居然不能用,症状就是在Python中不能成功的import caffe,然后重启后无限循环登录。
问题:
不能进入ubuntu的图形界面,在登录界面循环。
解决办法:
Nvidia显卡驱动的锅,卸载显卡驱动,按Ctrl+Alt+F1进入终端模式登录,输入命令
- sudoapt-getremove--purgenvidia*
- sudoreboot
二、安装流程
2.1 Opencv安装
在caffe中其实是调用了Opencv的一些服务的,因此我们首先需要安装Opencv,安装流程如下:
(1)在Opencv官网下载
http://opencv.org/downloads.html需要的Opencv linux版的安装包,这里我选择的Opencv 2.4.12;
(2)依赖包的安装,主要命令如下:
- sudoapt-getinstallbuild-essential
- sudoapt-getinstalllibgtk2.0-devlibavcodec-devlibavformat-devlibtiff4-devlibswscale-devlibjasper-dev
- sudoapt-getinstallcmake
- sudoapt-getinstallpkg-config
- cmake-DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local..
- make
- sudomakeinstall
2.2 配置其他依赖
- sudochmoda+xxxx.sh
- sh./xxx.sh
- #!/bin/bash
- #ATLAS
- echo"===========atlas=============="
- apt-get-yinstalllibatlas-base-dev
- #snappy
- echo"===========snappy=============="
- #apt-get-yinstallsnappy
- apt-get-yinstalllibsnappy-dev
- #boost
- echo"===========boost=============="
- apt-get-yinstalllibboost-dev
- apt-get-yinstalllibboost-filesystem-dev
- apt-get-yinstalllibboost-system-dev
- apt-get-yinstalllibboost-thread-dev
- apt-get-yinstalllibboost-python-dev
- #protobuf
- echo"===========protobuf=============="
- apt-get-yinstalllibprotobuf-dev
- apt-get-yinstallprotobuf-compiler
- apt-get-yinstallpython-protobuf
- #leveldb
- echo"===========leveldb=============="
- apt-get-yinstalllibleveldb-dev
- #lmdb
- echo"===========lmdb=============="
- apt-get-yinstallliblmdb-dev
- #hdf5
- echo"===========hdf5=============="
- apt-get-yinstalllibhdf5-dev
- #glog
- echo"===========glog=============="
- apt-get-yinstalllibgoogle-glog-dev
- #gflag
- echo"===========gflag=============="
- apt-get-yinstalllibgflags-dev
- #cython
- echo"===========cython=============="
- apt-get-yinstallcython
- #scipy
- echo"===========scipy=============="
- apt-get-yinstallpython-scipy
- #scikit-image
- echo"===========scikit-image=============="
- apt-get-yinstallpython-skimage
- #pyyaml
- echo"===========pyyaml=============="
- apt-get-yinstallpython-yaml
- #easydict
- echo"===========easydict=============="
- apt-get-yinstallpython-pip
- #指定使用科大镜像源安装easydict
- pipinstalleasydict-ihttps://pypi.mirrors.ustc.edu.cn/simple
- ##错误排查
- #修复一个比较奇怪的一定要检查这个目录是否存在的问题
- mkdir-p/usr/lib64
- #修复cuda链接库找不到的问题
- echo"/usr/local/cuda/lib64">cuda.conf
- cpcuda.conf/etc/ld.so.conf.d
- ldconfig
- sudoapt-getinstallgit
- gitclonehttps://github.com/BVLC/caffe.git
i:把USE_CUDNN := 1这一行的注释取消掉,因为gtx1050的算力是6.1高于3.0,是可以使用cuDNN加速的,这里具体看自己的显卡配置;
ii:在INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include行后加空格,然后添加/usr/include/hdf5/serial
(4)编译caffe
i:在计算机中搜寻libhdf5_serial.so.10.1.0文件,找到其所在目录,在终端中进入该目录,并执行以下命令:
- sudolnlibhdf5_serial.so.10.1.0libhdf5.so
- sudolnlibhdf5_serial_hl.so.10.0.2libhdf5_hl.so
- sudoldconfig
- makeall-j4
- maketest-j4
- makeruntest-j4
- makepycaffe-j4
- makedistribute
其他的老显卡,比如我实验室的GTX 560不用这么麻烦就可以,我也只配置过这两个显卡,10系显卡最好按照我这里的方法进行操作。
(1)去Nvidia官网下载GTX 1050驱动,网址如下:
http://www.geforce.cn/drivers
- sudochmoda+xNVIDIA-Linux-x86_64-375.26.run
- sudoservicelightdmstop
使用Ctrl + Alt + F1进入终端界面并登录
(4)安装Nvidia驱动
在终端中进入之前下载的驱动程序所在的目录并执行以下命令:
- sudo./NVIDIA-Linux-x86_64-375.26.run--no-x-check--no-nouveau-check--no-opengl-files
安装好驱动程序以后开启Ubuntu图形界面
- sudoservicelightdmstart
至此Nvidia驱动安装完成。
2.5 Cuda安装
同样,这里的Cuda安装时也不要使用命令行直接安装, 去Nvidia官网https://developer.nvidia.com/cuda-downloads下载cuda进行安装
这里同样要注意,下载时要
选择runfile类型文件,具体的选择类型如下图所示:
文件有1.4G大小,最好用迅雷下会快一些。
下载好Cuda,安装过程如下:
- shcuda_8.0.27_linux.run--override
程序会问你要不要安装Nvidia驱动,这里
千万不要选择安装,因为我们已经安装过了,而且GTX1050这里安装的驱动与我们之前安装的驱动版本是不一样的,
如果选择安装又会出现无限循环登录的问题(血的教训);
接下来的安装过程一路选择yes,然后按照默认的来就可以了。
接下来的安装过程一路选择yes,然后按照默认的来就可以了。
2.6 cuDNN安装
去Nvidia官网 https://developer.nvidia.com/rdp/cudnn-download下载cuDNN安装包,选择这个: Download cuDNN v5.1 (August 10,2016),for CUDA 8.0版本
解压安装包以后会出现cuda的目录,进入该目录
- cdcuda/include/
- sudocpcudnn.h/usr/local/cuda/include/
- cd../lib64
- sudocplib*/usr/local/cuda/lib64/
- sudochmoda+r/usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*
- cd/usr/local/cuda/lib64/
- sudorm-rflibcudnn.solibcudnn.so.5
- sudoln-slibcudnn.so.5.1.5libcudnn.so.5
- sudoln-slibcudnn.so.5libcudnn.so
- sudogedit/etc/ld.so.conf.d/cuda.conf
- sudomakeall-j4
- cdbin/x86_64/linux/release
- ./deviceQuery
在已经配置好的eclipse + pydev环境中,新建python工程和源程序,并在工程名下右键——Properties——PyDev-PYTHONPATH——External Libraries中Add Source folder中选择/home/hanchao/caffe/python路径
在源程序中输入
- importcaffe
- print'helloworld'
-------------------------------------------------------------------------------更新的分割线-------------------------------------------------------------------
如果在编辑pycaffe时出现”python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有这样的文件或目录“问题时,注意修改Makefile.config文件
把
修改为
- PYTHON_INCLUDE:=/usr/include/python2.7\
- /usr/lib/python2.7/dist-packages/numpy/core/include
- PYTHON_INCLUDE:=/usr/include/python2.7\
- /usr/local/lib/python2.7/dist-packages/numpy/core/include
参考链接: