最近开始配置自己的深度学习主机,由于之前只在笔记本上和单显卡主机上安装过,所以可以说是zero经验,以至于很多问题不了解都当成了bug,故为了方便以后的自己以及大众,特在此写下post一篇。(由于可能会有很多的问题我没有遇到但各位可能遇到,故在文末贴出其他的安装链接,请自取)

~~~~~~~~~~~~~~~~~~~~华丽丽分割线~~~~~~~~~~~~~~~~~~~~

一、ubuntu16.04安装

1.首先当然是系统盘的制作,这个不作赘言,一般使用 UltraISO,具体度娘会告诉你;

2.紧接着就是安装,如何安装,如何分区,度娘也会一一告知,此处就说几个不同之处:

1)首先,带有独立显卡的主机,通常有独显输出和集显输出两种端口,而独显是需要安装驱动才可以使用的,所以最初装系统的时候需要使用集显输出的端口,否则你可能完全进不去安装界面

2)其次,在BOOT界面选择启动项的时候,对U盘启动会出现两个选项,第一个带有前缀UEFI,另一个这没有。这是因为现在的主板驱动一般有 BIOS 和 UEFI 两种,虽说 UEFI 是BIOS 的继任者,但 BIOS 才用起来 更加顺手。更重要的是在用UEFI模式进行ubuntu16.04安装的时候,在安装后期会出现bug中断,具体什么不记得了,与grub有关,会导致系统无法启动,而这与UEFI有莫大的关系,所以安全起见,选后不带UEFI前缀的,也就是BIOS模式进行系统安装;

3)ubuntu16.04 安装好之后,启动可能会出现 grub rescue 故障,找不到 normal.mod,这可以通过我的另一篇 post 解决,附上解救指南:ubuntu系统下grub rescue故障恢复

3.至此,ubuntu16.04 算是安装完毕,第一次撒花o(∩_∩)o

注:需要注意的是,目前我们也一直在使用集成显卡输出!且直到安装好nvidia驱动重启都要一直使用集成显卡输出!!!


二、各种依赖环境安装:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install -y build-essential cmake git pkg-config

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install -y libatlas-base-dev 

sudo apt-get install -y --no-install-recommends libboost-all-dev

sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev

# (Python general)
sudo apt-get install -y python-pip

# (Python 2.7 development files)
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy

# (or,Python 3.5 development files)
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-numpy python3-scipy
 
# (OpenCV 2.4)
sudo apt-get install -y libopencv-dev

(or,OpenCV 3.X - see other blogs in the end of the post)

以上是caffe官方安装指南的内容,亲测好用无疑,其实文末的caffe官方安装指南还是很不多错的指南,只是在nvidia驱动、cuda、cudnn、open3.x方面很不足(貌似这些都是重点内容,结果都被caffe官方文档屏蔽了,手动滑稽(*^__^*) )

注:在upgrade时,可能会提起缺少fireware,这个不是大问题,直接上网下载相应版本的固件安装即可


三、Nvidia驱动+cuda安装

写在安装前:

1)其实在cuda的安装中会涉及到nvidia驱动的安装,但是屡次尝试,总是会出现kernel souce的error,所以,还是提前安装为好。

2)安装nvidia驱动需要在命令行模式下,但有时可能会出现无法进入命令行或者进入命令行黑屏及显示nouveau相关的error提示,这是可通过以下的改动进行修复,重启后可能会出现屏幕显示非常延迟卡顿的现象,这正常,因为我们把显示驱动修改了。不过建议把需要的nvidia驱动、cuda和cudnn都下载好后再进行处理,否则如此卡顿会很忧伤的o(∩_∩)o

sudo gedit /etc/default/grub

# set GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash nomodeset"

sudo update-grub

sudo reboot
1.下载需要的nvidia驱动程序(下载最新的即可),附上飞行链接:NVIDIA驱动程序下载

2.下载需要的cuda程序,下载runfile版本的,同样附上飞行链接:CUDA下载

2.卸载之前安装的nvidia驱动程序,新安装的系统不需要的这一步,但依旧写在此以告后人,因为nvidia驱动重复安装会出现循环登录无法进入系统的问题,或者反过来说,循环登录无法进入系统一般都是由于显卡驱动出现问题导致的,卸载后重新安装即可(如何卸载重装)

sudo apt-get remove –purge nvidia*
3.禁用nouveau,其实这一步可能并不需要,因为在厂商安装的原始系统中并没有相关文件,我想可能是因为我们的集成显卡和独立显卡分别有各自的输出端口,可以自主插拔选择显示使用的显卡,而在笔记本等上面,两种显卡是同时连接的,故需要进行禁用:
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

# add blacklist nouveau option nouveau modeset=0 

sudo update-initramfs -u

再配置环境

sudo gedit ~/.bashrc

# add the following two lines
    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 

source ~/.bashrc
4.开始正式安装驱动

1)进入命令行模式(Ctrl+Alt+F1),并关闭桌面

sudo service lightdm stop
2) 进入驱动文件所在目录,修改文件权限(可选),然后执行文件
sudo chmod a+x NVIDIA-Linux-x86_64-375.26.run  # optional

sudo bash ./NVIDIA-Linux-x86_64-375.26.run
3)安装过程中开始会提示一个预安装script安装失败,问你要continue 还是abort,点击 continue就行,不用管。

5.进入cuda安装文件的文件夹,安装cuda

sudo sh cuda_8.0.61_375.26_linux.run
1)在选择是否安装nvidia驱动时,选‘n’,因为我们已经安装好了

2)在选择安装cuda samples,选 ‘n’,因为不需要

3)其余选项选择‘y’,或默认就行了

4)安装成功后,关机(命令为 shutdown -h Now),更换显示输出端口为独立显卡的输出端后再启动;此处如果直接重启(sudo reboot)的话,由于未更换显示输出端口,而原驱动被禁用等原因,会出现循环登录的情况,此时强行关机再更换显示输出端口即可。

6.启动后配置cuda环境变量

1)一般配置此步即可,但有时会出现问题,可以选择用root用户进行编辑,也可以尝试后两步

gedit ~/.bashrc  # if can't edit,add sudo before

# add the two lines following
    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

# cuda can change as cuda-8.0 specifically

source ~/.bashrc  # MUST source

2)

sudo gedit /etc/ld.so.conf.d/cuda.conf

# add the two lines following
    /usr/local/cuda/lib64
    /lib

sudo ldconfig -v
3)
sudo gedit /etc/profile  

# add following two lines
    PATH=/usr/local/cuda/bin:$PATH  #  不能有空格!! 
    export PATH  

source /etc/profile

7.验证是否安装成功:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery


四、安装cudnn

1.下载对应cuda版本的cudnn,可以去官网下载,需要注册;不想注册的可以从网盘下载,网盘有5.1和6.0,建议下载cudnn 6.0(tensorflow要求6.0);也可以用下面的命令行下载:

wget http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz

2.下载后解压,得到cuda文件夹,里面有include和lib64两个子文件夹

3.进入include子文件夹

sudo cp cudnn.h /usr/local/cuda/include/  # 复制头文件到之前安装的cuda目录

4.进入lib64子文件夹,可以图形界面进入看清楚版本号,方便后期修改

sudo cp lib* /usr/local/cuda/lib64/  # 复制动态链接库到之前安装的cuda目录,注意查看

5.重新生成软链接

cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.x  # 删除原有动态文件,版本号注意变化,可在cudnn的lib64文件夹中查看

sudo ln -s libcudnn.so.x.x.x libcudnn.so.x  # 生成软衔接,具体看cudnn的lib64中为什么版本,注意变化

sudo ln -s libcudnn.so.x libcudnn.so  # 生成软链接

sudo ldconfig -v
6.验证安装cudnn后cuda是否依旧可用
nvcc --version  # or nvcc -V


五、安装caffe

1.下载caffe,此处下载caffe-master源码,并解压至任何地方即可;

2.进入caffe根目录,进行配置,文件中对每项设置都有注释,看看基本能懂

sudo cp Makefile.config.example Makefile.config

sudo gedit ./Makefile.config
配置好后,Makefile.config会包含以下有效内容
USE_CUDNN := 1
CUDA_DIR := /usr/local/cuda    # or cuda-8.0
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
        -gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_61,code=sm_61 \
        -gencode arch=compute_61,code=compute_61
BLAS := atlas
PYTHON_INCLUDE := /usr/include/python2.7 \
                /usr/lib/python2.7/dist-packages/numpy/core/include \
                /usr/local/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
WITH_PYTHON_LAYER := 1
INCLUDE_Dirs := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_Dirs := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/hdf5/serial/
BUILD_DIR := build
distribute_DIR := distribute
TEST_GPUID := 0
Q ?= @
3.进一步更改配置
sudo gedit ./Makefile

# replace this line
    NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
# with the following line
    NVCCFLAGS += -D_FORCE_INLInes -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
并打开CMakelists.txt添加一下内容
# ---[ Includes
set(${CMAKE_CXX_FLAGS} "-D_FORCE_INLInes ${CMAKE_CXX_FLAGS}")
4.为hdf5添加软连接,ubuntu16.04的某些升级之后,此步不再需要,但安全起见依然进行
cd /usr/lib/x86_64-linux-gnu

sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so  # 源文件的版本可能有所不同,可进入文件夹进行查看后再确定

sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 
5.安装需要的python模块,先进入caffe根目录(可以以root用户运行,避免出现一些权限问题)
cd python

for req in $(cat requirements.txt); do pip install $req; done
如果有任何问题,可以再次执行以下命令
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done
6.开始正式编译caffe
make all -j8
7.编译成功后,进行验证,没有错误即安装成功,大大地撒花o(∩_∩)o
make runtest -j8
注:有的时候可能会出现找不到cuda相关的文件,可以直接进入cuda安装目录进行确认,一般都是存在的,可能是环境没有配置好,可以使用root用户重新配置环境并用root用户运行runtest,或者重启,一般都不会有大问题


六、编译其他结构

可以编译caffe的matlab和python接口,此处我们只编译python接口

1.直接进入caffe根目录,编译pycaffe

make pycaffe -j8
2.配置环境
sudo gedit ~/.bashrc

# add the following line
export PYTHONPATH=/path/to/caffe-master/python:$PYTHONPATH

source ~/.bashrc
3.测试pycaffe
python

>>> import caffe    # 不报错即安装成功
注:如果提示找不到caffe,可以尝试用root用户配置环境,并用root用户执行;或者今后在写代码的时候,每次都直接将caffe的路径加入即可,只要caffe安装成功了,其他都是小问题
import sys

sys.path.append('/path/to/caffe-master/python')

import caffe
4.最后,可以安装jupyter神器
sudo pip install jupyter

# 命令终端输入以下语句即可使用
jupyter notebook


~~~~~~~~~~~~~~~~~~~~~~华丽丽分割线~~~~~~~~~~~~~~~~~~~~

参考:

1.Ubuntu 16.04 or 15.10 Installation Guide:https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide#the-gpu-support-prerequisites

2.Install caffe-GPU on Ubuntu-16.04:http://gear.github.io/2017-03-30-caffe-gpu-installation/
3.Ubuntu16.04 Caffe 安装步骤记录(超详尽):http://blog.csdn.net/yhaolpz/article/details/71375762

4.Ubuntu16.04+CUDA8.0+cudnn7.5+Caffe安装过程:http://www.jb51.cc/article/p-ccblelec-ys.html

ubuntu16.04+cuda8.0+cudnn5.1+caffe 安装基于独立主机&集成显卡&GTX1080Ti的更多相关文章

  1. ios中的.dylib和.a lib有什么区别?

    我知道Objectivec中的编译和运行时是什么,但是我想知道是什么画了这两个库之间的界限?他们的目的是什么,除了陈述一个是静态的而另一个是动态的?我们何时需要一个而不是另一个?

  2. xamarin.ios – ShareKit与MonoTouch如何?

    有人可以验证ShareKit实际上是否可用于MonoTouch并指导我完成使其工作所需的步骤?解决方法您首先从getsharekit.com下载还是使用ShareKit2.0?

  3. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

    任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

  4. ios – Xcode 7 beta 2:LaunchScreen.storyboard无法打开文档

    我在两个不同的Mac(iMac和MacBookpro)上收到这个错误.不知道为什么人们不能再现它,但我需要一些帮助.在运行XX优胜美地10.10.4的Mac上运行Xcode7beta2(15六月’15).甚至无法编译和运行我的项目..我从创建菜单创建了一个视图应用程序项目,就是这样.编辑:我试图删除并重新添加storyboard文件(也可以打开Main.storyboard插件),我仍然得到相同的

  5. ios – 为具有多个目标和不同平台的项目编写Podfile

    如何让CocoaPods成功整合到我的项目和iOS/Mac目标?我已经阅读了Podfile文档,但发现它在这方面缺乏.解决方法得到它了!从我的每个目标和运行的pod安装中删除libPods-xxxx.a文件,再次执行了我的目标集成.

  6. iOS中的CocoaPods是什么?

    任何人都可以详细说明iOS开发中的CocoaPods.我似乎无法理解它们是什么.提前致谢.解决方法CocoaPods是我在最近的iOS应用程序开发中发现的最好的东西之一.我用它来获取最新的Github开源项目作为框架和lib到我的项目中.最好的部分是它将自动管理依赖lib,因此无需拖放文件并下载文件夹blaablaaa只需一个简单的代码’podinstall即可!

  7. Swift 2/iOS 9 – libz.dylib找不到

    我在我的新的Swift2.0项目中使用一些来自google的外部代码,在早期版本中需要“libz.dylib”。更新到新的XCode/新的SDK后。

  8. android – 用我非常简单的calabash测试用例不断得到错误“HTTPClient :: ReceiveTimeoutError”

    我是calabash-android测试自动化库的新手.我花了两天时间来理解这个问题没有成功:(我正在使用calabash-android版本0.8.0,我按照文档pre-definedsteps进行测试.我的测试很简单,只需等待登录界面(这是一个包含id为“email_field”的输入字段的活动),输入用户名和密码.这是我在功能文件中的步骤:当我使用命令calabash-android运行my

  9. android – 符合Nvidia Tegra profiler 2.0的移动设备

    解决方法通常任何基于Tegra4和K1的设备都可以工作,但我会推荐Nvidia的Shield/Note用于你的工作,不仅是他们退出便宜,而且他们的机器人留下了很多香草使它更容易使用.还有(可用的)更新策略的优点.

  10. android – UnsatisfiedLInkError使用NDK链接到FFMPEG

    我使用bambuser的文件编译了FFMPEGforandroid.编译运行正常.没有错误.我还确保在build.sh中更改包名称.但是,一旦我尝试链接到文件,手机就会抛出UnsatisfiedLinkError.这是Androkd.mk文件:Video.c很简单:相应的Java代码也很简单:但我得到这个错误:我尝试用Java手动加载预构建的共享库(bambuser文件)(使用System.loa

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部