ubuntu16.04+cuda8.0+caffe
===========
如果出现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的更多相关文章
- 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 ...
- 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以下的版 ...
- Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano
title: Ubuntu 16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano categories: 深度学习 tags: [深度学习框架搭建] --- 前言 ...
- Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细
本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www ...
- ubuntu16.04+cuda8.0+cudnn5.0+caffe
ubuntu安装过程(硬盘安装)http://www.cnblogs.com/zhbzz2007/p/5493395.html“但是千万不要用麒麟版!!!比原版体验要差很多!!!”开关机的时候电脑最上 ...
- Ubuntu16.04 + cuda8.0 + GTX1080安装教程
1. 安装Ubuntu16.04 不考虑双系统,直接安装 Ubuntu16.04,从 ubuntu官方 下载64位版本: ubuntu-16.04-desktop-amd64.iso . 在MAC下制 ...
- 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3
紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...
- Ubuntu16.04+cuda8.0+cuDNNV5.1 + Tensorflow+ GT 840M安装小结
最近重装系统,安装了tensorflow的配置环境 总结一下. 参考资料 http://blog.csdn.net/ZWX2445205419/article/details/69429518 htt ...
- Ubuntu16.04+Cuda8.0+cuDNN6配置py-faster rcnn(转)
原博客地址:https://blog.csdn.net/meccaendless/article/details/79557162 0前言Faster R-CNN是任少卿2015年底推出的目标检测算法 ...
随机推荐
- 修改通达oa数据库root密码
第一步: 打开通达oamysql远程网页地址:如http://127.0.0.1/mysql,点击修改密码功能按钮,根据提示修改,不要生成加密密码,执行即可! 第二步:修改service.php文件的 ...
- python 3.x 实现简单用户登录
import os import sys import getpass login_username = 'admin' login_password = ' u = 0 while u < 3 ...
- WebX框架的页面授权
WebX框架的页面授权 什么是页面授权,简单来说就是对于一个Web应用程序里,哪些页面可以被哪些人在什么情况下访问进行限制.举个简单的例子,有些页面只有用户登录以后才能访问,而另外一些页面无论是否用户 ...
- Codeforces 469 D. Two Sets (并查集)
题目链接:Two Sets 题意: 有n个数,要分成A.B两组,要求如果x∈A则a-x∈A,如果x∈B则b-x∈B,问是否存在一种符合要求的分法. 题解: 并查集,先增加两个点表示A和B集合的根,对于 ...
- vue复习(一)
一.认识Vue 定义:一个构建数据驱动的Web界面的渐进式框架 优点: 1.可以完全通过客户端浏览器渲染页面,服务器端只提供数据 2.方面构建单页面应用程序(SPA) 二.引入Vue <!DOC ...
- python应用:生成简单二维码
概述 \(\quad\)第一篇python的应用就打算写一写用python生成简单的二维码啦.因为二维码在日常生活中越来越常用了,部分博客也用二维码来用作打赏的工具.但是要提醒大家的是,千万不要乱扫街 ...
- vue 组件间的通信
(1)props:用于父组件向子组件传递消息 使用方法: 在父组件中,使用子组件时,<Child v-bind:data="data"/>,通过v-bind把子组件需要 ...
- Fortran的数组与指针
个人理解,欢迎指正 指针就是记录数据的内存地址的变量.指针可以指向单个变量,也可以指向数组. 数组是一个概念,是若干个类型相同的元素的有序集合.在Fortran语言中,数组中存放的元素,可以是整数,实 ...
- Linux 安装Nginx(使用Mac远程访问)
阅读本文需要一定的Linux基础 一 Nginx简介 nginx是用c语言编写的一款高性能的http服务器|反向代理服务器|电子邮件(IMAP/POP3)代理服务器 由俄罗斯的程序设计师Igor Sy ...
- Swing的概述
Swing在Java中是一个包,下面就是它的基本概述:简介: Java为了方便图形界面的实现, 专门设计了类库来满足各种各样的图形元素和用户交互事件, 该类库即为抽象窗口工具箱(Abstract Wi ...