Intel+Nvidia双显卡笔记本Linuxmint18下安装CUDA+OpenCV+Caffe的安装记录

一.安装环境:

硬件:微星GE70 2PC 089-XCN,14年性价比较高的一款,然而两年多过去后配置已经落伍...当年的价格现在能买到i7+GTX1050了...

    CPU:intel i5 4200H  双核四线程  2.8GHz

    显卡:Intel HD 4600 + Nvidia GTX 850M

    硬盘:Linux系统分配了100G,现在我主要还是用Windows所以给Linux分的比较少,不过看大多数做深度学习的/home至少分300个G...

    内存:16G

系统:LinuxMint18.1,基于Ubuntu 16.04系统。

    选择LinuxMint的原因就是,Ubuntu上显卡驱动不好装,装不上,装上之后重启不能登录桌面...Mint看起来人性化些,而且作为桌面操作系统用也是不错的选择(除了没有QQ和迅雷这俩我离不开的软件...还有微软Office套件...)

准备安装:CUDA8.0+OpenCV3.2+Caffe

二.Windows10+LinuxMint18.1双系统安装

    这个单开一篇文章说吧...(我还没写,请先参考这篇可读性比较好的文章:UEFI下Win 8.1+Ubuntu 14.04安装教程

    简单来讲,推荐选择UEFI引导方式,硬盘分区表GPT,Windows那部分保持不变,留出个几百G的空余(留多少看你心情吧),然后100~300M做EFI引导分区,和内存等大的交换分区,剩下全给/ Ext4,或者你单独给/home多少多少...

    安装时候有个第三方驱动的问题,使用第三方驱动需要关闭安全引导,一定记住你定的那个密码,重启后它问你那个密码不是直接让你输入密码,而是问你第几个数字是啥,有意思...

    我建议装完系统后更新一下,有的教程说不要更新,我感觉更新总是好的...Mint的软件源尽量不要改,我改成过中国的,然后就出错了...网速能忍的情况下尽量不要改...如果你知道哪个源好用评论告诉我 _(:з」∠)_

    系统安装倒是不难,接下来最头疼的问题来了,就是安装驱动。

三.Nvidia显卡私有驱动安装

    你可能会遇到声卡驱动问题导致电脑没声音,网卡驱动问题导致不能上网,触摸板驱动问题导致触摸板不能用,键盘驱动...键盘能有啥问题顶多是键盘灯不亮...没办法你的电脑本来就不是为了Linux而设计的(不过还真有出厂预装Ubuntu的),缺少驱动问题要自己想办法了。

    下面只说显卡驱动问题。有个尴尬的问题就是系统默认安装了nouveau开源驱动,你是可以把它加黑名单,但貌似在拔掉显卡前这个驱动是不会停止工作的,你也就装不上官方驱动...显卡咋拔?拔了不黑屏了吗...就算禁用,那也黑了...尤其这双显卡...不管了...

    进入系统设置最底下有个驱动管理,点进去后你能看到,给你推荐了驱动,Intel那里选择intel-microcode就好,NVIDIA那里有两个,一个NVIDIA官方的闭源驱动,一个叫nouveau的开源驱动。显然闭源的效果要比开源的好,而且你要装CUDA肯定需要官方的显卡驱动。但由于Linux的政策限制,预装了nouveau驱动,在装官方驱动之前,你要把这个开源驱动加入黑名单,不加的话官方驱动装不上。

    我尝试了从官网下载最新的驱动安装包然后进命令行模式装,可惜各种报错...所以还用系统推荐的吧...

    1.为了将nouveau加入黑名单,编辑 /etc/modprobe.d/blacklist.conf ,在文件后面加入blacklist nouveau.

    2.到系统设置里找驱动管理,选择两个推荐的驱动,点应用更改。

    3.等,我装的时候等了5个小时,进度条一直剩一点点,然后我就直接重启了,重启后会进入那个上面说的关闭安全引导的步骤,输对密码后就可以正常进系统了。

    最好是多等等,我等一个小时时候进度条也剩那一点,直接重启后桌面就开始崩溃了,显然驱动没装好...说实话我现在都不知道装不上是因为网速慢还是看脸,所以嘛,多等等就是了...毕竟重装了6遍系统才成功把显卡驱动装上...

    装好后,系统右下角会有一个N卡的logo,点它进NVIDIA X Server Setting可以切换显卡的,每次切换都需要注销。(如果你也用微星你会发现电源灯由蓝色变为红色,证明独显工作了。装好独显驱动后steam里好多游戏都可以流畅运行!)

    

 

    你也可以进一步确认一下,进终端输入nvidia-smi后出现以下信息表示安装成功。

 

四.安装CUDA8.0和cudnn v5.1

    去NVIDIA开发者官网下载最新的CUDA安装包。如图

 

    此时我下载的是cuda_8.0.44_linux.run

    版本选择16.04,因为Mint18是基于Ubuntu16.04的。然后选runfile那个。

    执行命令:

    sudo sh cuda_8.0.44_linux.run  --override

    启动安装程序,按住空格到最后,老长了,相信你不会看的,输入accept接受条款。

    Q1: You are attempting to install on an unsupported configuration. Do you wish to continue? 咋不支持了,配置低还是怎么...那也不能不装啊,输入y

    Q2: Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?                          别装,刚才装过了。再装装出问题来...害怕,输入n

    Q3: Install the CUDA 8.0 Toolkit?     y

    Q4: Enter Toolit Location        回车就行默认安装路径:/usr/local/cuda-8.0

    Q5: Do you want to install a symbolic link at /usr/local/cuda?          y

    Q6: Install the CUDA 8.0 Samples?          y

    Q7:Enter CUDA Samples Location       还是回车,默认路径:/home/用户名

    装完CUDA8.0后,需要将cudnn相关头文件和so文件放入cuda8.0相应的目录中:

    先解压cudnn

    然后,我是直接图形界面移动的,命令的话:

cd /home/用户名/Softwares/deeplearning_softwares/cudnn;
cd cuda/include/  
sudo cp cudnn.h /usr/local/cuda/include/   
cd ../lib64   
sudo cp lib* /usr/local/cuda/lib64/   
sudo chmod a+r /usr/local/cuda/include/cudnn.h  /usr/local/cuda/lib64/libcudnn*

    建立软连接,终端输入:

cd /usr/local/cuda/lib64/  
sudo rm -rf libcudnn.so libcudnn.so.5  
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5  
sudo ln -s libcudnn.so.5 libcudnn.so  

    设置环境变量,终端输入:

sudo gedit /etc/profile 

    打开文件后在末尾加入(要是没装gedit就装一个,用啥打开都行)

    PATH=/usr/local/cuda/bin:$PATH

    export PATH

    保存后,创建链接文件

sudo vim /etc/ld.so.conf.d/cuda.conf  

    按i进入插入模式,增加下面一行

    /usr/local/cuda/lib64

    ESC退出,输入 :wq 保存退出

    终端输入:

sudo ldconfig

    使链接生效。

    cuda Samples测试

    打开CUDA 8.0 Samples默认安装路径,终端输入

cd /home/用户名/Workspace/CUDA_Samples/NVIDIA_CUDA-8.0_Samples  
sudo make all -j4

    (看起来缺了什么文件,我暂时不知道...)

 

    我处理器4线程的所以写j4,为了能效率高点,你8线程的也可以j8,双线程的就直接make all吧...

    如果出现了“unsupported GNU version! gcc versions later than 5.3 are not supported!”的错误,这是由于GCC版本过高,在终端输入

        cd /usr/local/cuda-8.0/include  

        sudo cp host_config.h host_config.h.bak  

        sudo gedit host_config.h  

        ctrl+f寻找有“5.3”的地方,只有一处,如下  

        # if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)  

        #error -- unsupported GNU version! gcc versions later than 5.3 are not supported!  

        将两个5改成6,即  

        #if __GNUC__ > 6 || (__GNUC__ == 6 && __GNUC_MINOR__ > 3)  

        保存退出,继续在终端输入  

        cd /home/clark/Workspace/CUDA_Samples/NVIDIA_CUDA-8.0_Samples   

        sudo make all -j4 (4核)  

    完成后继续向终端输入 

cd bin/x86_64/linux/release
./deviceQuery

    出现如下图所示,表示成功安装cuda

五.安装OpenCV 3.2

    从OpenCV官网中下载opencv3.2.0版本到本地。解压到 /home/用户名/Compile/opencv-3.2.0/

    先安装OpenCV的依赖

sudo apt-get -qq remove ffmpeg x264 libx264-dev  
sudo apt-get -y install build-essential cmake pkg-config libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev   
sudo apt-get -y install libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev  
sudo apt-get -y install libv4l-dev libtbb-dev libgtk2.0-dev libfaac-dev libmp3lame-dev unzip  
sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev ibvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg  

    在本地编译安装OpenCV3.2.0

cd /home/用户名/Compile/opencv-3.2.0/
mkdir build  
cd build
cmake -D CMAKE_BUILD_TYPE=Release ..  
make -j4  
sudo make install

    默认安装, 头文件会在/usr/local/include中, so文件在/usr/local/lib中。

六.安装Caffe

    先安装Caffe的依赖

sudo apt-get install build-essential #必要的编译工具依赖  
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler  
sudo apt-get install --no-install-recommends libboost-all-dev  
sudo apt-get install libatlas-base-dev  
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

    安装pip和easy_install

sudo apt-get install python-pip  
sudo apt-get install python-setuptools 

    从github上下载caffe源码(默认下载位置是你当前命令行所在的位置,默认为/home)

sudo apt-get install git  
git clone https://github.com/BVLC/caffe.git  

    下载完放到/home/用户名/Compile/caffe/python

    安装Python的依赖

cd /home/用户名/Compile/caffe/python  
sudo su  
for req in $(cat "requirements.txt"); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done  
exit

    caffe的依赖安装完毕后,开始编译caffe源码

cd /home/cty/Compile/caffe-master/  
cp Makefile.config.example Makefile.config

    把example的内容抄到config文件后,我们打开Makefile.config这个文件修改它的内容。

      USE_CUDNN := 1                  #取消该句注释    
      OPENCV_VERSION := 3         #取消该句注释  
      PYTHON_INCLUDE := /usr/include/python2.7 /usr/lib/python2.7/dist-packages/numpy/core/include    
      WITH_PYTHON_LAYER := 1   #取消注释    
      INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/local/include/opencv /usr/local/include/opencv2 /usr/include/hdf5/serial   
      LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

    终端输入:

cd /usr/lib/x86_64-linux-gnu  
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so  
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so  
sudo ldconfig

    然后

cd /home/用户名/Compile/caffe/
make all -j4

    出现了错误如图

    原因是我们没有安装protobuf.git

    所以我们先

make clean

    然后去github下载安装protobuf.git,放在哪你知道的

git clone https://github.com/google/protobuf.git

    然后

cd /home/cty/Compile/protobuf
chmod +x autogen.sh
./autogen.sh

    然后又出错了,autoreconf:not found

    好我们再安装automake工具

sudo apt-get install autoconf automake libtool

 

    这回我们可以回到make all -j4了

cd /home/用户名/Compile/caffe
make all -j4

    然后

make runtest -j4
make pycaffe -j4

    又出错,爆炸,喝咖啡那么难吗,我可能看的是“假教程”,用的是假"Linux",输入的是"假命令”...

    fatal error: numpy/arrayobject.h:没有那个文件或目录,原因没装python-numpy

sudo apt-get install python-numpy

之后再make pycaffe -j4就好了

然后

make distribute

接下来

cd /home/用户名/Compile/caffe/python
python
>>> import caffe

没报错,说明caffe装好了。

七.测试例子:

先下载mnist数据集

cd /home/用户名/Compile/caffe/data/mnist/  

./get_mnist.sh

不建议你用这个命令下载,因为网络问题,根本下不下来...

所以我们到这个网站http://yann.lecun.com/exdb/mnist/

去下载这四个文件

train-images-idx3-ubyte.gz:  training set images (9912422 bytes) 
train-labels-idx1-ubyte.gz:  training set labels (28881 bytes) 
t10k-images-idx3-ubyte.gz:   test set images (1648877 bytes) 
t10k-labels-idx1-ubyte.gz:   test set labels (4542 bytes)

速度慢的话回Windows用迅雷吧...

然后解压他们。

解压后的四个文件放到/home/用户名/Compile/caffe/data/mnist/

然后把这四个文件每个文件名字中的.改成-

要不一会儿又打不开找不到文件了...

接下来,mnist数据格式转换

cd /home/用户名/Compile/caffe
./examples/mnist/create_mnist.sh

此时在/caffe/examples/mnist/目录下生成mnist_test_lmdb和mnist_train_lmdb两个LMDB格式的训练集和测试集

开始训练mnist

cd /home/用户名/Compile/caffe  
./examples/mnist/train_lenet.sh

    本篇结束。

 

本人接触Linux的时间不长,作为小白,文中内容难免出错,如果您发现本文内容有误,请评论指出,我会尽快修改并深表感激。

同时,感谢以下文章的作者或转载者,是他们教会了我整个的安装过程。

 

参考:

微星GS73VR 6RF + Linux Mint 18 + GTX1060 + CUDA8.0 + OpenCV3.0.0 + Caffe安装笔记

ubuntu16.04+gtx1060+cuda8.0+caffe安装、测试经历

linuxmint 安装nvidia 显卡驱动

Ubuntu 14.04 安装 Nvidia 私有驱动并进行双显卡切换

喝一杯咖啡真难——我的caffe在ubuntu14.04下安装配置,改错,换包记录

编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录

 

posted @ 2017-01-19 01:57  会飞的懒羊羊  阅读(3696)  评论(1编辑  收藏  举报