注:linux+caffe小白,以下文档仅记录学习点滴。网上有很多教程,一定要根据自己硬件条件选择各个安装包的版本,这一点非常重要。
主要参考:https://blog.csdn.net/luteresa/article/details/79555356
百试不爽的显卡安装教程,根据我自己的显卡,安装了NVIDIA-340驱动。
下载cuda6.5版本安装包cuda_6.5.14_linux_64.run(建议所有安装包都放在home目录下,使用文本界面安装,Ctrl+Alt+F1进入,--sudo service lightdm stop关闭图形界面)。
(1)解压:sudo sh cuda_6.5.14_linux_64.run --extract=extract_path (extract_path为自己的解压路径)。
解压出来有三个文件:
安装*.run文件,sudo ./cuda_6.5.14_linux_64.run,默认安装即可,accept+y+回车搞定。
(2)添加环境变量,cuda默认安装在/usr/local/cuda-6.5中,所以
sudo vi /etc/profile
a 或 i编辑,
PATH=/usr/local/cuda-6.5/bin:$PATH
export PATH
Esc+:wq 保存退出
source /etc/profile 是环境变量立即生效。
添加lib库路径:
sudo vi /etc/ld.so.conf.d/cuda.conf
在添加的cuda.conf文件中添加如下内容:/usr/local/cuda-6.5/lib64。保存退出
执行 sudo ldconfig 使之立即生效。
(3)在安装sample之前,安装一些依赖库。
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev
(4)安装*.sample文件
sudo ./cuda-samples-linux-6.5.14-18745345.run,同样默认安装。
之后编译sample,cd /usr/local/cuda-6.5/samples 执行sudo make
大概会编译一会,完成以后,进入 cd samples/bin/x86_64/linux/release,执行 sudo ./deviceQuery。
会出现显卡的信息,即安装成功。
大致效果如上图。显卡驱动已经安装过了,不用重复安装。
有MKL、OpenBLAS、ATLAS可以选择,我安装的是ATLAS:sudo apt-get install libatlas-base-dev
我是在官网下载的source安装的。首先下载依赖包:
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config python-numpy python3.2-dev
媒体包可选择安装:
sudo apt-get install libavcodec-dev libavformat-devlibswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
解压压缩包:unzip opencv-2.4.9.zip
cd opencv-2.4.9
mkdir release
cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
添加环境变量与lib库路径:
sudo gedit /etc/ld.so.conf
添加: /usr/local/lib
sudo ldconfig -v
sudo gedit /etc/profile
添加:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
在home目录下编写一个hello world的程序,包含#include
编译:g++ -L /usr/local/cuda-6.5/lib64 `pkg-config --cflags --libs opencv` hello.cpp -o hello
编译运行成功,证明安装成功。
可能会报错:
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
下载 NCVPixelOperations.hpp 替换opencv-2.4.9/modules/gpu/src/nvidia/core中的NCVPixelOperations.hpp即可
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
我安装的Anaconda
sudo bash ./Anaconda2-5.1.0-Linux-x86_64.sh
默认安装之后,添加环境变量&lib路径:
sudo gedit etc/ld.so.conf
添加:/usr/usrname/anaconda2/bin (usrname是自己的账号名)
sudo ldconfig
sudo gedit ~/.bashrc
添加:export LD_LIBRARY_PATH="/home/usrname/anaconda2/lib:$LD_LIBRARY_PATH"
测试:在终端输入python,没报错即成功。
cd ~/caffe-master/python/
$for req in $(cat requirements.txt); do pip install $req; done
注:如果提示差什么动态库,apt-get install 安装即可。
(1)下载cudnn-6.5-linux-x64-v2,然后安装:
解压:sudo tar -zxvf cudnn-6.5-linux-x64-v2.tgz
cd cudnn-6.5-linux-x64-v2
将头文件&动态库拷贝到对应文件夹:
sudo cp lib* /usr/local/cuda-6.5/lib64/
sudo cp cudnn.h /usr/local/cuda-6.5/include/
(2)更新软连接:
cd /usr/local/cuda-6.5/lib64/
sudo chmod +r libcudnn.so.6.5.48
sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5 libcudnn.so
cd ~/caffe-mater
sudo cp Makefile.config.emamples Makefile.config
修改该文件中几个地方:
USE_CUDNN=1;
添加:-gencode arch=compute_50,code=compute_50 删除50之后的东西。
PYTHON_LIB=$(ANACONDA_HOME)/lib
WITH_PYTHON_LIB:=1
这里要根据自己安装的环境更改,例如Python版本有2、3可以选择,matlab安装与否等等。
编译命令:
make all
make test
make runtest
测试:python,import caffe,没报错就编译成功了。以后就可以测试一下demo,然后开始编程了。
安装caffe主要参考以下两个博客:
https://www.cnblogs.com/YiXiaoZhou/p/6396674.html
http://www.cnblogs.com/platero/p/4118139.html
安装时的疑问:
1. *-dev依赖包的下载,linux中有大量的*-devel与*-dev依赖包。*-devel开发包中主要包括一些头文件和静态链接库。*-dev或者其他*.devel软件一般都是C语言编写的一些头文件或cpp文件,往往是其他模块或这我们自己写的模块在编译时,需要依赖这些*-devel软件包。
2. 在安装cuda的时候,由于涉及到NVIDIA驱动的安装,使得nouveau驱动与NVIDIA驱动冲突,为了能够继续安装,必须禁用此驱动。