基于ubuntu14.04 cuda7.5 cudnn5.1 caffe 配置
1. 软硬件条件:
双显卡(intel & NVIDIA GTX960m)
Win10 & Ubuntu14.04 双系统
2. 安装步骤:
安装配置主要包括:CUDA CUDNN OPENCV CAFFE
参考:CUDA CAFFE 的官网文档(**************很重要)
若干博客:
http://blog.youkuaiyun.com/yhl_leo/article/details/50961542
http://blog.youkuaiyun.com/c_qianbo/article/details/51386377
http://www.cnblogs.com/denny402/p/5067265.htmls
建议在ubuntu14.04下配置caffe
先前准备 添加依赖库:
sudo apt-get install build-essential
sudo apt-get install libprotobuf-devlibleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-devlibgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
安装NVIDIA显卡驱动,我是先卸载已有版本,再安装,卸载方法:
sudo apt-get remove --purge nvidia*
重启后登录时,可能会循环出现填写登录密码,不能进入系统的情况,按Ctrl+Alt+F1,登录,安装显卡驱动:
$ sudo apt-get install nvidia-current
此外:
若在ubuntu下载caffec cuda cudnn opencv较慢可转到windows用迅雷加速下载在ubuntu访问windows盘copy即可
本人按此文档遇到错误较少,若遇到错误建议查看上面的博客以及GOOGLE解决
2.1安装cuda
安装CUDA有两种方法,
离线.run安装,deb在线/离线安装(*************对于如何安装官网有详细的文档说明)
在线安装网速较慢 ,故选择离线.deb安装(即下载deb(local)文件,离线安装也需要联网)
安装之前请先进行md5校验,确保下载的安装包完整
md5sum 包名
得到的校验码,在官网的检验码文档中查询是否有次检验码
切换到下载的deb所在目录,执行下边的命令(官网也有安装命令)
sudo dpkg -icuda-repo-<distro>_<version>_<architecture>.deb
sudo apt-get update
sudo apt-get install cuda
然后重启电脑:sudo reboot
解决cude.deb(network) 安装提示未找到软件包 cuda
:
系统设置-软件和更新-其他软件 勾选nvidia
然后 sudo apt-get update
sudo apt-get install cuda
解决E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
E: 无法对目录 /var/lib/apt/lists/ 加锁
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/)
只需执行:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
解决程序卡死 alt ctrl F1
ps aux
kill 编号
alt +crtl +F7
安装完cuda:
sudo vi /etc/profile 添加如下
$ export PATH=/usr/local/cuda-7.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
使之生效:
source /etc/profile
验证:
nvcc-V
同时需要添加lib库路径:在/etc/ld.so.conf.d/加入文件cuda.conf,内容如下
/usr/local/cuda/lib64
保存后,执行下列命令使之立刻生效
sudo ldconfig
2.2安装Cudnn
安装Cudnn:
下载cudnn(注册nvidia账号即可从官网下载)
下载版本: cudnn-7.0-linux-x64-v4.0(根据个人情况选择适合版本)
执行以下:
$ sudo tar xvf cudnn-7.0-linux-x64-v4.0-prod.tgz
$ cd cuda/include $ sudo cp *.h /usr/local/include/
$ cd ../lib64
$ sudo cp lib* /usr/local/lib/
$ cd /usr/local/lib
$ sudo chmod +r libcudnn.so.5.1.3
$ sudo ln -sf libcudnn.so.5.1.3 libcudnn.so.5
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig
(我安装的是libcudnn.so5.1.3,跟上面的例子对应就好)
安装CUDA SAMPLE
进入/usr/local/cuda/samples,执行下列命令来build samples
sudo make all
整个过程大概10分钟左右,全部编译完成后,进入samples/bin/x86_64/linux/release,运行deviceQuery
./deviceQuery
如果出现显卡信息,则驱动及显卡安装成功:
./deviceQuery Starting...
CUDA Device Query(Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 670"
CUDA Driver Version /Runtime Version 6.5 / 6.5
CUDA CapabilityMajor/Minor version number: 3.0
Total amount ofglobal memory: 4095MBytes (4294246400 bytes)
( 7) Multiprocessors,(192) CUDA Cores/MP: 1344 CUDA Cores
GPU Clock rate: 1098 MHz (1.10 GHz)
Memory Clock rate: 3105 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 524288 bytes
Maximum TextureDimension Size (x,y,z) 1D=(65536), 2D=(65536,65536), 3D=(4096, 4096, 4096)
Maximum Layered 1DTexture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2DTexture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount ofconstant memory: 65536 bytes
Total amount ofshared memory per block: 49152 bytes
Total number ofregisters available per block: 65536
Warp size: 32
Maximum number ofthreads per multiprocessor: 2048
Maximum number ofthreads per block: 1024
Max dimension size ofa thread block (x,y,z): (1024, 1024, 64)
Max dimension size ofa grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy andkernel execution: Yes with 1 copy engine(s)
Run time limit onkernels: Yes
Integrated GPUsharing Host Memory: No
Support hostpage-locked memory mapping: Yes
Alignment requirementfor Surfaces: Yes
Device has ECCsupport: Disabled
Device supportsUnified Addressing (UVA): Yes
Device PCI Bus ID /PCI location ID: 1 / 0
Compute Mode:
<Default (multiple host threads can use ::cudaSetDevice() with devicesimultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDADriver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 =GeForce GTX 670
Result = PASS
NOTE:上边的显卡信息是从别的地方拷过来的,我的GTX650显卡不是这些信息,如果没有这些信息,那肯定是安装不成功,找原因吧!
2.3安装矩阵算法库
安装Intel MKL或Atlas
我没有MKL,装的Atlas
安装命令:
sudo apt-get install libatlas-base-dev
2.4 安装OPENCV
依赖包安装
Ubuntu下安装软件或多或少都需要安装一些依赖包(软件)。opencv也不例外。
(1)build-essential软件包,为编译程序提供必需软件包的列表信息,这样软件包才知道头文件、库函数在哪里。还会下载依赖的软件包,安装gcc/g++/gdb/make等基本编程工具,最后才组成一个开发环境。
sudo apt-get install build-essential
(2)下面依赖关系主要是为了能够支持读写图片以及视频等。
sudo apt-get install libgtk2.0-dev libavcodec-devlibavformat-dev libtiff4-dev libswscale-dev libjasper-dev
(3)安装cmake,可以官网上下载源码编译,也可以在百度网盘下载2.8.12版本,当然可以直接使用apt-get方法。
sudo apt-get install cmake
(4)安装pkg-config,它是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。
sudo apt-get install pkg-config
编译安装过程
(1)使用cmake来检测编译环境以及生成makefile以及其他project信息,在使用cmake过程可以设置一些参数。
在本目录下使用cmake,注意后面的点表示在当前目录下寻找CMakeLists.txt。
cmake .
也可以在可以在另外建一个文件夹,最常见的就是子目录。当然在构建的时候也可以配置一些参数:
下载opencv(官网即可下载),解压
cd opencv-2.4.9
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -D CUDA_ARCH_BIN=3.2 ..
(2)使用make编译
make
(3)使用make install 安装
sudo make install
(4)在/etc/ld.so.conf.d目录下增加一个conf文件(可以命名为 opencv.conf),同样添加 /usr/local/lib
使用下面的动态库管理命令ldconfig,让opencv的相关链接库被系统共享
sudo ldconfig -v
(5)完成了动态库的共享,还不能使用opencv来编程,还需要为程序指定openvc的头文件位置。这里使用pkg-config命令来完成。首先在 /etc/profile 中添加
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
pkg-config 维护着一个关于opencv的配置文件,这个文件(opencv.pc)在目录 /usr/local/lib/pkgconfig,这个文件记录着opencv的一些动态库信息,还有头文件信息通过pkg-config 命令可以列出关于opencv的配置信息:
测试
(1)在解压的opencv目录下找到 samples/c/build_all.sh,运行该文件
./build_all.sh
(2)找其中一个来运行看一下效果,例如 find_obj程序:
运行:./fing_obj
2.5 安装CAFFE
安装caffe:
官网下载caffe
解压
(1)安装Anaconda包
下载最新的安装包, 用默认设置安装在用户目录下。
./Anaconda-2.2.0-Linux-x86_64.sh
方法:进入文件/etc.profile进行编辑加入
export PATH=/root/anaconda/bin:$PATH
source /etc/profile(不绝对,路径应该是Anaconda的实际安装路径,在安装过程中会提示选择安装路径,记住默认路径即可)
(2)安装python
开新的终端, 用whichpython
和which pip
确定使用的是anaconda提供的python环境
然后进入caffe的解压文件下的python文件夹
cd caffe-master/python
, 执行下列命令
for req
in $(catrequirements.txt);
do sudo pipinstall
$req;
done 声明环境变量
添加依赖库:
# sudo apt-get installlibatlas-base-dev
# sudo apt-get install libprotobuf-dev
# sudo apt-get install libleveldb-dev
# sudo apt-get install libsnappy-dev
# sudo apt-get install libopencv-dev
# sudo apt-get install libboost-all-dev
# sudo apt-get install libhdf5-serial-dev
# sudo apt-get install libgflags-dev
# sudo apt-get install libgoogle-glog-dev
# sudo apt-get install liblmdb-dev
# sudo apt-get install protobuf-compiler
进入caffe-master目录,复制一份Makefile.config.examples
cp Makefile.config.example Makefile.config
编辑Makefile.config
sudo vi Makefile.config
如果使用cudnn 将#USE_CUDNN:= 1 中的#去掉
make all 完成环境配置
测试caffe
下载mnist数据
# cd ~/caffe
# sudo sh data/mnist/get_mnist.sh
# sudo sh examples/mnist/create_mnist.sh
# sudo vi examples/mnist/lenet_solver.prototxt
将最后一行的solver_mode:GPU改为solver_mode:CPU
配置好后,就可以运行了
# sudo sh examples/mnist/train_lenet.sh