===========

如果出现nvidia-smi failed to communicate with nvidia driver,循环登录情况,则:

sudo apt-get remove --purge nvidia-*

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

sudo apt-get update

sudo service lightdm stop

cd packages

重新安装:

sudo sh ./NVIDIA-Linux-x86_64-390.59.run -no-opengl-files

安装显卡驱动

===

1.测试cuda8.0是否安装成功

ls /dev/nvidia*

显示四个或者三个

2.cudnn安装

2.1 下载好文件,进入下载目录 (cudnn5.1)

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

解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行如下命令复制头文件:

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

再cd命令切换进lib64文件夹,执行如下命令复制动态链接库:

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

然后进入复制后的动态链接库进行新的链接。先进入目录:

cd /usr/local/cuda/lib64/

查看已有链接:

ls -al | grep libcudnn

显示四个

删除原有动态文件:

sudo rm -rf libcudnn.so libcudnn.so.5

再次查看:

ls -al | grep libcudnn

显示两个,说明已删除,现在建立新的链接:

sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

2.2 下载好文件,进入下载目录 (cudnn6.0)

tar zxvf cudnn-8.0-linux-x64-v6.0.tgz

解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行如下命令复制头文件:

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

然后进入复制后的动态链接库进行新的链接。先进入目录:

cd /usr/local/cuda/lib64/

查看已有链接:

ls -al | grep libcudnn

显示四个

删除原有动态文件:

sudo rm -rf libcudnn.so libcudnn.so.6

再次查看:

ls -al | grep libcudnn

显示两个,说明已删除,现在建立新的链接:

sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6

sudo ln -s libcudnn.so.6 libcudnn.so

再次查看:

ls -al | grep libcudnn

显示四个,已链接好!

然后设置环境变量和动态链接库:

sudo gedit /etc/profile

然后再打开的文件末尾加上(“=”前后不要有空格)

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

保存之后创建链接文件:

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

这是一个空白文件,添加:

/usr/local/cuda/lib64

按下esc键,输入(:wq)保存并退出

输入如下命令使链接生效

sudo ldconfig

3.安装caffe相关依赖

sudo apt-get install git libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev python-dev libgflags-dev libgoogle-glog-dev liblmdb-dev

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

安装python依赖库

sudo apt-get install cython python-numpy python-scipy python-skimage python-scikits-learn python-matplotlib ipython python-h5py python-leveldb python-networkx python-nose python-pandas python-dateutil python-protobuf python-gflags python-yaml python-pil

安装矩阵加速器

[sudo] apt-get install libopenblas-dev

4.安装caffe:

从官网下载caffe-master压缩包,解压到自己想要的目录

进入主目录下

cp Makefile.config.example Makefile.config

Vim Makefile.config

修改BLAS:=open

use_cudnn :=1的备注取消

修改下面配置:

`NCLUDE_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/hdf5/serial/ `

(好象是在200行左右)

====

5.编译测试

make all -j8
make test -j8
make runtest -j8
make pycaffe

=======

6.测试

下载MNIST数据库并解压缩

./data/mnist/get_mnist.sh

将其转换成Lmdb数据库格式

./examples/mnist/create_mnist.sh

训练网络

./examples/mnist/train_lenet.sh

结果显示:

==========

错误集锦

1.make all -j8出现错误:

/usr/bin/ld: cannot find -lhdf5_hl
/usr/bin/ld: cannot find -lhdf5
collect2: error: ld returned 1 exit status

这说明连接器找不到 hdf5_hl和hdf5这两个库,没法进行链接。

我的解决方案是更改makefile:在makefile中作如下更改:

#LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

(把第一行注释,然后改成第二行的内容就可以了)'

2.make all -j8出现错误:

进入caffe根目录,

gedit Makefile.config

设置以下内容:

    USE_CUDNN := 1 #取消该句注释
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
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

3.make all -j8出现错误:

CXX .build_release/src/caffe/proto/caffe.pb.cc
In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:9:42: fatal error: google/protobuf/stubs/common.h: 没有那个文件或目录
#include <google/protobuf/stubs/common.h>
compilation terminated.
Makefile:588: recipe for target '.build_release/src/caffe/proto/caffe.pb.o' failed
make: *** [.build_release/src/caffe/proto/caffe.pb.o] Error 1

可能是依赖包没有下载完全,重新回到步骤三,逐个测试安装

4.make all -j8出现错误:

/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 不是符号连接
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 不是符号连接

原因:

系统找的是一个符号连接,而不是一个文件。

解决方法:

sudo mv /usr/lib/

nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

5.make all -j8出现错误:

Makefile:588: recipe for target ‘.build_release/cuda/src/caffe/layers/embed_layer.o’ failed
make: * [.build_release/cuda/src/caffe/layers/embed_layer.o] Error 1
/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’:
/usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
return (char *) memcpy (__dest, __src, __n) + __n;

这个问题疑似跟Ubuntu16.04的版本有关系,

在caffe的Makefile里面第409行

NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)更改为

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

6.make all -j8出现错误:

fatal error: hdf5.h: 没有那个文件或目录

解决方案:

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/

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

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

7.make all -j8出现错误:

build_release/lib/libcaffe.so: undefined reference to google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)'

设置环境变量:LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH,将/usr/lib/x86_64-linux-gnu/放在最前面

8.make all -j8出现错误:

build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*)'

.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::Message::InitializationErrorString[abi:cxx11]() const'

.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum[abi:cxx11](google::protobuf::EnumDescriptor const*, int)'

.build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()'

原因:

应该是安装anaconda了,而且在里面安装了protobuf相关的东西,和系统里安装的冲突了

解决方法:

将系统环境中的anaconda路径先注释掉,就可以成功make

gedit ~/.bashrc

备注掉anaconda的路径

8.make all -j8出现错误:

http://blog.csdn.net/w5688414/article/details/76695413

http://blog.csdn.net/u014696921/article/details/75258016

ubuntu16.04+cuda8.0+caffe的更多相关文章

  1. Ubuntu16.04+Cuda8.0+1080ti+caffe+免OpenCV3.2.0+faster-rCNN教程

    一.事先声明:1.Ubuntu版本:Ubuntu使用的是16.04.而不是16.04.1或16.04.2,这三个是有区别的.笔者曾有过这样的经历,Git上一个SLAM地图构建程序在Ubuntu14.0 ...

  2. Ubuntu16.04+CUDA8.0+cuDNN5.1+Python2.7+TensorFlow1.2.0环境搭建

    软件版本说明:我选的Linux系统是Ubuntu16.04,CUDA用的8.0,Ubuntu16.04+CUDA8.0+cuDNN5.1+Python2.7只支持TensorFlow1.3.0以下的版 ...

  3. Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano

    title: Ubuntu 16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano categories: 深度学习 tags: [深度学习框架搭建] --- 前言 ...

  4. Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细

      本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www ...

  5. ubuntu16.04+cuda8.0+cudnn5.0+caffe

    ubuntu安装过程(硬盘安装)http://www.cnblogs.com/zhbzz2007/p/5493395.html“但是千万不要用麒麟版!!!比原版体验要差很多!!!”开关机的时候电脑最上 ...

  6. Ubuntu16.04 + cuda8.0 + GTX1080安装教程

    1. 安装Ubuntu16.04 不考虑双系统,直接安装 Ubuntu16.04,从 ubuntu官方 下载64位版本: ubuntu-16.04-desktop-amd64.iso . 在MAC下制 ...

  7. 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3

    紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...

  8. Ubuntu16.04+cuda8.0+cuDNNV5.1 + Tensorflow+ GT 840M安装小结

    最近重装系统,安装了tensorflow的配置环境 总结一下. 参考资料 http://blog.csdn.net/ZWX2445205419/article/details/69429518 htt ...

  9. Ubuntu16.04+Cuda8.0+cuDNN6配置py-faster rcnn(转)

    原博客地址:https://blog.csdn.net/meccaendless/article/details/79557162 0前言Faster R-CNN是任少卿2015年底推出的目标检测算法 ...

随机推荐

  1. JavaSE日常笔记汇总

    1. If和switch的比较 2. continue的注意事项 在for循环中,当执行continue语句时,i++还是会执行,continue语句只代表此次循环结束,i还是会累加,并继续执行下次循 ...

  2. 轻松构建 基于docker的 redis 集群

    下面跟着我来 一步一步构建redis 集群吧. 集群的目录结构见GitHub源码(文章末尾) 1,安装docker环境,根据自身的操作系统,google下即可. 2,我们在服务器上,搭建所需目录结构. ...

  3. adb devices报错解决

    1. 执行adb device报错如下 2. 报错原因及解决办法 报错时开启了Androidkiller,关闭即解决问题 可能原因:adb命令被占用冲突了

  4. C语言实现随机数

    最近在看<The C Programming Language>这本书,看到一个关于随机数的知识点,有种豁然开朗的感觉.以前总靠死记硬背,也不明白为啥是这样,而且总把srand()遗漏.相 ...

  5. WPF不同线程之间的控件的访问

    原文:WPF不同线程之间的控件的访问 WPF不同线程之间的控件是不同访问的,为了能够访问其他线程之间的控件,需要用Dispatcher.Invoke执行一个新的活动即可. 例如: public voi ...

  6. 洛谷 P4430 小猴打架

    洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...

  7. Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试

    1.Neutron的介绍 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等.Neutron 提供了一个灵活的框架,通过配置,无论是开 ...

  8. 实验二:ICMP重定向攻击

    -:实验原理 ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表.由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它 ...

  9. Flutter - Stateful(有状态) 和 stateless(无状态) widgets

    Stateful(有状态) 和 stateless(无状态) widgets 有些widgets是有状态的, 有些是无状态的 如果用户与widget交互,widget会发生变化,那么它就是有状态的. ...

  10. JS ,substr、 substring、charAt方法的区别

    JS 截取字符串substr 和 substring方法的区别,需要的朋友可以参考下,根据需要自行选择. substr 方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.subs ...