[转][linux(ubuntu14.04)+GPU+cuda6.5+caffe+openCV2.4.9+matlab2013b+python2.7的新手配置转]

时间:2022-09-04 06:32:25

转载自http://blog.csdn.net/langb2014/article/details/44516701

本人是一名新手,无论是学习linux还是学习caffe都是个无名小卒。因为安装了很多次都没成功,也没有配置成功caffe,所以此次安装成功做个记录,方便以后再次使用。言归正传,

******************************************************************************************************

ubuntu14.04的安装

******************************************************************************************************

1.先下载一个ultraios,无需激活,然后制作u盘启动工具,具体教程请看百度经验教程

http://jingyan.baidu.com/article/d169e186800f02436711d87b.html

2.制作好u盘启动工具之后。然后就是安装ubuntu14.04,在这之前要先下载好ubuntu14.04,然后找到first boot,然后启动u盘就可以安装系统了

,安装分区问题见Swimbird博 客:http://blog.sina.com.cn/s/blog_5f0a505101017ruf.html

3.安装好ubuntu14.04之后,开始配置电脑的校园动态ip账号,直接找到网络的编辑设置里面的ipv4,点击手动,然后输入动态ip,子掩码,和网关,服务器地

址就可以进入联网状态了。

******************************************************************************************************

  NVIDIA安装

******************************************************************************************************

然后是一些准备工作,按照caffe的官网http://caffe.berkeleyvision.org/install_apt.html

进行配置,首先刚装的系统需要

$ sudo apt-get update

然后

$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev

因为我的系统是14.04,所以按照官网上的要求继续进行第二步操作

$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

安装开发所需要的一些基本包:

$ sudo apt-get install build-essential

1.首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备(开机进入bios设置,找到advanced中的VGA configuration设置,将intel显卡设为

primary)。

2.将nouveau添加到黑名单,防止它启动
$ cd /etc/modprobe.d
$ sudo gedit nvidia-graphics-drivers.conf
 写入:blacklist nouveau
保存并退出: wq!
检查:$ cat nvidia-graphics-drivers.conf
 对于:/etc/default/grub,添加到末尾。
$ sudo gedit /etc/default/grub
末尾写入:rdblacklist=nouveau nouveau.modeset=0
保存并退出: wq!
检查:$ cat /etc/default/grub

3. 进入Ubuntu, 按 ctrl+alt+F1 进入tty1, 登录tty1后输入如下命令

$ sudo service lightdm stop

4.安装NVIDIA ,http://www.geforce.cn/drivers

找到对应NVIDIA的版本(我的是linux340.76.run),进入到NVIDIA的目录下:

$ cd /home/username

然后

$ sudo sh linux340.76.run ,一直确定安装完。

5.重新启用桌面的命令为:

$ sudo service lightdm start,

然后电脑桌面大大改变了,证明安装成功。然后关机进入bios中,更改VGA configuration

为NVIDIA显卡,此时电脑看着就清晰多了,中途如果显示器无信号输入,重启2-3次,基本上GPU显卡驱动已经安装完成。

6.在终端输入:

$ cat /proc/driver/nvidia/version

验证驱动安装是否成功。

******************************************************************************************************

 CUDA6.5安装

******************************************************************************************************

CUDA6.5( https://developer.nvidia.com/cuda-downloads

$ sudo chmod +x ./ cuda_6.5.14_linux_64.run

将CUDA6.5解压成三个文件($sudo sh cuda*.run --noexec --target .)(.前面有空格)

分别为:

CUDA安装包: cuda-linux64-rel-6.5.14-18749181.run

NVIDIA驱动: NVIDIA-Linux-x86_64-340.29.run

SAMPLE包: cuda-samples-linux-6.5.14-18745345.run

(这里就不安装NVIDIA驱动)

开始安装CUDA,

$ sudo ./cuda-linux64-rel-6.5.14-18749181.run

安装完成后需要在/etc/profile中

①添加环境变量,

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

保存后, 执行下列命令, 使环境变量立即生效

$source /etc/profile

②添加lib路径,

在/etc/ld.so.conf.d/新建文件cuda.conf,并编辑

cd /etc/ld.so.conf.d

$ sudo touch cuda.conf 

$ sudo gedit cuda.conf

/usr/local/cuda-6.5/lib64

执行下列命令使之立刻生效

$ sudo ldconfig

继续,安装CUDA SAMPLE,安装下列依赖包

$sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

然后用下述命令安装sample文件

$sudo ./cuda-samples-linux-6.5.14-18745345.run

完成后编译Sample文件,更若干分钟后

$ cd /usr/local/cuda-6.5/samples

$ sudo make

 编译完成后, 进入 samples/bin/x86_64/linux/release

$ sudo ./deviceQuery 

如果出现下列显卡信息,则驱动及cuda安装成功:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 750 Ti"
 CUDA Driver Version / Runtime Version          6.5 / 6.5
 CUDA Capability Major/Minor version number:    5.0
 Total amount of global memory:                 2048 MBytes (2147155968 bytes)
 ( 5) Multiprocessors, (128) CUDA Cores/MP:     640 CUDA Cores
 GPU Clock rate:                                1084 MHz (1.08 GHz)
 Memory Clock rate:                             2700 Mhz
 Memory Bus Width:                              128-bit
 L2 Cache Size:                                 2097152 bytes
 Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
 Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
 Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
 Total amount of constant memory:               65536 bytes
 Total amount of shared memory per block:       49152 bytes
 Total number of registers available per block: 65536
 Warp size:                                     32
 Maximum number of threads per multiprocessor:  2048
 Maximum number of threads per block:           1024
 Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
 Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
 Maximum memory pitch:                          2147483647 bytes
 Texture alignment:                             512 bytes
 Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
 Run time limit on kernels:                     Yes
 Integrated GPU sharing Host Memory:            No
 Support host page-locked memory mapping:       Yes
 Alignment requirement for Surfaces:            Yes
 Device has ECC support:                        Disabled
 Device supports Unified Addressing (UVA):      Yes
 Device PCI Bus ID / PCI location ID:           1 / 0
 Compute Mode:
    < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForceGTX 750 Ti
Result = PASS

*****************************************************************************************************

  选择性安装MKL或BLAS

*****************************************************************************************************

接着继续,安装Intel MKL ,到intel网站申请一个mkl账号:https://software.intel.com/en-us/qualify-for-free-software/student

mkl的具体下载和介绍:http://blog.csdn.net/gengshenghong/article/details/7011939

$sudo dpkg --add-architecture i386

$sudo apt-get update

$sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

$sudo ./adb

其中我安装会有些东西安装不了,应该没事。

解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。注意: 安装完成后需要添加library路径

$sudo gedit /etc/ld.so.conf.d/intel_mkl.conf

在文件中添加内容

/opt/intel/lib

/opt/intel/mkl/lib/intel64

注意把路径替换成自己的安装路径。 编辑完后执行

$ sudo ldconfig

==============================BLAS=============================

或者官网介绍的安装blas

$sudo apt-get install libatlas-base-dev

安装一下依赖库

$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

******************************************************************************************************

 OpenCV2.4.9安装

******************************************************************************************************

然后是安装OpenCV:

Github上的脚本:https://github.com/jayrambhia/Install-OpenCV

下载该脚本,进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限

chmod +x *.sh

然后安装最新版本:$ sudo ./opencv2_4_9.sh

网上有些教程说会报错,但是我安装没有出现错误(若中途出现问题的如下

opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):error: a storage class is not allowed in an explicit specialization

解决方法:http://code.opencv.org/issues/3814  下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件, 重新build)。

测试opencv如下:新建一个.cpp文件和一个abc.jpg图片放到一个文件夹中。

建一个DisplayImage.cpp:
    #include <cv.h>   
    #include <highgui.h>   
    #include <iostream>   
    using namespace cv;  
    using namespace std;  
    int main(int argc,char **argv)  
    {  
        Mat image;  
        image = imread(argv[1],1);  
      
        if(argc != 2 || !image.data)  
        {  
            cout << "No image data\n";  
            return -1;  
        }  
      
        namedWindow("Display Image",CV_WINDOW_AUTOSIZE);  
        imshow("Display Image",image);  
        waitKey(0);  
        return 0;  
    }  
命令行:
$g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs`

(这个命令中的单引号不是平常的单引号,而是键盘上tab键上面那个符号)

$./DisplayImage abc.jpg

但是你会发现出错了,坑爹,配置过程是如此艰难,我们来看看解决方案:

如果遇到这个错误,参考 http://www.foreverlee.net/
   /usr/bin/ld: cannot find -lcufft
   /usr/bin/ld: cannot find -lnpps
   /usr/bin/ld: cannot find -lnppi
   /usr/bin/ld: cannot find -lnppc
   /usr/bin/ld: cannot find -lcudart
编译命令改为
$ g++ -L /usr/local/cuda/lib64/ DisplayImage.cpp -o DisplayImage `pkg-config --cflags --libs opencv`
$./DisplayImage abc.jpg

然后可以显示出图片,应该是成功了。

******************************************************************************************************

 Python的安装

******************************************************************************************************

参见骑士的第三部分http://ouxinyu.github.io/Blogs/20140723001.html

1. 安装IDE运行环境

选择一个适合你的IDE运行环境,我是用的是Spyder,因为它内置了 iPython 环境,Caffe有不少的程序是基于 iPython 环境完成的。安装方法很简单,直接在Ubuntu软件中心搜索“spyder”即可安装。

2. iPython NoteBook 安装

另外一个比较推荐的方法是使用iPyhthon NoteBook(基于浏览器的Python IDE),特别是适合需要用Python做教程的老师们,可以直接导出.py, .ipynb, html格式,安装步骤如下:

启动(自动打开浏览器):

$ ipython nootbook

一个简单的使用iPython NoteBook生成的html的例子:examples_notebook.html  example_notebook.ipynb

******************************************************************************************************
 Matlab2014a安装
******************************************************************************************************

接着前面的工作,就是安装MATLAB:

(一)下载MATLAB Linux安装包,并解压

(二)可执行权限: sudo chmod +x mount_matlab2014a
                                  ./mount_matlab2014a
(三)挂在镜像,cd进入,执行安装: sudo ./install

(四)然后安装步骤和Windows下相同

(五)完成激活后验证是否安装成功: sudo /usr/local/MATLAB/R2014a/bin/matlab

(六)添加应用和图标到启动菜单中: sudo gedit /usr/share/applications/Matlab.desktop, 把下载目录中Matlab.desktop

内容如下:

[Desktop Entry]
Name=Matlab
GenericName=Matlab R2014a
Comment=Matlab R2014a: The Language of the Techinical Computing
Exec=../matLab/bin/matlab -desktop //-desktop前面有空格   

Icon=../matLab/icons/Matlab.png
StartupNotify=true
Terminal=false
Type=Application
Categories=Development;

文件中的内容拷贝进去即可修改桌面启动菜单权限,显示home文件夹下的隐藏文件: Ctrl + h,然后修改MATLAB在桌面快捷键权限:

$ sudo chmod 777 -R ./.matlab

在面板Development 中找到matlab 图标,然后添加到桌面,最后运行

unmount_matlab2014a将镜像ISO卸载掉。

******************************************************************************************************
 caffe的安装

******************************************************************************************************

现在安装和用mnist测试一下caffe,

先下载caffe,https://github.com/BVLC/caffe

1. 安装pycaffe必须的一些依赖项:

2.切换到Caffe的文件夹,生成Makefile.config配置文件,执行:

4. 配置Makefile.config文件(仅列出修改部分)

a. 启用GPU,添加注释"#"

# CPU_ONLY := 1

b. 配置一些引用文件(增加部分主要是解决新版本下,HDF5的路径问题)

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

c. 如果使用MKL的时候改为:

BLAS := mkl

d. 配置路径,实现caffe对Python和Matlab接口的支持

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2014a

最新版的caffe报错:building caffe: failed to see hdf5.h

解决:

sudo apt-get installlibhdf5-dev

然后配置文件中修改一下,

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

5. 配置Makefile文件(实现对OpenCV 2.x的支持)

查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行,增加opencv_imgcodecs

opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

(1). change the Makefile :

  add "opencv_imagecodecs" to the last of LIBRARIES += opencv_core opencv_highgui opencv_imgproc;

(2). remove the files in build :

  rm -rf ./build/*

(3). make all -j8


6. 编译caffe

(-j8)是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。

编译Python和Matlab用到的caffe文件

1. 降级安装gcc/g++版本为4.7.x

(1). 下载gcc/g++ 4.7.x

(2). 链接gcc/g++实现降级

2. 暴力引用新版本GLIBCXX_3.4.20

通过命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了GLIBCXX_3.4.20,如果已经存在,基本上就成功了。

接下来就是测试。

******************************************************************************************************
 mnist测试

******************************************************************************************************
如果网速不行可以到
http://yann.lecun.com/exdb/mnist/ 下载4个数据包。

1. 数据预处理

2. 重建lmdb文件。Caffe支持三种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,根据自己需要选择不同输入吧。

生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集

3. 训练mnist

(中途估计会遇到一些路径问题,我是把每一个出现路径问题的文件,找到路径配置前面加上自己的安装路径就可以进行测试了)
几经波折最后基本的框架已经建好了。

(如果进不了linux开机界面只剩下壁纸和鼠标,一定要记住将系统设置所有的电脑更新都关掉,然后个人建议最好不要安装mkl反正我出现了很多错误,解决起来很烦【卸载nvidia再安装起来】或者可以安装一下其他的另外两个库)

===============================================================

参考链接
1.http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html
2.https://developer.nvidia.com/cuda-downloads

3.  http://caffe.berkeleyvision.org/

4.  http://94it.net/a/jingxuanboke/2014/0831/395722_4.html

5.  http://94it.net/a/jingxuanboke/2015/0118/451320.html

6.   http://www.cnblogs.com/platero/p/3993877.html

文章中的方法感谢热心的网友:

suxuanq http://blog.csdn.net/u010089908/article/details/43538677

===============================================================