为了使用caffe,特地装了linux系统,版本:Ubuntu14.04 X64 可参照 http://www.cnblogs.com/platero/p/3993877.html
这个博客写的更好http://www.haodaima.net/art/2823705
第一步:第一部分 Linux安装
Linux的安装,如果不是Linux粉,只是必须,被迫要用它来作作科研什么的,建议安装成双系统,网上方法很多,这里我就不详细写了,安装还算是傻瓜式的,和windows的过程类似,至于语言,如果觉得难度还不够大的话,完全可以装E文版的,我是装的简体中文版,我总共用分出的100G的空间来安装Ubuntu 14.04,这个版本是最新的版本,有个好处是,可以直接访问Windows8.1的NTFS分区,不用做额外的操作,而且支持中文,例如:$ cd /media/yourname/分区名字/文件夹名,当然GUI就更方便了
我的分区设置如下:
根分区:   50G,
Swap交换分区:16G ,这里,我设置和我的内存一样,据说小于16G的内存,就设置成内存的1.5-2倍
Home分区:剩余的34G
装好之后,重启电脑,有的人会直接进Linux,有的会直接Windows,谷歌或者百度解决方法
PS: 其实到现在感觉空间可能小了, 想想Imagenet 137G的训练文件,觉得应该把Home设置成300-500G以上,会更合适吧。下次安装的时候,再改了,现在暂时不想动了。
PS:今天还是重新装了,把home分区扩大到500G。所以建议真的要大数据实验的小伙伴,也趁早考虑。

PS: Ubuntu下访问网页总是很慢,让我深感它和Windows的差距,可是为什么还是有那么多人向往它呢?下面的办法可以解决部分访问的问题,特别是国外的网站,但是遇到一些调用了被墙的网站的东西,比如google的字体,还是没办法,仍然会在哪里转圈圈。这里似乎是操作系统的机制引起,Windows的浏览器会忽略那些错误,而Ubuntu下的浏览器会不停尝试。废话少说,部分问题的解决办法:
$ sudo apt-get install dnsmasq
$ sudo gedit /etc/dnsmasq.conf
找到 # resolv-file=
修改为:resolv-file=/etc/resolv.dnsmasq.conf
$ sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
$ sudo gedit /etc/resolv.conf
删除所有域名服务器,保留:nameserver 127.0.0.1

第二部分:nVidia驱动和CUDA Toolkit的安装和调试
PS:这里其实可以参考nVidia 官方提供的CUDA安装手册。https://developer.nvidia.com/rdp/cuda-65-rc-toolkit-download#linux。一般要输入你的用户名和密码,就是下载6.5的那个账号。
一、Verify You Have a CUDA-Capable GPU
执行下面的操作,然后验证硬件支持GPU CUDA,只要型号存在于https://developer.nvidia.com/cuda-gpus,就没问题了
$ lspci | grep -i nvidia

二、Verify You Have a Supported Version of Linux
$ uname -m && cat /etc/*release
重点是“x86_64”这一项,保证是x86架构,64bit系统

三、Verify the System Has gcc Installed
$ gcc --version
没有的话就先安装吧,这个是必须的用来编译CUDA Toolkit,不过Ubuntu 14.04是默认有的

四、Download the NVIDIA CUDA Toolkit
下载地址:https://developer.nvidia.com/cuda-toolkit
验证地址:https://developer.nvidia.com/rdp/cuda-rc-checksums
$ md5sum
例如:md5sum cuda_6.5.11_rc_linux_64.run ,这个文件的正确 md5 = a47b0be83dea0323fab24ca642346351
这个感觉蛮重要,我第一次安装的时候md5就没通过,强制安装,结果就有问题,后面重新下载了再安装了一次

五、Handle Conflicting Installation Methods
根据官网介绍,之前安装的版本都会有冲突的嫌疑,所以,之前安装的Toolkit和Drievers就得卸载,屏蔽,等等

六、Graphical Interface Shutdown
退出GUI,也就是X-Win界面,操作方法是:同时按:CTRL+ALT+F1(F2-F6),切换到TTY1-6命令行模式。
关闭桌面服务:
$ sudo stop lightdm

七、Interaction with Nouveau
Nouveau是一个开源的显卡驱动,Ubuntu 14.04 默认安装了,但是它会影响nVidia驱动的安装,所以只有请他回老家了,sorry!

  1. 将nouveau添加到黑名单,防止它启动
    $ cd /etc/modprobe.d
    $ sudo vi nvidia-graphics-drivers.conf
    写入:blacklist nouveau
    保存并退出: wq!
    检查:$ cat nvidia-graphics-drivers.conf

  2. 对于:/etc/default/grub,添加到末尾。
    $ sudo vi /etc/default/grub
    末尾写入:rdblacklist=nouveau nouveau.modeset=0
    保存并退出: wq!
    检查:$ cat /etc/default/grub

  3. 官网提供的操作:
    $ sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
    然后重新生成initrd文件
    $ sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
    $ sudo update-initramfs -u
    上面那条是nVidia官方提供的命令,不知道为什么在我这里会提示dracut是不存在的命令,也许是版本问题,或者少了什么包,不过无所谓,第二条命令也可以搞定,应该是一样的功能。(如果我理解错误,欢迎小朋友们指教,我会改正)
    PS:其实,这一连串的工作,有点没搞懂,因为有的命令和文件不存在。原理理解了,但是步骤还是有点模糊,不过,我是照上面的操作完成了,后面的也没出问题,应该应付过去了吧。

八、Installation
鉴于安装过程中遇到的一些问题和启示,建议先安装官方最新版的显卡驱动,然后再安装CUDA,这里可能是CUDA内置的驱动不太完整,或者适应性差了一点。GTX显卡驱动的下载地址如下(Tesla版的驱动,请大家自己去nVidia的官网下载):
下载地址:http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run

切换到cuda_6.5.11_rc_linux_64.run 所在的目录,然后执行安装命令:
$ sudo sh cuda_6.5.11_rc_linux_64.run
再次提醒,安装前一定要执行 md5sum ,我第一次安装就是执行了,发现不一样,然后没有理它直接安装,导致安装的Sumary里显示Driver成功,Toolkit和Samples失败,第二次在装就好了。
至于如果发现md5检测不一致,怎么办?别逗了,去nVidia重新下载就行了,地球人都知道,别无限循环就好^_^!
这里会一路问你各种问题,基本上就是Accept-yes-Enter-yes-Enter-yes-Enter, 其实就是让你接受协议,然后安装的默认位置确认等等,recruit就别自定义安装位置了,默认才是天堂。
安装完会提示丢失了四个库:libGLU.so, libx11.so, libxmu.so, libxi.so 这个木有关系,下一步就是解决这个问题的。

九、Extra Libraries
安装一些必要的库文件,譬如:OpenGL (e.g., Mesa), GLU, GLUT, and X11 (including Xi, Xmu, and GLX).
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
这个可以切换到GUI界面在操作,要不然那些提示信息,都是乱码,什么都看不懂,不过如果你的系统是E文的,这句话忽略。这里,保证网络不要中断就行。

十、驱动装完了,可以回到GUI界面了,也可以继续留这里玩文本。。。
$ sudo start lightdm

十一、POST-INSTALLATION ACTIONS
这一步就是验证一下安装是否正确,编译和完成以下CUDA自带的程序,建议做一下~

  1. Environment Setup
    $ export PATH=/usr/local/cuda-6.5/bin:$PATH
    $ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH

  2. (Optional) Install Writable Samples
    $ cuda-install-samples-6.5.sh
    安装到Home下,搞定了之后可以在GUI下调整一下,主要是前面的要求,会有一个Sample的文件夹 NVIDIA_CUDA-6.5_Samples在Home的根目录下就ok了。因为后面编译测试各方面什么的方便。其实如果之前安装CUDA驱动和Toolkit一切正常,这一步基本可以省略,应该会自动建立,但检查一下无妨。

  3. Verify the Installation

a. 验证驱动的版本,其实主要是保证驱动程序已经安装正常了
$ cat /proc/driver/nvidia/version

b. Compiling the Examples
$ nvcc -V
不出意外的话应该会提示,nvcc没有安装,其实就是,nvidia-cuda-toolkit的编译器没有安装完整,总之,根据提示继续就好了
$ sudo apt-get install nvidia-cuda-toolkit
我这里还差接近400MB的文件要下载,它是全自动的,所以只要保证网络畅通,一杯咖啡在手,然后就可以XXX了。可悲的是,我这里天色已晚,隔壁的Wifi也断了,笔记本的360随身Wifi连上一会也断了,只有收东西回宿舍,明天再继续了。看看表,靠,00:03,今天打卡时间又错过了。

次日,这里安装完,就可以编译了,切换目录到~/NVIDIA_CUDA-6.5_Samples,记性没问题的话,应该还记得它是安装在Home文件夹的,穿越过去就好了,然后执行:
$ cd /home/username/NVIDIA_CUDA-6.5_Samples
$ make

c. Running the Binaries
运行编译好的文件,看看设备的基本信息和带宽信息:
$ cd /bin/x86_64/linux/release
$ ./deviceQuery
$ ./bandwidthTest

PS:如果测试的时候出现说运行版驱动和实际驱动不符(英文原文不记得了,没记下来),原因可能是因为后面安装的nvidia-cuda-toolkit更新了配置文件,所以和原始的Cuda-Samples的配置或者是驱动程序有变化,所以检测无法编译通过。考虑下面的解决方法:

  1. 卸载现有驱动
    $ sudo nvidia-installer --uninstall
  2. 下载合适版本的驱动,并安装:
    下载地址:http://www.geforce.cn/drivers
    $ sudo sh ./NVIDIA-Linux-x86_64-340.24.run
  3. 重装CUDA Toolkit
    $ sudo sh cuda_6.5.11_rc_linux_64.run
    好了,到这里所有nVidia CUDA的安装就结束了,下面看看Caffe如何安装

第二步:
原博主使用的是MKL,但我图省事,没有安装MKL,而是用了atlas,一句命令搞定
sudo apt-get install libatlas-base-dev

第三步:
opencv部分,用了https://github.com/jayrambhia/Install-OpenCV的ubuntu下的opencv-2.4.9的脚本
这里直接执行脚本的话,除了错误比较难以定位,所以我是把里面的命令一句一句手动执行的

其中遇到了下面几个问题:
sudo apt-get -y install libopencv-dev提示需要依赖项,
改用sudo aptitude install libopencv-dev
因为没有aptitude,先安装 sudo apt-get install aptitude

sudo apt-get -y install x264 v4l-utils ffmpeg
这一步因为找不到ffmpeg而中断

一般找不到包,就到下面的网址搜索,看哪个镜像上有这个源,添加到source里面就可以了
http://packages.ubuntu.com/

搜索ffmpeg,Distribution选any,因为可能是没有trusty的资源
然后添加镜像,
sudo gedit /etc/apt/sources.list
在sources.list里面加一行deb http://cn.archive.ubuntu.com/ubuntu vivid main universe
然后更新源
sudo apt-get update

然后sudo apt-get -y install x264 v4l-utils ffmpeg就可以了

搞定这三个比较麻烦的依赖项后,继续安装opencv

编译opencv的时候,脚本原有的代码是:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
这里我去掉了-D WITH_QT=ON,因为我没有装QT,但是需要加上-D BUILD_TIFF=ON,否则编译caffe的时候会有这样的错误
/usr/lib/libopencv_highgui.so.2.4: undefined reference to TIFFRGBAImageOK@LIBTIFF_4.0' 1>

编译过程如下:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D BUILD_TIFF=ON -D WITH_OPENGL=ON..
make -j4
sudo make install
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

第四步:
安装其他依赖项,没什么问题
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

第五步:
编译caffe:
开始出现了这个错误:
./include/caffe/util/io.hpp:8:18: fatal error: hdf5.h: 没有那个文件或目录
这里是因为没有按照hdf5库,因为这个库在anaconda里面已经有了,需要配置系统路径。
在~/.bashrc文件里面添加
LD_LIBRARY_PATH=youranacondapath/lib:LD_LIBRARY_PATH
export LD_LIBRARY_PATH
记住啊,youranacondapath替换成你自己的anaconda安装的路径,否则就太二了,我自己就犯了一次二.....

然后出现了这个错误
/usr/lib/libopencv_highgui.so.2.4: undefined reference to TIFFRGBAImageOK@LIBTIFF_4.0' 1>
/usr/lib/libopencv_highgui.so.2.4: undefined reference toTIFFReadRGBAStrip@LIBTIFF_4.0'
解决方式前面说了,就是编译opencv的时候要加上 -D BUILD_TIFF=ON

然后又出现了这个错误,这个错误曾让我苦恼了两天,还因此把系统搞崩溃一次....不得不重装
最后还是多亏了最开头提到的博客以及热心网友 _无声的雨 的帮助,非常感谢,当代活雷锋啊!
//usr/lib/x86_64-linux-gnu/libx264.so.142:对‘__exp_finite@GLIBC_2.15’未定义的引用
//usr/lib/x86_64-linux-gnu/libx264.so.142:对‘__log10_finite@GLIBC_2.15’未定义的引用
//usr/lib/x86_64-linux-gnu/libxvidcore.so.4:对‘__logf_finite@GLIBC_2.15’未定义的引用
//usr/lib/x86_64-linux-gnu/libvorbis.so.0:对‘__acosf_finite@GLIBC_2.15’未定义的引用

解决方法:如果你装了anaconda包的话,删除anaconda/lib/下面的 libm
sudo rm -rf libm*

最后编译成功,哈哈。
make all
make test

最后一步
make runtest

有错误
.build_release/test/test_all.testbin 0 --gtest_shuffle --gtest_filter="-GPU"
.build_release/test/test_all.testbin: error while loading shared libraries: libhdf5_hl.so.8: cannot open shared object file: No such file or directory
make: *** [runtest] 错误 127

这里按照开头提到的博客中红字的两段就能搞定
其实就是在LD_LIBRARY_PATH里面添加anaconda的路径,前面已经做过了。但因为我编译caffe时候用的是自己的用户,后来make runtest的时候用了root用户,两个用户从~/.bashrc不是一个,所以我索性两个都添上了。

好了,折腾了一周,装了两次系统,终于把caffe安装好了,接下来就是学习怎么使用了。
最后还是要谢谢这位博主:普兒,以及这位热心网友:_无声的雨
是你们让我感受的社会的温暖,一次又一次把我崩溃的心灵拯救回来,让我体会到了人间有真情。
要是哪位读者去这个博客看看,就能看到我在留言里问的各种小白问题了,哈哈。

caffe 安装记录的更多相关文章

  1. 20160512关于mac安装caffe的记录

    记得2015年在mac系统上安装过一次caffe,非常顺利,但是最近群里许多同学反映mac安装caffe出现了各种问题,同时我也在帮助别人安装caffe的时候也遇到了一些坑,不再像以前这么顺利了.估计 ...

  2. 最全caffe安装踩坑记录(Anaconda,nvidia-docker,Linux编译)

    Anaconda,nvidia-docker,Linux三种方式安装caffe 1.Anaconda安装caffe 1.首先安装anaconda 2.创建虚拟环境(python2.7) conda c ...

  3. windows环境Caffe安装配置步骤(无GPU)及mnist训练

    在硕士第二年,义无反顾地投身到了深度学习的浪潮中.从之前的惯性导航转到这个方向,一切从头开始,在此,仅以此文记录自己的打怪之路. 最初的想法是动手熟悉Caffe,考虑到直接上手Ubuntu会有些难度, ...

  4. caffe+CPU︱虚拟机+Ubuntu16.04+CPU+caffe安装笔记

    由于本机是window10系统,所以想尝试caffe就在自己电脑上整了一个虚拟机(详情可见:win10系统搭建虚拟机:VMware Workstation Player 12环境+Ubuntu Kyl ...

  5. [置顶] caffe+CPU︱虚拟机+Ubuntu16.04+CPU+caffe安装笔记

    由于虚拟机下的Ubuntu系统一般不包含GPU,故这次安装时为了在无GUP环境下运行caffe.所以只需安装CPU版本的caffe 由于本机是window10系统,所以想尝试caffe就在自己电脑上整 ...

  6. ubuntu166.04之Caffe安装

    写在前面:之前一直在搞keras,最近由于某些需求,需要学习caffe,在此记录caffe的安装记录.默认已经安装了cuda 如果是从其他的深度学习平台迁移到Caffe,那么按照这个教程来就可以了. ...

  7. Caffe 安装 Ubuntu14.04+CUDA7.0/7.5(亲测有效)

    自己安装Caffe的过程中,参考了很多资料,但由于版本或者其他原因,安装过程中总是遇到这样或者那样的问题,因此留做记录,方便之后查看,也希望对遇到相似麻烦的朋友们提供帮助.  下面我们开始安装吧: 硬 ...

  8. 分布式监控系统Zabbix-3.0.3-完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  9. 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用

    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用   工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...

随机推荐

  1. JavaScript小细节点罗列(1)

    共勉! 属性访问表达式 众所周知,JavaScript为属性的访问定义了两种语法方式: 表达式.标识符 // 表达式(指定对象) 标识符(指定需要访问的属性的名称) 表达式[表达式] //表达式1(指 ...

  2. Spring Boot—14JdbcTemplate

    pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  3. 【Python】Java程序员学习Python(二)— 开发环境搭建

    巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...

  4. PLSQL中使用二维存储结构---二维数组

    代码如下:  --PLSQL中没有数组的概念 用TYPE 和Table of Record来代替多维数组--create by jenrry 20171028-- 1.0 建立存放列的测试表creat ...

  5. Linux Transparent Huge Pages 对 Oracle 的影响

    1 Transparent Huge Pages 说明 官网上有2篇文章对THP 做了说明: https://access.redhat.com/solutions/46111 https://acc ...

  6. [翻译] CHTCollectionViewWaterfallLayout

    CHTCollectionViewWaterfallLayout https://github.com/chiahsien/CHTCollectionViewWaterfallLayout CHTCo ...

  7. 获取INET4与INET6的信息

    获取INET4与INET6的信息 参考书籍: 本人封装的源码: // // IPAddressInfo.h // YXNETWORK // // http://www.cnblogs.com/YouX ...

  8. mysql宕机,导致innodb_force_recovery恢复不了

    https://serverfault.com/questions/698038/mysql-innodb-recovery-from-datafiles https://serverfault.co ...

  9. Difference Between Arraylist And Vector : Core Java Interview Collection Question

    Difference between Vector and Arraylist is the most common  Core Java Interview question you will co ...

  10. sharepoint 2013 sp1 patch安装后的手工运行

    在安装SP1 后,有时Center admin 会显示 那么必须在以administrator运行sharepoint 2013 powershell. PSConfig.exe -cmd upgra ...