Ubuntu 14.04 python caffe 安装

build-essential 安装

sudo apt-get update
sudo apt-get install build-essential


安装cuda

准备工作:

(1)nvdia官网下载cuda_7.5.18_linux.run安装文件

(2) cd到安装目录

(3修改.run安装文件可执行权限

sudo chmod +755 cuda_7.5.18_linux.run
(4)关闭 X server

logout,在命令行界面(系统登陆界面按ctrl+alt+F1)输入以下命令:

sudo /etc/init.d/lightdm stop


安装:

sudo ./cuda_7.5.18_linux.run -no-opengl-libs


设置环境变量:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

完成重启机器就好。

Note:

(1)如果后续编译出现找不到libcudart.so,可进行下面操作:

sudo gedit /etc/ld.so.conf.d/cuda.conf
在cuda.conf文件中添加下面目录:

/usr/local/cuda/lib64
/lib

保存退出,使用下面命令使之立即生效:

sudo ldconfig -v

(2)如果cuda 安装完出现,系统图形操作界面无法进入的问题,可尝试用以下命令解决:

sudo apt-get remove --purge nvidia-*
sudo apt-get install ubuntu-desktop  

完成重启机器

验证安装:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
make
./deviceQuery
显示Pass即可

安装 OpenBLAS

sudo apt-get install gfortran
mkdir ~/code                          (路径可以自己修改)
cd ~/code
git clone https://github.com/xianyi/OpenBLAS.git                                   (没有git先按提示安装git)
cd OpenBLAS
make -j $(($(nproc) + 1))
sudo make PREFIX=/usr/local install

安装boost

sudo apt-get install libboost-all-dev

安装 Opencv

见 版本3.0,安装方法


安装 protobuf, glog, gflags

sudo apt-get install libprotobuf-dev libgoogle-glog-dev libgflags-dev protobuf-compiler
 

安装 hdf5, leveldb, snappy, lmdb

sudo apt-get install libhdf5-serial-dev libleveldb-dev libsnappy-dev liblmdb-dev

安装Anaconda Python

下载地址: http://continuum.io/downloads

切换到下载目录:

cd ~/Downloads 
运行安装程序:

bash Anaconda*.sh
 
  

按提示进行操作,若询问是否添加环境变量,选择“是”。

关闭并重新打开终端,使新环境变量生效。

安装 HDF5

conda install hdf5

Note: conda下的库只对python有效

解决HDF5 版本Bug

cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5.so.7 libhdf5.so.9
sudo ln -s libhdf5_hl.so.7 libhdf5_hl.so.9
sudo ldconfig

安装CuDNN

下载地址: https://developer.nvidia.com/cuDNN   建议版本v4

进入下载目录:

cd ~/Downloads/

解压文件,并拷贝它们到CUDA目录:

tar xvf cudnn*.tgz
cd cuda
sudo cp */*.h /usr/local/cuda/include/
sudo cp */*.so* /usr/local/cuda/lib64/

这里要特别说明下,对于tensorflow,同样也需要CUDA和CUDNN,但是tensorflow对cudnn库文件,不能直接识别libcudnn.so的原文件,它会报错:Couldn't open CUDA library libcudnn.so。据寡人揣测,tensorflow加载libcudnn.so文件时必须通过libcudnn.so的link文件去找libcudnn.so.*.*(subversion)。

解决方案:在拷贝完CUDNN的so文件后,重新做link:

cd /usr/local/cuda/lib64
sudo rm libcudnn.so libcudnn.so.4
sudo ln -s libcudnn.so.4.0.7 libcudnn.so.4
sudo ln -s libcudnn.so.4 libcudnn.so
sudo ldconfig -v
其实,仔细观察原始文件,会发现libcudnn.so, libcudnn.so.4 和 libcudnn.so.4.0.7 3个文件大小完全一样(估计是同样的内容)。照一般库文件的做法,是只给 libcudnn.so.4.0.7一个文件,然后libcudnn.so.4.0.7生成链接文件libcudnn.so.4,libcudnn.so.4.生成链接文件libcudnn.so,便于版本管理。不知道CUDNN出于什么目的,要多建两个一模一样的文件侵占我的磁盘空间,简直就是在搞事情啊!

配置并编译 Caffe

建个安装文件夹: (/home/$(user)/code)
mkdir ~/code 
cd ~/code

下载 Caffe

git clone https://github.com/BVLC/caffe.git
修改Caffe配置文件:

cd caffe

cp Makefile.config.example Makefile.config

sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config
sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
sed -i 's|# ANACONDA_HOME := $(HOME)/anaconda|ANACONDA_HOME := $(HOME)/anaconda2|' Makefile.config
sed -i 's|# PYTHON_INCLUDE := $(ANACONDA_HOME)|PYTHON_INCLUDE := $(ANACONDA_HOME)|' Makefile.config
sed -i 's|# $(ANACONDA_HOME)|$(ANACONDA_HOME)|' Makefile.config
sed -i 's|# PYTHON_LIB := $(ANACONDA_HOME)|PYTHON_LIB := $(ANACONDA_HOME)|' Makefile.config
sed -i 's|# WITH_PYTHON_LAYER := 1|WITH_PYTHON_LAYER := 1|' Makefile.config

用conda下载 Python依赖项:

for req in $(cat python/requirements.txt); do conda install $req; done

用pip下载conda不能安装的依赖项:

pip install -r python/requirements.txt

编译Caffe:

make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
Note:$($(nproc)+1)表示用nproc+1的核数量并行编译。 runtest显示全PASS就表示成功啦。

编译 PyCaffe (Python 接口):

make pycaffe -j $(($(nproc) + 1))
设置环境变量

echo "export CAFFE_ROOT=$(pwd)" >> ~/.bashrc
echo 'export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH' >> ~/.bashrc

重启终端,使环境变量生效。

测试

ipython
import caffe

 
  

如果没问题,恭喜!~




你可能感兴趣的:(ubuntu,python,caffe)