Ubuntu 12.04 安装NVIDIA 驱动、CUDA、CAFFE配置

折腾着配置了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.       

运行  Caffe 的Example-----mnist

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 就报错了

Ubuntu 12.04 安装NVIDIA 驱动、CUDA、CAFFE配置_第1张图片

删除 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的熟悉程度

你可能感兴趣的:(机器学习)