ubuntu16.04 下caffe+tensorflow+GPU 安装

来源:互联网 发布:centos 挂载硬盘到www 编辑:程序博客网 时间:2024/04/29 22:12


https://repo.continuum.io/archive/    
下载conda,然后安装
>./Anaconda2-5.0.0-Linux-x86_64.sh

在终端输入python发现依然是gnome自带的python版本,这是因为.bashrc的更新还没有生效,命令行输入: 
>source ~/.bashrc 


版本不够就:
>conda update conde
>conda update pip
>conda update python
>conda update spyder


1.安装相关依赖项

>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 libopenblas-dev liblapack-dev libatlas-base-dev
>sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.安装nvidia驱动
查看适合自己显卡的驱动
登录 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看对应打驱动版本
接下来就是自己安装显卡驱动了:卸载你电脑中此刻有的nvidia的驱动
>sudo apt-get remove –purge nvidia*
添加一个PPA到系统,等一下安装驱动要用的
>sudo add-apt-repository ppa:graphics-drivers/ppa
记得:
>sudo apt-get update 
>sudo service lightdm stop(关闭图形界面,没照做好像也可以)
>sudo apt-get install nvidia-384(我前面说过我的驱动是384,就写384,你的是什么就写什么)
然后就等待驱动安装好。

安装好之后,运行
>sudo service lightdm start   来启动图形界面
运行:
>nvidia-smi
来看是不是能够输出你的GPU的一些信息

3.安装CUDA
下载CUDA ,运行
>./cuda_8.0.61_375.26_linux.run
下面安装时要注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否: 
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48? 
因为前面我们已经安装了更加新的nvidia384,所以这里不要选择安装。其余的都直接默认或者选择是即可。 

环境变量配置 
打开
>sudo gedit ~/.bashrc 
将以下内容写入到部:
export  PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export  LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出

测试CUDA的samples
>cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery 
>make 
>sudo ./deviceQuery 
如果显示一些关于GPU的信息,则说明安装成功。

配置cuDNN 
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载
>sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
>cd cuda; sudo cp lib64/lib* /usr/local/cuda/lib64/; 
>sudo cp include/cudnn.h /usr/local/cuda/include/  
更新软连接: 
>cd /usr/local/cuda/lib64/
>sudo chmod +r libcudnn.so.5.1.10
>sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
>sudo ln -sf libcudnn.so.5 libcudnn.so
>sudo ldconfig
请注意,请到自己解压后的lib64文件夹看这个文件libcudnn.so.5.1.0 ,电脑配置不同后面的数字型号不同,进行相应的修改,否则会报错。

安装opencv3.3 ====

首先,我们需要先安装一些依赖库:

>sudo apt-get install libtiff5-dev
>sudo apt-get install build-essential cmake libgtk2.0-dev libjasper-dev libavformat-dev libswscale-dev libavcodec-dev libjpeg62-dev pkg-config ffmpeg
>sudo apt-get install git pkg-config   
>sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
>sudo apt-get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
>sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev

第二步,在opencv官方下载页面下载对应系统版本的opencv,目前我下载的是3.3.0的版本:

在命令行中跳转到对应目录并解压,这里我解压到用户主目录下了:

>cd ~/
>unzip -o -d ~/ opencv-3.3.0.zip

进入opencv目录里,并新建一个文件夹,命名为“release”,并进入:

>cd opencv-3.3.0/
>mkdir release
>cd release

重点来了,编译安装opencv:
>cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..  

>sudo make install
>export LD_LIBRARY_PATH=~/opencv-3.3.0/release/lib:$LD_LIBRARY_PATH  

>sudo ldconfig

>pkg-config opencv –libs  

注意,make install这个步骤时间较长,且中间可能会有警告,不用管他,只要能编译到100%就行。

然后,一切都搞定了,小试牛刀:
>cd ../samples/cpp/
>g++ drawing.cpp -o drawing `pkg-config opencv --libs --cflags opencv`
其中,`pkg-config --libs --cflags opencv `是加载opencv库的一个命令,没有的话就会编译出错!!
注意:`是键盘上Ese键正下方的那个键,不是与“同一个键的‘ !!!
>./drawing

不出意外的话,会出现,额,炫酷的宣传画面。

查看版本:
pkg-config --modversion opencv
如果输出3.3.0 那么恭喜你,编译并安装成功了。

为了支持python 
>cd ~/opencv-3.3.0/release/lib
>cp cv2.so  ~/anaconda2/lib
>cp cv2.so ~/anaconda2/lib/python2.7/site-packages


>cd caffe-master/python
>for req in $(cat requirements.txt); do pip install $req; done

配置caffe
git clone https://github.com/BVLC/caffe.git
注意:若没有安装Git,需要先安装Git:
>sudo apt-get install git


>unzip -o  caffe-master.zip
>cd caffe-master/
>sudo cp Makefile.config.example Makefile.config
>sudo gedit Makefile.config  

//可以都修改 
a.若使用cudnn,则 
将#USE_CUDNN := 1 
修改成: 
USE_CUDNN := 1 
b.若使用的opencv版本是3的,则 
将#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3 
c.若要使用python来编写layer,则 
将 #WITH_PYTHON_LAYER := 1 
修改为 WITH_PYTHON_LAYER := 1 

重要的一项 : 
将 # Whatever else you find you need goes here. 下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:(主要路径间的空格)
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /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 
这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
要是你是用的anaconda的话,可能还需要改一些地方(我是没改也能用)http://blog.csdn.net/a_z666666/article/details/72853346


修改makefile文件 
打开makefile文件,做如下修改: 
a. 将(大概409行的样子):
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

b. 将(大概181行):
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

编辑/usr/local/cuda/include/host_config.h 
将其中的第115行注释掉: 
将#error– unsupported GNU version! gcc versions later than 4.9 are not supported! 
改为 
//#error– unsupported GNU version! gcc versions later than 4.9 are not supported!


#将一些文件复制到/usr/local/lib文件夹下:#注意自己CUDA的版本号!
>sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 #&& sudo ldconfig
>sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 #&& sudo ldconfig
>sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 #&& sudo ldconfig
>sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && #sudo ldconfig



编译与测试
>make clean
>make all -j16 
>make pycaffe -j16
>make test -j16 
>make runtest -j16 #使用CPU多核同时进行编译



若出现错误:./caffe: /lib64/libz.so.1: version `ZLIB_1.2.8’ not found (required by /root/anaconda2/lib/./libpng16.so.16)
>tar zxf zlib-1.2.11.tar.gz 
>cd zlib-1.2.11 
>./configure 
>make && make install 
>cp /usr/local/lib/libz.so.1.2.11 /lib64/ 
>cd /lib64/ 
>rm libz.so.1 
>ln -s libz.so.1.2.11 libz.so.1

在编译caffe runtest时候,可能出现以下问题: 
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 不是符号连接 
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 不是符号连接。 
解决方法: 
>sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org 
>sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org 
>sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1 
>sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

为了能画出网络结构,需要安装:
>conda install -c https://conda.binstar.org/sstromberg pydot
>conda install GraphViz
>pip install pydot 



编译成功测试:
>cd caffe-master
>./data/mnist/get_mnist.sh 
>./examples/mnist/create_mnist.sh  
>./examples/mnist/train_lenet.sh
正常跑了就行了
后面自己的工程开始玩了

#===============ubuntu下tensorflow+GPU 安装 ========================
安装依赖

>sudo apt-get install python-pip python-dev

然后

>export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl

>pip install --upgrade $TF_BINARY_URL

升级 TensorFlow

>pip install --upgrade tensorflow-gpu

输入命令:
>python  

然后输入:
>>>import tensorflow as tf  
>>>tf.__version__  

如果报错: ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory,那么
>sudo gedit ~/.bashrc 
末尾加入:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
保存退出
>source ~/.bashrc
再来看看

如果报错: tensorflow ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory ,那么
>pip uninstall tensorflow-gpu
>pip install tensorflow-gpu==1.2   
虽然tensorflow官网install教程里面说的是安装cudnn5.1,而tensorflow-gpu1.3已经开始去找cudnn6了(也就是说是用cudnn6编译的)。。。 理论上可以安装cudnn6试试看

跑个mnist测试一下:
>python /home/ljf/tensorflow-master/tensorflow/examples/tutorials/mnist/fully_connected_feed.py
没问题就可以了



如果 spyder不能import tensorflow输入:
>conda install spyder



如果报错 Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source wascompiled with 5110 (compatibility version 5100)
下载CuDNN5.1    官网 用户名:976491174@qqcom 密码:Ljf09180011

1、删除原来的cudnn系统路径下的一些文件
>sudo rm -rf /usr/local/cuda/include/cudnn.h
>sudo rm -rf /usr/local/cuda/lib64/libcudnn*   #这里*是通配符,libcudnn*指的是名字中带有libcudnn的所有文件

2、安装刚才解压的cudnn版本,在终端cd到刚解压的cuda文件夹,然后继续输入下面两个指令,这两个指令相当于把解压后的cuda文件夹下的一些文件拷到系统路径下面
>sudo cp include/cudnn.h /usr/local/cuda/include/
>sudo cp lib64/lib* /usr/local/cuda/lib64/       #这里*是通配符,lib*指的是名字中带有lib的所有文件

>cd /usr/local/cuda/lib64
>sudo chmod a+r libcudnn.so.5.1.10
>sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
>sudo ln -sf libcudnn.so.5 libcudnn.so
>sudo ldconfig
就可以了

阅读全文
0 0
原创粉丝点击