ubuntu1604环境下安装caffe及cuda80等相关组件实际操作流程

Ubuntu安装caffe及python和opencv

Ubuntu版本:16.04.03 LTS,可以比较顺利地全部安装python所需的各种依赖,而不需要安装anaconda包。否则会引起新的软件之间的冲突。

Opencv:2.4.9

Python:2.7

Cuda:8.0

Cudnn:5.1

Caffe安装官网:http://caffe.berkeleyvision.org/installation.html

1.     解决无法安装ubuntu操作系统的问题

最近楼主购入一台华硕游戏本,发现无法安装ubantu。在安装中发现除了debian外所有使用自动安装方式的linux发行版均不能安装,于是研究就开始了。opensuse卡在写入引导,fedroa和centos卡在启动,ubuntu卡在启动安装,怀疑是u盘制作工具有问题,于是尝试了几种工具,就连dd命令也试过了,结果都无法解决。
    解决方法:重新开机,光标选中“InstallUbuntu” ,按“e”,进入grub界面,将倒数第二行中的“quietsplash ---”改为“nomodeset”。F10保存,就可以进入安装界面,进行安装。

安装ubuntu系统之后,还需要将Ubuntu集成的开源驱动加入黑名单,即增加/etc/modprobe.d/blacklist-nouveau.conf文件:

sudo gedit/etc/modprobe.d/blacklist-nouveau.conf

 

在该文件中增加如下两行:

blacklist nouveau

options nouveaumodeset=0

激活上述文件发挥功能,执行sudo update-initramfs –u

执行 $lspci | grepnouveau,查看是否有内容,没有说明禁用成功,如果有内容,就执行:

$sudo reboot

2.     安装caffe及python

 先下载caffe

# sudo git clonehttps://github.com/BVLC/caffe.git

然后安装一堆第三方库

# sudo apt-get installlibatlas-base-dev

# sudo apt-get installlibprotobuf-dev

# sudo apt-get installlibleveldb-dev

# sudo apt-get installlibsnappy-dev

# sudo apt-get installlibopencv-dev

# sudo apt-get installlibboost-all-dev

# sudo apt-get installlibhdf5-serial-dev

# sudo apt-get installlibgflags-dev

# sudo apt-get installlibgoogle-glog-dev

# sudo apt-get installliblmdb-dev

# sudo apt-get installprotobuf-compiler

# sudo apt-get installpython-dev

接着,安装opencv

# cd caffe

# sudo git clonehttps://github.com/jayrambhia/Install-OpenCV

# cdInstall-OpenCV/Ubuntu

# sudo shdependencies.sh

# cd 2.4

# sudo shopencv2_4_10.sh

 

opencv的另一种安装方式

直接克隆下来

sudo git clone https://github.com/jayrambhia/Install-OpenCV

进入   cd Install-OpenCV/Ubuntu/2.4

给所有shell脚本加上可执行权限

chmod +x *.sh

安装其他版本出错了,建议装这个:

sudo ./opencv2_4_9.sh

或:sudo sh opencv2_4_10.sh

最终出现OpenCV ready to be used(表示成功)

 

接下来,编译caffe

# cd ~/caffe

# sudo cp Makefile.config.exampleMakefile.config

# make all

至此,caffe安装完成。

3.     安装python所需要的各种依赖

Cython>=0.19.2

numpy>=1.7.1

scipy>=0.13.2

scikit-image>=0.9.3

matplotlib>=1.3.1

ipython>=3.0.0

h5py>=2.2.0

leveldb>=0.191

networkx>=1.8.1

nose>=1.3.0

pandas>=0.12.0

python-dateutil>=1.4,<2

protobuf>=2.5.0

python-gflags>=2.0

pyyaml>=3.10

Pillow>=2.3.0

six>=1.1.0

     可以尝试采用如下命令安装上述库文件,在ubuntu1604环境下验证过:

sudo pip install -r./python/requirements.txt

如果没有pip需要先安装下pip:sudo apt install python-pip

安装好上述python的依赖之后重新对caffe进行编译。并且执行make pycaffe编译。编译好之后,在python环境下可以执行import caffe和import cv2功能。如果python可以顺利导入这两个库,则说明安装成功,否则安装失败。

      如果要使用caffe的python,还需要修改Makefile.config文件中关于python的目标部分如下:

将PYTHON_INCLUDE:=/usr/lib/python2.7/dist-packages/numpy/core/include

     修改为:

  PYTHON_INCLUDE:=/usr/local/lib/python2.7/dist-packages/numpy/core/include

4.     安装nvidia显卡驱动

这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。从recovery mode进入Ubuntu之后,crtl+alt+F1可进入命令行模式(tty)。crtl+alt+F7可退出命令行模式。

首先改变驱动程序的文件属性为可执行文件。

$ chmod a+x /home/username/NVIDIA.run

 

当输入安装指令时,不要简单地输入 sudo ./....run,而是输入:

sudo ./NVIDIA.run-no-x-check -no-nouveau-check -no-opengl-files

-no-x-check:安装驱动时关闭X服务

-no-nouveau-check:安装驱动时禁用nouveau

-no-opengl-files:只安装驱动文件,不安装OpenGL文件

这样再reboot,就不会出现循环登录的问题。

注意:这里的NVIDIA.run代表包含具体的从NVIDIA官网下载的驱动的版本号。上述指令可以避免显卡安装之后的循环登录问题。

如果在安装时直接输入安装指令,则会在登录界面输入密码后依然跳转回登陆界面,无限循环,这是我在使用.run文件安装时遇到的问题,上述安装指令是一个亲测有效的解决方案。

有时在安装nvidia显卡之前,可能需要卸载已有的显卡驱动。删除以前激活的显卡驱动或者旧版本的nvidia官方驱动,在终端中输入如下命令:

sudoapt-get –purge remove nvidia-*

sudoapt-get remove --purge nvidia-331-updates

如果安装的是官网下载的驱动, 则重新运行run文件来卸载

sh./nvidia.run –uninstall

5.     安装nvidia显卡驱动2

1.    删除之前安装的nvidia驱动,运行 sudoapt-get purge nvidia-*

2.    删除已有驱动也可用sudo apt-get autoremove nvidia-*命令

3 . 添加第三方驱动源,运行 sudo add-apt-repository ppa:graphics-drivers/ppa 或者 sudoapt-add-repository ppa:xorg-edgers/ppa

4. 更新源,运行 sudoapt-get update

5. 查询nvidia驱动可用版本,运行sudoapt-cache search nvidia-* 查询相应版本

6. 安装驱动,运行 sudoapt-get install nvidia-367

 

6.     安装cuda

可参考nvidia公司官网的NVIDIA CUDA INSTALLATION GUIDE FOR LINUX.pdf进行安装。

(1)    修改gcc/g++版本(这一步似乎不执行也能使得cuda正常运行)

由于cuda8不支持gcc/g++5以后的版本,所以需要做以下更改。

改变系统默认的gcc/g++编译器版本,换成gcc/g++-5

1.              sudo su  

2.              cd ../../usr/bin  

3.              ln -s /usr/bin/g++-5 /usr/bin/g++ -f  

4.              ln -s /usr/bin/gcc-5 /usr/bin/gcc -f  

这样,gcc就默认成gcc-5,g++也默认成g++-5了。

(2)    下载cuda包后执行以下命令:

1 sudo chmod 777 cuda_8.0.44_linux.run

2 sudo  ./cuda_8.0.44_linux.run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

(3)    环境变量配置

打开~/.bashrc文件: sudo gedit~/.bashrc 
将以下内容写入到~/.bashrc尾部:

1 exportPATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

2 exportLD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

激活环境变量设置:source ~/.bashrc

(4)    添加环境变量(如果已执行(3),则本步骤可不执行)

编辑计算机文件夹下的/etc/profile,加入CUDA环境变量(下面的23句),保存。

1.              sudo gedit /etc/profile  

2.              export  PATH=/usr/local/cuda/bin:$PATH    

保存后执行下面的命令,使其生效:

1.              source /etc/profile  

同时,进入/etc/ld.so.conf.d/文件夹,执行下面的命令,新建一个名为cuda.conf的文件。

1.              sudo gedit cuda.conf  

然后在文件中写入如下内容:

1.              /usr/local/cuda/lib64  

保存后执行下面的命令,使其生效。

1.              sudo ldconfig  

(5)   BuildCUDA Sample

进入usr/local/cuda/samples,然后build samples,命令如下:

1.              sudo make all -j8  

在执行完之后,进入samples/bin/x86_64/linux/release目录下,在终端执行查询命令:

1.              ./deviceQuery  

如果返回了你电脑显卡的信息,且结尾有Result=PASS,则表示安装成功,否则,建议重启电脑之后再次尝试查询命令。

 

(6)    测试CUDA的samples

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

2 make

3 sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功。

(7)    Qustion2 and Answer2:

(a)   问题1

进行上述检测后,如果输入nvcc–version命令后出现nvcc没有安装或"nvcc: No such file ordirectory"等问题,则采用以下措施:

YourPATH environment variable is not set up correctly. Ensure that your PATHincludes the bin directory where you installed the Toolkit, usually/usr/local/cuda-8.0/bin.

1.              $ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

(b)   问题2

nvcc -V

问题是

The program 'nvcc' is currentlynot installed. You can install it by typing:

sudo apt-get installnvidia-cuda-toolkit

但是我们已经安装了cuda,在 /usr/local 能够看到文件夹 cuda-7.5。 这需要如下设置

执行sudo gedit ~/.bashrc,在最后面,64位的话粘贴以下内容:

export PATH=/usr/local/cuda-7.5/bin:$PATH

exportLD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

接着执行 source ~/.bashrc 使其立即生效 
下面查询

nvcc -V

可见如下结果

nvcc: NVIDIA (R) Cuda compilerdriver

Copyright (c) 2005-2015 NVIDIACorporation

Built onTue_Aug_11_14:27:32_CDT_2015

Cuda compilation tools, release7.5, V7.5.17

(c)    问题10 - “fatal error: hdf5.h: 没有那个文件或目录”

- Step 1: 在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/到INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码:

INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include

INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/include/hdf5/serial/1212

- Step 2: 在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl和 hdf5_serial,也就是把下面第一行代码改为第二行代码:  

LIBRARIES += glog gflags protobufboost_system boost_filesystem m hdf5_hl hdf5

LIBRARIES += glog gflags protobufboost_system boost_filesystem m hdf5_serial_hl hdf5_serial1212

(d)   问题11 - nccl.hpp:5:18: fatal error: nccl.h: No such file or directory

# 在多个 GPU 上运行 Caffe 需要使用 NVIDIA NCCL

$ git clonehttps://github.com/NVIDIA/nccl.git

$ cd nccl

$ sudo make install -j4

# NCCL 库和文件头将安装在/usr/local/lib 和/usr/local/include 中

$ sudo ldconfig # 该命令不执行会出现错误: error whileloading shared libraries: libnccl.so.1: cannot open shared object file: No suchfile or directory 123456123456

 

(e)    编译pycaffe时提示:importerror no module named caffe

gedit ~/.bashrc

exportPYTHONPATH=/path/to/caffe/python:$PYTHONPATH

source ~/.bashrc

(f)    问题12 - No module named google.prototxt

$ sudo apt-get install python-protobuf

或  

可以先下载安装包,自行编译和安装。可参考:http://blog.csdn.net/paynetiger/article/details/8197326

建议使用第一种方法,下面是关键:

如果使用Anaconda,而以上两种方法无论哪一种都会将prototxt相关文件安装到/usr/local/lib/python2.7/dist-packages, 需要将相关文件复制到Anaconda/lib/python2.7/site-packages下,才能正常使用.  1234512345

(g)   问题13 - No module named pydot

$ sudo apt-get install graphviz # 安装graphviz

$ sudo pip install pydot # 安装pydot

如果使用Anaconda,需要将相关文件从/usr/local/lib/python2.7/dist-packages复制到Anaconda/lib/python2.7/site-packages下. 123123

(h)   问题14 - ImportError: libcudart.so.7.0: cannot open shared object file:No such file or directory (CUDA7.5)

$ sudo ldconfig /usr/local/cuda/lib64

$ sudo ldconfig/usr/local/cuda-7.5/lib64

7.     安装Atlas

安装命令如下:

[plain] view plain copy

2.              sudo apt-get install libatlas-base-dev  

8.     安装cudnn

(1)   安装1

配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:

下载cuDNN5.1之后进行解压:

sudo tar -zxvf./cudnn-8.0-linux-x64-v5.1.tgz

进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:

cd cuda/include

sudo cp cudnn.h/usr/local/cuda/include  #复制头文件

cd ..

cd lib64

sudo cp lib*/usr/local/cuda/lib64/    #复制动态链接库

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.solibcudnn.so.5    #删除原有动态文件(这个操作慎用)

sudoln -s libcudnn.so.5.0.5 libcudnn.so.5  #生成软衔接(不一定需要)

sudoln -s libcudnn.so.5 libcudnn.so      #生成软链接(不一定需要)

 

(2)   安装cudnn2

安装cudnn比较简单,简单地说,就是复制几个文件:库文件和头文件。将cudnn的头文件复制到cuda安装路径的include路径下,将cudnn的库文件复制到cuda安装路径的lib64路径下。

#解压文件

tar -zxvfcudnn-6.5-linux-x64-v2.tgz

#切换路径

cd cudnn-6.5-linux-x64-v2

#复制lib文件到cuda安装路径下的lib64/

sudo cp lib* /usr/local/cuda/lib64/

#复制头文件

sudo cp cudnn.h /usr/local/cuda/include/

 

#更新软连接

cd /usr/local/cuda/lib64/

sudo rm -rflibcudnn.so libcudnn.so.6.5

sudo ln -slibcudnn.so.6.5.48 libcudnn.so.6.5

sudo ln -slibcudnn.so.6.5 libcudnn.so

到目前为止,cudnn已经安装完了。但是,是否安装成功了呢,还得通过下面的cudnn sample测试。

#运行cudnn-sample-v2

tar –zxvfcudnn-sample-v2.tgz

cd cudnn-sample-v2

make

./mnistCUDNN

#改程序运行成功,说明cudnn安装成功。

此时可能出现错误:./mnist CUDNN:error while loading shared libraries: libcudart.so.6.5: cannot ope

解决方法参考 https://groups.google.com/forum/#!topic/caffe-users/dcZrE3-60mc

方法1:在命令行中执行 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

方法2:在/etc/profile文件最后添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64, 并在命令行中执行source /etc/profile。

 

(3)   cuDNN安装3

准备安装文件,cudnn的安装就是将include和lib文件拷贝到系统的cuda路径里

cudnn-8.0-linux-x64-v5.1.tgz

进入安装文件所在目录

$tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
$cd cuda
$sudo cp lib64/lib* /usr/local/cuda/lib64/ 
$sudo cp include/cudnn.h/usr/local/cuda/include/
更新软连接,这里最好ls一下lib64的内容,防止版本不一致:
$cd /usr/local/cuda/lib64/
$sudo chmod +r libcudnn.so.5.1.10
$sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
$sudo ln -sf libcudnn.so.5 libcudnn.so
更新设置:
$sudo ldconfig

(4)   cudnn安装步骤:

1、从官网上下载cudnn的安装包。
2、将安装包解压,将此安装包放在home路径下即可,并在当前路径下进行解压,解压后的文件夹名为cuda。

3、在终端上编辑如下代码:

$ cd cuda/include $ sudo cp *.h /usr/local/cuda/include/ (注意这里是你自己的cuda的安装地址,复制*.h文件)

4、关闭终端并重新打开(也可以返回最开始的目录)

$ cd cuda/lib64 $ sudo cp libcudnn* /usr/local/cuda/lib64/

5、终端运行:

$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

 

9.     ubuntu16.04NVIDIA GTX965M显卡驱动PPA安装

目录(?)[+]

1.硬件配置

2.禁用nouveau驱动

3.安装NVIDIA驱动

4.注意

5.参考文章

这两天在笔记本(神舟Z7M-SL7D2)下安装ubuntu16.04,
执行ubuntu安装程序时,经常会在最开始选择语言的界面时鼠标键盘无响应,死机概率30%。
安装完成后,点重启按钮也会导致系统无响应,死机概率(99%)。
启动系统后输入密码登录无法显示桌面,鼠标键盘无响应,死机概率(90%).
前面两种死法,还能忍受,但第三种不能忍啊。
反复尝试失败后,感觉似乎ubuntu对这个型号的显卡支持有问题,因为ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,可能就是nouveau对这个型号的显卡支持有问题,需要安装NVIDIA官方驱动解决问题,于是按照网上的教程重装驱动,看了好多文章没有一个能完全解决我的问题,反复尝试,综合几篇文章的的方法,最后还是PPA安装最终解决问题,总算搞定,这里记下安装过程以免下次再走弯路。

(1)   硬件配置:

CPU Core i7-6700HQ(含集成显卡)
芯片组 Intel Hm170
独立显卡 NVIDIA GTX965M

(2)   禁用nouveau驱动

Ubuntu系统集成的显卡驱动程序是nouveau,我们需要先将nouveau从Linux内核卸载掉才能安装NVIDIA官方驱动。
将nouveau添加到黑名单blacklist.conf中,(关于blacklist参见 《禁用Linux内核驱动》),linux启动时,就不会加载nouveau.
因为nouveau驱动的影响,ubuntu安装后无法登入桌面,所以在ubuntu系统启动显示登录界面后,需要按ctrl+alt+F1进入tty文本模式进入下面的操作

由于blacklist.conf文件的属性不允许修改。所以需要先修改文件属性。
查看属性

 /etc/modprobe.d/blacklist.conf

修改属性

sudo chmod 666 /etc/modprobe.d/blacklist.conf

用vi编辑器打开

sudo vi /etc/modprobe.d/blacklist.conf

在文件末尾添加如下几行:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

修改并保存文件后,记得把文件属性复原:

sudo chmod 644 /etc/modprobe.d/blacklist.conf

再更新一下内核

sudo update-initramfs -u

关于update-initramfs命令的用途,参见 《initramfs 简介,一个新的 initial RAM disks 模型》
修改后需要重启系统
重启系统确认nouveau是已经被屏蔽掉,使用lsmod命令查看:

lsmod | grep nouveau

lsmod命令用于显示已经加载到内核中的模块的状态信息,参见《lsmod命令》

(3)   安装NVIDIA驱动

因为系统中不光有NVIDIA显卡还有一块集成intel显卡能正常驱动,所以经过上一步禁用nouveau驱动后,再次重启,已经系统可以正常登录进入桌面了。

使用如下命令添加Graphic Drivers PPA

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

寻找合适的驱动版本

ubuntu-drivers devices


安装NVIDIA driver
如上图显示GTX965M显卡建议的驱动版本是378
按ctrl+alt+F1进入tty文本模式
关闭(图形)桌面显示管理器LightDM

sudo service lightdm stop

安装nvidia driver,如果网速度不好,可能要花比较长的时间
安装完成后重启

sudo apt-get install nvidia-378
sudo reboot
重启系统后,执行下面的命令查看驱动的安装状态显示安装成功
sudo nvidia-smi
sudo nvidia-setting



安装NVIDIA驱动后,登录死机现象再没出现,一切正常了。

(4)   注意

当BIOS中Secure Boot设置为disable,正安装NVIDIAdriver后,如果再将Secure Boot设置为enable,再启动ubuntu则NVIDIA driver则不会工作。
具体原因,参见这篇文章

《UEFI、BIOS、Secure Boot的关系和知识介绍》

如果要在安全启动模式下安装NVIDIA driver,有点麻烦,我没有再尝试,参见这篇文章应该会有帮助:

《Linux secure boot(安全启动)时添加Nvidia显卡驱动》

(5)   参考文章

《ubuntu16.04 NVIDIA显卡驱动安装》
《Ubuntu 16.04 nvidia安装》

10. 附录

(1)    安装cuda8.0

进入cuda_8.0.61_375.26_linux.run所在目录

执行:

$sudo chmod +x cuda_8.0.61_375.26_linux.run
$sudo ./ cuda_8.0.61_375.26_linux.run

按q键退出RELU文档,按照如下选择,显卡驱动一定要选n,不装

其他都默认yes

最后,配置环境变量,直接放在系统配置文件profile里面:
$sudo gedit /etc/profile
在最后面加入两行代码:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
保存退出.
执行:$sudo ldconfig

 

(2)    检查是否安装成功

$nvcc –version

查看CUDA ,应该显示8.0,如果没有添加path会显示系统之前的版本

$nvidia-smi 查看驱动信息

在根目录下会出现NVIDIA_CUDA-8.0_Samples,打开终端,进入该目录:
$sudo make –j8  #编译samples,我电脑8线程,全开编译
等待2分钟左右,编译完成,执行下条指令:
$sudo ./1_Utilities/deviceQuery/deviceQuery
出现提示显卡驱动版本等信息的内容,表示安装成功。

(3)   Atlas安装

sudo apt-get install libatlas-base-dev


你可能感兴趣的:(操作系统及Nvidia安装)