折腾着配置了3遍,终于把caffe的环境配置成功
caffe的要求还是有点高,我用的9500的显卡,计算能力达不到2.0,还是无法通过GPU计算,CPU计算example中的mnist顺利通过,不过现在780已经拿到手了,机器电源带不起来,又要等新电源了
下面是我在Ubuntu12.04环境中配置NVIDA 驱动、CUDA、CAFFE配置的过程:
caffe配置文档 by mingtop 2014-10-29
系统: 14.10 cuda 6.5
1. 装完系统第一步:
配置系统更新源,必须更新完,否则你以后安装软件的速度很慢,慢的你不能忍。
2. 首先安装各种依赖包
按照Install 的建议安装就可以了
OnUbuntu, most of the dependencies can be installed with
sudo apt-get install libprotobuf-dev libleveldb-devlibsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
and forUbuntu 14.04 the rest of the dependencies can be installed with
sudo apt-get install libgflags-dev libgoogle-glog-devliblmdb-dev protobuf-compiler
Keep reading to find out how to manually build and installthe Google flags library, Google logging library and LMDB on Ubuntu 12.04.
3. 安装驱动
到官网下载正确地 run 安装文件(一定要选择与显卡相对应的正确版本,使用cuda6.5,一定要用340版本),直接用迅雷下载,不要等着firefox打开(直接把浏览器中的网址贴到迅雷就可以了)
切换到text模式 Ctrl+F1来关闭 x servic
sudoservice lightdm stop
添加cuda_6.0.37_linux_64.run 的执行权限
chmod a+xcuda_6.0.37_linux_64.run
安装cuda_6.0.37_linux_64.run
./ cuda_6.0.37_linux_64.run
一般直接重启就可以了,还要然后停掉图形界面 Ctrl + F7
4. 配置cuda环境:
Ubuntu8.10之后的版本都会存在如下问题:原来在老版本系统中设置的LD_LIBRARY_PATH环境变量的方法,在新的版本中就失效了。
如果是在/etc/profile这个文件中设置LD_LIBRARY_PATH环境变量,例如:
exportLD_LIBRARY_PATH=/usr/local/cuda-5.0/lib:$LD_LIBRARY_PATH
那么我们必须在终端中输入:
source/etc/profile
LD_LIBRARY_PATH环境变量才会生效,但是,当终端关闭的时候source的环境变量就会失效,因此也不够完善
步骤:
安装完之后为了能够编译示例程序和自己写的CUDA应用程序,还需要设置环境变量,输入命令:
sudogedit ~/.bashrc
然后如果是32位的Linux系统在打开文件的末尾添加:
exportPATH=/usr/local/cuda/bin:$PATH
exportLD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH
如果是64位的Linux系统则在打开文件的末尾添加:
export PATH=/usr/local/cuda/bin:$PATH
exportLD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
保存文件并关闭,最后更新一下:
source ~/.bashrc (这里不能加sudo )
测试是否安装成功:
nvcc –V
出现cuda 6.5
以上可能出了terminal 就会失效
配置path
$ sudo gedit ~/.profile(or .bashrc)
添加path
export PATH=/usr/local/cuda/bin:$PATH
配置lib
对于Ubuntu 8.10以后的版本,export LD_LIBRARY_PATH在/etc/profile中不再适用,需要修改在/etc/ld.so.conf添加共享库的路径,一行一条,具体可以参考:http://blog.163.com/thinki_cao/blog/static/83944875201302713822395/
对于32位的系统添加:/usr/local/cuda-5.0/lib
对于64位的系统添加:(一行一条)
/usr/local/cuda/lib64
或者
/usr/local/cuda-6.5/lib64
/lib
添加完之后还需要使得修改的路径生效,此法无须重启:
$ sudoldconfig
再执行一下命令,验证路径是否添加成功
$ldconfig -v|grep cuda
会出现相关的路径:
/usr/local/cuda-5.0/lib:
libcudart.so.5.0 -> libcudart.so.5.0.35
libicudata.so.48 -> libicudata.so.48.1.1
libcuda.so.1-> libcuda.so.304.54
5. 测试运行cuda实例
进入到/home/jamin/NVIDIA_Cuda-6.5_Sample中进入 1.Utilities /deviceQuery
make
./deviceQuery
如果需要重新编译 make clean
6. 安装 MKL
MKL是Intel的商业软件,性能很高,也卖的很贵。还好可以申请非商业版,去这里https://registrationcenter.intel.com/RegCenter/NComForm.aspx?ProductID=1461&pass=yes申请。
tar xf****.gz
sudo ./install_GUI.sh
进入图形化界面安装即可
安装完成后需要添加library路径
sudogedit /etc/ld.so.conf.d/intel_mkl.conf
在文件中添加内容
/opt/intel/lib
/opt/intel/mkl/lib/intel64
注意把路径替换成自己的安装路径。编辑完后执行
sudo ldconfig
查看 etc/ld.so.conf下面的动态链接库(http://blog.csdn.net/yjkwf/article/details/7545002)
#sudo ldconfig -v | grep intel
7. 配置caffe
cd caffe
复制Makefile.config
cp Makefile.config.example Makefile.config
cmake 要2.8.4以上的版本,cmake编译的是 Makefile.config文件
更新config中的配置文件
1. 配置cuda computation 1.1 其他的注释掉
2. 配置mkl的路径
BLAS=mkl
BLAS_INCLUDE=/opt/intel/mkl/include
BLAS_LIB=/opt/intel/mkl/lib/intel64
3. 如果取消CUSTOM_CXX = g++ 的注释,需要配置g++=/usr/bin (g++所在的目录)
4. 如果真的make不成功,重新下载一个caffe在重头来编译就可了
错误:
cudasucess 11 v0 显卡不支持 0是success ,根据错误号往下数就可以了:
http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDART__TYPES_g3f51e3575c2178246db0a94a430e0038.html
换了compution 2.0以上的显卡就可以了
跑mnist程序,用CPU可以正确train
5.
1. 要保证Terminal在caffe的目录下:
caffe/
根据readme.md中的说明进行训练
2. make
g++报错,在makefile.config中设置cu
更改软连接的方法:
cd/usr/local/bin
ls grep g++*
sudo mv g++4.8g++.back
sudo ln –s g++g++4.8
后续:
---------------------------------------------------------------------------------------
编译出错:
ps:提示“src/caffe/util/math_functions.cu(140):error: calling a host function("std::signbit ") from aglobalfunction("caffe::sgnbit_kernel ") is not allowed”
解决办法:
修改 ./include/caffe/util/math_functions.hpp 224行
删除(注释):using std::signbit;
修改:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i]));
为:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = std::signbit(x[i]));
添加cuDNN 库
4.编译MATLABwrapper
make matcaffe
安装Caffe所需要的Python环境
首先安装pip和python-dev (系统默认有python环境的, 不过我们需要的使python-dev)
sudo apt-get install python-dev python-pip
然后执行如下命令安装编译caffepython wrapper 所需要的额外包
sudo pip install -r /path/to/caffe/python/requirements.txt
在执行上述命令时, 会报错导致不能完全安装所有需要的包。可以按照官方建议安装anaconda包。 在anaconda官网下载.sh文件,执行,最后添加bin目录到环境变量即可。
编译Caffe Python
make pycaffe
然后在~/.bashrc中将添加caffe/python的路径:
export PYTHONPATH=/path/to/caffe/python
最后sudo ldconfig确认。
Matlab 接口
MATLAB_DIR := /usr/local/
MATLAB_DIR := /usr/local/MATLAB/R2013b
(而非直接定位到/bin目录下)
然后编译
make matcaffe
caffe/matlab 路径下出现来 caffe.mex
说明你已经可以使用caffe的模型
python接口:
python_dir =
安装 python-pip
然后执行一个命令:
for req in $(cat requirements.txt); do sudo pip install $req; done
sudocp /u01/caffe/python/caffe/ /usr/local/lib/python2.7/dist-packages/ -Rf
Couldn'timport dot_parser, loading of dot files will not be possible.
通过以下命令解决:
pip uninstall pyparsing
pip install -Ivhttps://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709
pipinstall pydot
其实就是对 pyparsing 进行降级
自动安装依赖包
安装anaconda
/home/jamin/anaconda 目录下
PREFIX=/home/jamin/anaconda
当我配置好anaconda编译时 新版本的caffe 就报错了
删除 Some versions of Anaconda seem to come with a bad libm. rm ~/anaconda/lib/libm.* takes care of this by reverting to the system libm.
即使是官方教程,也是有错的,需要自己更正
--------------------------------------------------------------------------------------------------------------
用户环境变量通常被存储在下面的文件中:
· ~/.profile
· ~/.bash_profile 或者 ~./bash_login
· ~/.bashrc
上述文件在Ubuntu 10.0以前版本不推荐使用。
系统环境变量一般保存在下面的文件中:
· /etc/environment
· /etc/profile
· /etc/bash.bashrc
/etc/profile和 /etc/bash.bashrc在Ubuntu 10.0版本中不推荐使用。
----------------------------------------------------------------------------------------------------------------------------------------------
总结1. 即使是官方教程,也是有错的,需要自己更正
2. 在配置的时候要想好自己的环境变量,每次更改,自己要有印象,主要是对Linux的熟悉程度