caffe cudnn 安装什么时候使用cudnn engine

Centos,caffe 及 caffe cudnn 的编译安装及测试-程序部署和编译-技术园地-北京容天汇海科技有限公司-GPU软件调试、测试 CUDA
程序部署和编译
Centos,caffe 及 caffe cudnn 的编译安装及测试本文详细描述了 Centos 6.5 系统下安装 caffe 的详细步骤,并且进行了 CPU 和 GPU 版的测试。&安装 caffe cudnn 后,再次编译,重新进行了 GPU 版的测试。&编译机器安装的 NV 显卡驱动为 340.23,CUDA 版本是 6.5(安装在/usr/local/cuda目录下),已经正确安装软件 freeglut。&&建议由 root 进行编译安装工作,在 /root 下新建 caffe 目录作为工作目录。&caffe 安装步骤:&&&& 1.& 安装 atlas、snappy、opencv 和 boost,使用 yum install 方式;&&&&&&&&& # yum install atlas-devel &&&&&&&& # yum install snappy-devel &&&&&&&& # yum install opencv-devel &&&&&&& # yum install boost-devel&&&& 2.& 安装 protobuf,本次使用的版本是 2.5.0,将 protobuf-2.5.0.tar.gz 拷贝到工作目录下。在 /opt 下新建 protobuf 目录。&&&&&&&&& # cd ~/caffe &&&&&&&& # tar Cxvf protobuf-2.5.0.tar.gz &&&&&&&& # cd protobuf-2.5.0 &&&&&&&& # ./configure --prefix=/opt/protobuf&&&&&&&&&&&&&&& 由于 protobuf 要安装在 /opt/protobuf 下,所以 ―prefix 指定了目录。&&&&&&&& # make &&&&&&&& # make install&&&&&&&&&&&&&&& 这时候在 /opt/protobuf 目录下生成 bin、include 和 lib 三个子目录。&&&& 3.&& 安装 leveldb,本次使用的版本是 1.7.0,将 leveldb.1.7.0.tar.gz 拷贝到工作目录下。&&&&&&&&& # cd ~/caffe &&&&&&&& # tar Cxvf leveldb-1.7.0.tar.gz &&&&&&&& # cd leveldb-1.7.0 &&&&&&&& # make&&&&&&&&&&&&&&& 生成 libleveldb.a。&&&&&&& # cp libleveldb* /usr/lib/.&&&&&&&&&&&&&&& 将相应库文件拷贝到系统库文件目录下。&&&&&&& # cp Cr include/leveldb /usr/local/include&&&&&&&&&&&&&&& 将相应头文件拷贝到系统头文件目录下。&&&& 4. 安装 hdf5,本次使用的版本是 1.8.8,将 hdf5-1.8.8.tar.bz2 拷贝到工作目录下。在 /opt 下新建 hdf5 目录。&&&&&&&&& # cd ~/caffe &&&&&&&& # tar Cxvf hdf5-1.8.8.tar.bz2 &&&&&&&& # cd hdf5-1.8.8 &&&&&&&& # ./configure --prefix=/opt/hdf5&&&&&&&&&&&&&&& 由于 hdf5 要安装在 /opt/hdf5 下,所以 ―prefix 指定了目录。&&&&&&&& # make &&&&&&&& # make install&&&&&&&&&&&&&&& 这时候在 /opt/hdf5 目录下生成 bin、include、lib 和 share 四个子目录。&&&& 5. 安装 glog,本次使用的版本是 0.3.3,将 glog-0.3.3.tar.gz 拷贝到工作目录下。&&&&&&&&& # cd ~/caffe &&&&&&&& # tar Cxvf glog-0.3.3.tar.gz &&&&&&&& # cd glog-0.3.3 &&&&&&&& # ./configure &&&&&&&& # make&&&&&&& # make install&&&& 注: make 和 make install 时,有时会出错,不过好像不影响最终的编译,因为用到的 libglog.so 和 libglog.a 在 解压后的 .lib 目录中存在,而且 glog 的主要功能是写代码时加 log,对最终的编译影响不大。&&&& 6. 安装 gflags,将 master.zip 拷贝到工作目录下。&&&&&&&&& # cd ~/caffe &&&&&&&&& # unzip master.zip &&&&&&&& # cd gflags-master &&&&&&&& # mkdir build&&&&&&&& # cd build &&&&&&&& # export CXXFLAGS=”-fPIC” &&&&&&&& # cmake .. &&&&&&&&&&&&&&&& 要求 cmake 版本 2.8.4 以上,如果系统 cmake 版本低,可以 # yum install cmake&&&&&&&&& # make VERBOSE=1&&&&&&&& # make &&&&&&&& # make install &7.&& 安装 lmdb。&lmdb 可以用 yum 方式安装,命令是:&# yum install lmdb-devel&但有时 yum 安装后,caffe 编译时找不到 lmdb.h,所以还是建议大家采用如下的安装方式:&先在 /usr/local 目录下新建目录 man,然后进入目录新建 man1 子目录,否则编译的时候会出错。&# cd /usr/local# mkdir man# cd man# mkdir man1&# cd ~/caffe# git clone https://gitorious.org/mdb/mdb.git# cd mdb/libraries/liblmdb# make# make install&&&&&& 8. 配置 OpenCV 环境。&&&&&&&&& # cd ~/caffe &&&&&&&& # git clone /jayrambhia/Install-OpenCV &&&&&&&& # cd Install-OpenCV/RedHat &&&&&&&& # sh ./opencv_latest.sh&&&&&&&&&&& 注:如果本步骤不能正确执行,也可以自己手动配置 opencv。&&&&&&&&&&& 配置 opencv-3.0.0,请参阅;&&&&&&&&&& 配置 opencv-2.4.9,请参阅;&&&&& 9. 修改 ~/.bashrc文件设置环境变量&# vi ~/.bashrc将 /opt/protobuf/bin 加入到 PATH 中,即增加如下内容:&export PATH=$PATH:/opt/protobuf/bin&保存退出。&退出终端窗口,重新启动一个终端窗口以使更改生效。&&&&& 10. 安装 caffe,将 caffe-master.zip 拷贝到工作目录下。&&&&&&&&& # cd ~/caffe &&&&&&&& # unzip caffe-master.zip &&&&&&&& # cd caffe-master &&&&&&&& # cp Makefile.config.example Makefile.config&&&&&&& # vi Makefile&&&&&&&&&&&& 修改内容为: &&&&&&&&&&&&&&&& COMMON_FLAGS 加上 CI/opt/protobuf/include CI/opt/hdf5/include &&&&&&&&&&&&&&&& LDFLAGS 加上 CL/opt/protobuf/lib CL/opt/hdf5/lib&&& &&&&&&&&&&&&&&&& LIBRARIES += boost_thread 改为 LIBRARIES += boost_thread-mt&&&&&&&& # vi Makefile.config&&&&&&&&&&&& 修改内容为:&&&&&&&&&&&&&&&& LIBRARY_DIRS 加上 /usr/lib64/atlas&&&&&&&& # make all&&&& 11. 配置运行环境。&&&&&&&& caffe 运行时需要调用 protobuf 和 hdf5 的库,我们在 /etc/ld.so.conf.d 目录下新建一个 caffe.conf 文件,将所需要用到的库的目录写入。&&&&&&&& # vi /etc/ld.so.conf.d/caffe.conf&&&&&&&& 增加内容&&&&&&&&&& /usr/local/cuda/lib64&&&&&&&&&& /opt/protobuf/lib&&&&&&&&&& /opt/hdf5/lib&&&&&&&&&& /usr/local/lib&&&&&&&&&&&&&&&&&&& &&&&&&& 保存退出&&&&&&&& # ldconfig&&&& 12. 运行。 &&&&&&&& # cd ~/caffe/caffe-master &&&&&&&& # sh data/mnist/get_mnist.sh &&&&&&&& # sh examples/mnist/create_mnist.sh &&&&&&&& # vi examples/mnist/lenet_solver.prototxt&&&&&&&&&&& 修改 ~/caffe/caffe-master/examples/mnist/lenet_solver.prototxt 文件设定运行 CPU 版本或者 GPU 版本。&&&&&&&&&&&& 修改最后一行, solver_mode: CPU 或者 solver_mode: GPU&&&&&&&& # time sh examples/mnist/train_lenet.sh&caffe cudnn 安装步骤:&&1.&& 将 cudnn-6.5-linux-R1.tgz 拷贝到工作目录下。&# cd ~/caffe# tar xvf cudaa-6.5-linux-R1.tgz# cd cudaa-6.5-linux-R1# cp *.h /usr/local/include/.将头文件拷贝到系统头文件目录下。# cp lib* /usr/local/lib/.&&& 将库文件拷贝到系统库文件目录下。# ldconfig&&&&&&&& 2.&& 与 caffe 安装的步骤9基本相同,将 Makefile.config 中 USE_CUDNN 行的注释去除,然后进行编译。&# cd ~/caffe# unzip caffe-master.zip# cd caffe-master# cp Makefile.config.example Makefile.config# vi Makefile&&修改内容为:&COMMON_FLAGS 加上 CI/opt/protobuf/include CI/opt/hdf5/include&LDFLAGS 加上 CL/opt/protobuff/lib CL/opt/hdf5/lib&LIBRARIES += boost_thread 改为 LIBRARIES += boost_thread-mt&# vi Makefile.config&修改内容为:USE_CUDNN 行的注释去除,即 USE_CUDNN := 1LIBRARY_DIRS 加上 /usr/lib64/atlas &# make all&&&&&&& 3.&& caffe cudnn 版的运行与 caffe 安装的步骤 10 相同。&caffe 及 caffe cudnn 测试:&&&&&&&&&&&&&&&&&&&& 测试机器的配置是:&&&&&&&&&& CPU:2颗 E5-2640&&&&&&&&&& 内存:64G&&&&&&&&&& GPU:1片K20&&&&&caffe环境配置 Ubuntu14.0.4 cuda7.5 cudnn7.0_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
caffe环境配置 Ubuntu14.0.4 cuda7.5 cudnn7.0
上传于||文档简介
&&在​U​b​u​n​t​u4​..上​配​置​c​a​f​f​e​,​使​用​最​新​的​C​U​D​A.和​c​u​d​n​n​ ​v​3
阅读已结束,如果下载本文需要使用3下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢caffe(1)
因为最近需要用到caffe平台,于是自己试着搭一搭,这一搭就是三天,其中遇到很多的挫折,重装系统也不是2,3次的事了。趁着心情还在把这个过程中遇到的一些事和问题记录下来,一来方便以后再搭或者帮别人搭;二来也给后来着一些启示吧。
一开始其实真的连caffe是什么都还搞不太清楚,只把它当做一个工具,就是知道要下载很多依赖库。在网上百度ubuntu14.04+caffe然后就有一堆的教程,这其实也是个坑,教程太多也不知道哪个是对的,有时看看这个,装了一个库后又看另外一个教程。所以必须要学会精选,最后只留下一到两篇,就按照它来一步步安装。我最后挑选下来的是欧阳宇大大写的一份教程,非常认真和详细,还把要下载的各种工具和库放在网盘里分享出来了,非常适合新手!这里给出链接:
一、caffe安装
经过几天的了解,终于搞清楚了caffe的各步安装情况。网上一般会把caffe和各种工具一起搭:cuda,cudnn,opencv,phthon,matlab等等(其实caffe官网也又介绍:)。其实caffe如果去掉这些工具也是可以运行的,没有这些工具的话只需要一步步的按照caffe官网的安装教程&来就好了(请务必先把官网的教程看一遍!)。
1、从github中下载官方的caffe
sudo git clone /BVLC/caffe.git
当然也可以从我最后给出的网盘链接里下载:百度网盘链接:&密码:
2、下载各种依赖库
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
3、BLAS(Basic Linear Algebra Subprograms 基本线性代数子程序)
常用的BLAS实现有:Intel MKL、atlas、OpenBLAS等。可以选择其中一种,其中atlas的安装最简单,其余的可以百度教程。
安装atlas:
sudo apt-get install libatlas-base-dev
4、切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:
cp Makefile.config.example Makefile.config
5、修改Makefile.config,编译即可使用caffe。
这里由于没有使用cuda、cudnn等nvidia的GPU加速库,所以只需打开CPU_ONLY即可
sudo gedit Makefile.config把# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
中CPU_ONLY := 1前的”#“去掉即可。
继续在Caffe-master文件夹目录下:
sudo make all -j4
sudo make test -j4
sudo make runtest -j4&-j4&是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。
必须根据自己CPU情况选择4或8或16,选择过大的数字编译时会出错!!!
如果都编译成功了,到这里其实算已经把caffe装好了。
如果你的电脑是有nvidia显卡,并且支持GPU的话,可以继续装一些加速库,会使你跑网络的时候快上很多倍。
注意!!!
在安装下面的各种库后需要再修改Makefile.config文件,把对应的工具前的”#“删去或加上。
注意,修改后需要重新make!!!
切换到Caffe-master的文件夹,
sudo make clean
sudo make all -j4你可以先全部安装了下面的各种工具后再统一修改Makefile.config文件,这样就可以一次编译就好。缺点是如果出问题就不知道出现再哪个工具的安装上。一个一个工具安装再编译缺点就是花费时间可能稍长,但有点是比较稳。
二、安装cuda6.5
官网安装教程:
有两种方法:deb版和run版。两种都可以,前者更方便。我在这里就不详述安装步骤了,前者在这里面和其他很多教程里都有介绍。后者请参考文章:,一定要一步一步安装教程,不要去参考太多其他的。要不很容易在这里花掉非常多的时间。
接下来主要介绍一些我在这里遇到的问题:
1、装完cuda之后重启进不去图形界面,就一直黑屏,只能ctrl+Alt+F1进入文字界面。
网上有很多方法,但各种尝试后发现直接换一个启动时的图形界面最简单直接粗暴!
ctrl+alt+F1进入文字界面
sudo stop lightdm
sudo apt-get install gdm
安装中途会让你选一个默认的启动图形界面,选择gdm,安装完重启即可sudo reboot
2、运行samples里面的deviceQuery例子时出现:
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 30
-& unknown error
Result = FAIL在这个论坛里找到解决方法:
新建文件&/etc/modprobe.d/bumblebee.conf,并在里面写入
alias nvidia-uvm nvidia-340-uvm其中nvidia-340-uvm可以修改成你的nvidia版本
虽然不知道是什么原理,但的确这样后再运行那个例程就成功了。
3、运行例程出现问题:
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 38
-& no CUDA-capable device is detected
Result = FAIL
这个应该是显卡驱动不匹配的问题
lspci | grep -i nvidia
然后上nvidia官网()查找匹配的驱动,并且要与你的cuda版本相匹配
上这个网站能查看哪些显卡是支持cuda的:
下载对应的显卡驱动重新安装
参考文章:
三、安装cudnn7.0
安装过程特别简单,就是下载好cudnn7.0的相应版本的库的后把里面的头文件和库文件复制到相应的地方即可
这里面也有详细介绍就不再累赘了。
主要遇到问题:
1、在后来编译caffe时容易出现以下错误:
error: ‘CUDNN_PROPAGATE_NAN’ was not declared in this scope或者其他与cudnn有关的错误,90%都是cudnn版本不匹配的问题,cudnn有v2,v3,v4,最新是v5版本,有些是版本太小,需要换大的,有些恰恰相反,多试几个就行。
先把原来的删掉,再复制进新的cudnn库文件和头文件。
有些是因为电脑问题,支持不了太低版本的cudnn,可能就用不了cudnn了。例如笔记本上显卡是GT540M,它的CUDA Capability是2.1,而官方的cudnn加速是不支持3.0以下的版本的,因此只能在Makefile.config中注释掉USE_CUDNN这行。
=================================================================
简单讲就是GPU的加速性能不够,CUDNN只支持CUDA Capability 3.0以上的GPU加速
==================================================================
四、安装OpenCV
github上有大神编译好的安装包,可以一步傻瓜式安装。
如果想一步步安装的可以参照这篇博客:&或(PS:其实对比以下两种方法会发现前者是把后者的安装步骤写成了一个脚本,非常方便,不仅可以一步安装,而且可以选择不同版本opencv的安装)
1、提供一个百度云,里面有安装包。百度云盘链接:&&密码:wysa
2、在Install-OpenCV-master文件夹中包含安装各个版本opencv脚本
3、切换到目录执行,安装依赖项:&
sudo sh Ubuntu/dependencies.sh
4、执行opencv3.0安装脚本&
sudo sh Ubuntu/3.0/opencv3_0_0.sh 等待安装完成即可
5、修改Makefile.config
# Uncomment if you're using OpenCV 3
#OPENCV_VERSION := 3中OPENCV_VERSION := 3前的”#“去掉即可
6、重新make
在make 之前要先把动态链接库更新
sudo ldconfig /usr/local/cuda/lib64(64位)否则在sudo make runmake时会出现以下错误:
error while loading shared libraries: libcudart.so.7.5: cannot open shared object file: No such file or directory
主要遇到的问题:
1、一步式安装过程中遇到各种问题,比如opencv版本下载太慢,出现各种bug等
以opencv3.0为例,可以打开opencv3_0_0.sh ,找到下载安装包的地方:
wget -O opencv-3.0.0.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.0.0/opencv-3.0.0.zip/download里面就有opencv3.0的下载地址,可以拿到windows里面用迅雷下载(PS:这个是个网站地址,还不是直接的下载链接,下网站里又下载链接的)
下载后,再安装opencv3_0_0.sh文件后的步骤手动进行安装。
2、cmake过程中卡在ippcv的下载中或者ICV的hash码不匹配
可以自行从这里下载,解压到opencv-master —& 3rdparty —& ippicv —& downloads —& linux-xxxxxxxxxxxxxxxx
再把选项-D WITH_IPP=OFF添加到上面的cmake命令中,重新cmake即可。即
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_IPP=OFF ..
好了,另外还有phython,matlab等等的接口的安装由于暂时还没有需要就不继续安装了,网上也有很多教程。
最后再总结一下:
1、最好先把大的文件都先下载好,安装的时候就方便了,列一个大文件清单:
caffe-master.rar
cuda-repo-ubuntu-local_7.5-18_amd64.deb或者cuda_6.5.14_linux_64.run
ippicv_linux_.tgz
cudnn的各个版本:cudnn-7.0-linux-x64-v4.0-prod.tgz/cudnn-7.0-linux-x64-v3.0-rc.tgz等
opencv 的各个版本:opencv-3.0.0.zip/opencv-3.1.0.zip等
这里我也提供我自己整理的资源:百度网盘链接:&密码: jsjd
2、必须要先了解好自己机子的各种性能,主要是显卡性能,执行:
cat /proc/driver/nvidia/version可以查看本机显卡性能,比如我的机子的结果是
NVRM version: NVIDIA UNIX x86_64 Kernel Module
8 22:33:28 PST 2015
GCC version:
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) 再到nvidia官网看显卡型号的性能,是否支持cuda、cudnn,支持到什么版本,这很重要!!!
3、再强调一次,网上很多教程,可以参考,但主要就选一个教程来安装,太多很容易乱,出错也不知道是谁的错!
如果我的文章对你的安装过程有一点点帮助,那就够了!
3、caffe官方安装教程:
4、run方法安装cuda6.5:
5、opencv3.0安装参考:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4187次
排名:千里之外
原创:10篇
(1)(4)(2)(4)(2)(2)caffe配置cuDNN
下述教程均基于Ubuntu14.04,且默认已安装好caffe所需要的所有依赖库以及cuda。如未安装,请先找教程安装好。
1. 首先从Github上下载caffe。
2. 解压缩,并创建Makefile.config文件。
unzip caffe-master.zip&
cd caffe-master
Makefile.config.example
Makefile.config
3.编辑Makefile.config,取消注释
USE_CUDNN := 1
/cudnn 注册账号(可能需要一晚上的验证)下载最新(v2以上)版的cuDNN。
安装cuDNN(以R1版本为例,注意换为自己下载的包名)
-xzvf cudnn-6.5-linux-R1.tgz
cd cudnn-6.5-linux-R1
sudo cp lib* /usr/local/cuda/lib64/
sudo cp cudnn.h /usr/local/cuda/include/
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6.5
sudo chmod u=rwx,g=rx,o=rx libcudnn.so.6.5.18
sudo ln -s libcudnn.so.6.5.18 libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5 libcudnn.so6.build
make runtest
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
Ubuntu14.10+cuda7.0+caffe配置 一:linux安装 Linux安装不说了,我这里安装的是ubuntu14.10
二:nVidia驱动和CUDA Toolkit的安装和调试(*.run方法) 1: Verify You Have a CUDA-Capable GPU 执行下面的操作,然后验证硬件支持GPU CUDA,只要型号存在于h ...
Caffe是一个高效的深度学习框架.它既可以在CPU上执行也可以在GPU上执行.
下面介绍在Ubuntu上不带CUDA的Caffe配置编译过程:1.
安装BLAS:$ sudo apt-get install libatlas-base-dev2.
安装依赖项:$ sudo apt-get install ...
最近跟师兄一起做一个东西,需要用到CNN,于是找到了Caffe,实验跑起来了,于是也应实验室的人要求写一份配置文档,还想叫我写Caffe的文档..可是不懂写啊,而且Caffe也不是很复杂,自己看就好了.
Caffe是实现卷积神经网络算法的一个框架,主打速度,可以在CPU或者GPU上运行,而且可以随意切换,具体可以看官网.配置的教程也是按照官网给出 ...
主要参考blog: /platero/p/3993877.html# http://blog.csdn.net/ccemmawatson/article/details/ 本blog主要包含两个部分,一部分是NVIDIA显卡下的cuda 6.5的安装,第二部分是caffe的安装,环境是Ubuntu
首先要使用cudnn v2, ALL PLATFORMS
Extract the cuDNN archive to a directory of your choice, referred to below as &installpath&.
Then follow the platform-specific instructio ...
Cuda6.5安装 备注:已经装好cuda的请略过,往下看. 记得没有VS2012的一定要先装VS.否则:安装后打开VS2012新建项目不显示NIVIDA解决方案.记住记住记住!重要的事情说三遍! 第一步:安装文件的下载,直接去官网就下载就可以.现在有cuda7.0了. 直接双击exe文件,弹出后,首先会监测一下你的运行环境,如果找不到Nividia对应的显 ...
将makefile.config文件中matlab路径改成自己安装的路径后,用命令 make matcaffe 老是不成功,一怒之下 sudo make cleam,清理解决方案后结果成功了.详细如下: 我gcc版本是4.8.7,matlab版本为2013b,刚开始用matcaffe时报错gcc版本过高,必须用4.4.×版本的,无奈,上网找解决方案: $su ...
1.配置CUDA:官网教程 2.安装boost: (1)官网下载boost,boost_1_58_0.tar.gz (2)解压:tar -xzvf boost_1_58_0.tar.gz (3)进入解压目录执行:./booststrap.sh (4)执行./b2 (5)执行./b2 install (6)配置参数:echo &/usr/local/ ...Caffe + CUDNN V5
在今年 GTC 上,NVIDIA 推出的 NVIDIA Deep Learning&
&中,cuDNN 赫然在列。与之比肩的还有 DIGITS, cuBLAS, cuSPARSE, NCCL 等。
从 2014 年推出 第一个版本,到如今 cuDNN 已经连续发布 5 个版本。
目前 cuDNN v5 的最新特性有:
(1) 支持递归神经网络(&
(2) cudnnConvolutionForward()&&和 cudnnConvolutionBackwardData() 现已增加了 3维 FFT 分块算法;
(3) cudnnConvolutionForward()&&和 cudnnConvolutionBackwardData() 现已支持新算法:
CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD 和 CUDNN_CONVOLUTION_BWD_ALGO_WINOGRAD 。&
该算法降低了 3x3 卷积计算复杂度。
(4) 增加了两种新层:
Bilinear Spatial Transformer
目前官方的 Caffe 只支持 CUDNN V4。 为了用上 V5,需要手动改代码。
先看下 V5 的这个函数:
/* Function to perform backward activation
cudnnStatus_t CUDNNWINAPI cudnnActivationBackward(
cudnnHandle_t
cudnnActivationDescriptor_t
activationDesc,
const void
const cudnnTensorDescriptor_t
const void
const cudnnTensorDescriptor_t
const void
const cudnnTensorDescriptor_t
const void
const void
const cudnnTensorDescriptor_t
而 Caffe 中调用代码为:
CUDNN_CHECK(cudnnActivationBackward(this-&handle_,
CUDNN_ACTIVATION_RELU,
cudnn::dataType&Dtype&::one,
this-&top_desc_, top_data, this-&top_desc_, top_diff,
this-&bottom_desc_, bottom_data,
cudnn::dataType&Dtype&::zero,
this-&bottom_desc_, bottom_diff));
差异主要在第二个参数。
* activation mode
typedef enum
CUDNN_ACTIVATION_SIGMOID
CUDNN_ACTIVATION_RELU
CUDNN_ACTIVATION_TANH
CUDNN_ACTIVATION_CLIPPED_RELU = 3
} cudnnActivationMode_t;
&V4 直接使用了 cudnnActivationMode_t,在 V5 中则换为新的 cudnnActivationDescriptor_t :
cudnnStatus_t CUDNNWINAPI cudnnCreateActivationDescriptor(
cudnnActivationDescriptor_t
*activationDesc);
cudnnStatus_t CUDNNWINAPI cudnnSetActivationDescriptor(
cudnnActivationDescriptor_t
activationDesc,
cudnnActivationMode_t
cudnnNanPropagation_t
reluNanOpt,
reluCeiling );
为了适配,需要将 Caffe 中这部分代码替换为 V5 的形式。涉及的文件:
include/caffe/layers/cudnn_relu_layer.hpp, src/caffe/layers/cudnn_relu_layer.cpp,&src/caffe/layers/cudnn_relu_layer.cu
include/caffe/layers/cudnn_sigmoid_layer.hpp, src/caffe/layers/cudnn_sigmoid_layer.cpp,&src/caffe/layers/cudnn_sigmoid_layer.cu
include/caffe/layers/cudnn_tanh_layer.hpp, src/caffe/layers/cudnn_tanh_layer.cpp,&src/caffe/layers/cudnn_tanh_layer.cu
上对 Caffe + CUDNN V5 编译成功后进行 ldd 结果如下:
caffe]# ldd ./build/tools/caffe.bin
| grep cudnn
libcudnn.so.5 =& /disk1/deeplearning/local_install/lib/libcudnn.so.5 (0x9000)
运行 计时,得到输出:
caffe]# ./build/tools/caffe.bin time -model models/bvlc_reference_caffenet/deploy.prototxt
I:29.92 caffe.cpp:308] Use GPU with device ID 0
I:30.92 net.cpp:49] Initializing net from parameters:
name: "CaffeNet"
phase: TRAIN
name: "data"
type: "Input"
top: "data"
input_param {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
convolution_param {
num_output: 96
kernel_size: 11
name: "relu1"
type: "ReLU"
bottom: "conv1"
top: "conv1"
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
kernel_size: 3
name: "norm1"
type: "LRN"
bottom: "pool1"
top: "norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
name: "conv2"
type: "Convolution"
bottom: "norm1"
top: "conv2"
convolution_param {
num_output: 256
kernel_size: 5
name: "relu2"
type: "ReLU"
bottom: "conv2"
top: "conv2"
name: "pool2"
type: "Pooling"
bottom: "conv2"
top: "pool2"
pooling_param {
kernel_size: 3
name: "norm2"
type: "LRN"
bottom: "pool2"
top: "norm2"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
name: "conv3"
type: "Convolution"
bottom: "norm2"
top: "conv3"
convolution_param {
num_output: 384
kernel_size: 3
name: "relu3"
type: "ReLU"
bottom: "conv3"
top: "conv3"
name: "conv4"
type: "Convolution"
bottom: "conv3"
top: "conv4"
convolution_param {
num_output: 384
kernel_size: 3
name: "relu4"
type: "ReLU"
bottom: "conv4"
top: "conv4"
name: "conv5"
type: "Convolution"
bottom: "conv4"
top: "conv5"
convolution_param {
num_output: 256
kernel_size: 3
name: "relu5"
type: "ReLU"
bottom: "conv5"
top: "conv5"
name: "pool5"
type: "Pooling"
bottom: "conv5"
top: "pool5"
pooling_param {
kernel_size: 3
name: "fc6"
type: "InnerProduct"
bottom: "pool5"
top: "fc6"
inner_product_param {
num_output: 4096
name: "relu6"
type: "ReLU"
bottom: "fc6"
top: "fc6"
name: "drop6"
type: "Dropout"
bottom: "fc6"
top: "fc6"
dropout_param {
dropout_ratio: 0.5
name: "fc7"
type: "InnerProduct"
bottom: "fc6"
top: "fc7"
inner_product_param {
num_output: 4096
name: "relu7"
type: "ReLU"
bottom: "fc7"
top: "fc7"
name: "drop7"
type: "Dropout"
bottom: "fc7"
top: "fc7"
dropout_param {
dropout_ratio: 0.5
name: "fc8"
type: "InnerProduct"
bottom: "fc7"
top: "fc8"
inner_product_param {
num_output: 1000
name: "prob"
type: "Softmax"
bottom: "fc8"
top: "prob"
I:30.92 layer_factory.hpp:77] Creating layer data
I:30.92 net.cpp:91] Creating Layer data
I:30.92 net.cpp:399] data -& data
I:30.92 net.cpp:141] Setting up data
I:30.92 net.cpp:148] Top shape: 10 3 227 227 (1545870)
I:30.92 net.cpp:156] Memory required for data: 6183480
I:30.92 layer_factory.hpp:77] Creating layer conv1
I:30.92 net.cpp:91] Creating Layer conv1
I:30.92 net.cpp:425] conv1 &- data
I:30.92 net.cpp:399] conv1 -& conv1
I:30.92 net.cpp:141] Setting up conv1
I:30.92 net.cpp:148] Top shape: 10 96 55 55 (2904000)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu1
I:30.92 net.cpp:91] Creating Layer relu1
I:30.92 net.cpp:425] relu1 &- conv1
I:30.92 net.cpp:386] relu1 -& conv1 (in-place)
I:30.92 net.cpp:141] Setting up relu1
I:30.92 net.cpp:148] Top shape: 10 96 55 55 (2904000)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer pool1
I:30.92 net.cpp:91] Creating Layer pool1
I:30.92 net.cpp:425] pool1 &- conv1
I:30.92 net.cpp:399] pool1 -& pool1
I:30.92 net.cpp:141] Setting up pool1
I:30.92 net.cpp:148] Top shape: 10 96 27 27 (699840)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer norm1
I:30.92 net.cpp:91] Creating Layer norm1
I:30.92 net.cpp:425] norm1 &- pool1
I:30.92 net.cpp:399] norm1 -& norm1
I:30.92 net.cpp:141] Setting up norm1
I:30.92 net.cpp:148] Top shape: 10 96 27 27 (699840)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer conv2
I:30.92 net.cpp:91] Creating Layer conv2
I:30.92 net.cpp:425] conv2 &- norm1
I:30.92 net.cpp:399] conv2 -& conv2
I:30.92 net.cpp:141] Setting up conv2
I:30.92 net.cpp:148] Top shape: 10 256 27 27 (1866240)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu2
I:30.92 net.cpp:91] Creating Layer relu2
I:30.92 net.cpp:425] relu2 &- conv2
I:30.92 net.cpp:386] relu2 -& conv2 (in-place)
I:30.92 net.cpp:141] Setting up relu2
I:30.92 net.cpp:148] Top shape: 10 256 27 27 (1866240)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer pool2
I:30.92 net.cpp:91] Creating Layer pool2
I:30.92 net.cpp:425] pool2 &- conv2
I:30.92 net.cpp:399] pool2 -& pool2
I:30.92 net.cpp:141] Setting up pool2
I:30.92 net.cpp:148] Top shape: 10 256 13 13 (432640)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer norm2
I:30.92 net.cpp:91] Creating Layer norm2
I:30.92 net.cpp:425] norm2 &- pool2
I:30.92 net.cpp:399] norm2 -& norm2
I:30.92 net.cpp:141] Setting up norm2
I:30.92 net.cpp:148] Top shape: 10 256 13 13 (432640)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer conv3
I:30.92 net.cpp:91] Creating Layer conv3
I:30.92 net.cpp:425] conv3 &- norm2
I:30.92 net.cpp:399] conv3 -& conv3
I:30.92 net.cpp:141] Setting up conv3
I:30.92 net.cpp:148] Top shape: 10 384 13 13 (648960)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu3
I:30.92 net.cpp:91] Creating Layer relu3
I:30.92 net.cpp:425] relu3 &- conv3
I:30.92 net.cpp:386] relu3 -& conv3 (in-place)
I:30.92 net.cpp:141] Setting up relu3
I:30.92 net.cpp:148] Top shape: 10 384 13 13 (648960)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer conv4
I:30.92 net.cpp:91] Creating Layer conv4
I:30.92 net.cpp:425] conv4 &- conv3
I:30.92 net.cpp:399] conv4 -& conv4
I:30.92 net.cpp:141] Setting up conv4
I:30.92 net.cpp:148] Top shape: 10 384 13 13 (648960)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu4
I:30.92 net.cpp:91] Creating Layer relu4
I:30.92 net.cpp:425] relu4 &- conv4
I:30.92 net.cpp:386] relu4 -& conv4 (in-place)
I:30.92 net.cpp:141] Setting up relu4
I:30.92 net.cpp:148] Top shape: 10 384 13 13 (648960)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer conv5
I:30.92 net.cpp:91] Creating Layer conv5
I:30.92 net.cpp:425] conv5 &- conv4
I:30.92 net.cpp:399] conv5 -& conv5
I:30.92 net.cpp:141] Setting up conv5
I:30.92 net.cpp:148] Top shape: 10 256 13 13 (432640)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu5
I:30.92 net.cpp:91] Creating Layer relu5
I:30.92 net.cpp:425] relu5 &- conv5
I:30.92 net.cpp:386] relu5 -& conv5 (in-place)
I:30.92 net.cpp:141] Setting up relu5
I:30.92 net.cpp:148] Top shape: 10 256 13 13 (432640)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer pool5
I:30.92 net.cpp:91] Creating Layer pool5
I:30.92 net.cpp:425] pool5 &- conv5
I:30.92 net.cpp:399] pool5 -& pool5
I:30.92 net.cpp:141] Setting up pool5
I:30.92 net.cpp:148] Top shape: 10 256 6 6 (92160)
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer fc6
I:30.92 net.cpp:91] Creating Layer fc6
I:30.92 net.cpp:425] fc6 &- pool5
I:30.92 net.cpp:399] fc6 -& fc6
I:30.92 net.cpp:141] Setting up fc6
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu6
I:30.92 net.cpp:91] Creating Layer relu6
I:30.92 net.cpp:425] relu6 &- fc6
I:30.92 net.cpp:386] relu6 -& fc6 (in-place)
I:30.92 net.cpp:141] Setting up relu6
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer drop6
I:30.92 net.cpp:91] Creating Layer drop6
I:30.92 net.cpp:425] drop6 &- fc6
I:30.92 net.cpp:386] drop6 -& fc6 (in-place)
I:30.92 net.cpp:141] Setting up drop6
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer fc7
I:30.92 net.cpp:91] Creating Layer fc7
I:30.92 net.cpp:425] fc7 &- fc6
I:30.92 net.cpp:399] fc7 -& fc7
I:30.92 net.cpp:141] Setting up fc7
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer relu7
I:30.92 net.cpp:91] Creating Layer relu7
I:30.92 net.cpp:425] relu7 &- fc7
I:30.92 net.cpp:386] relu7 -& fc7 (in-place)
I:30.92 net.cpp:141] Setting up relu7
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer drop7
I:30.92 net.cpp:91] Creating Layer drop7
I:30.92 net.cpp:425] drop7 &- fc7
I:30.92 net.cpp:386] drop7 -& fc7 (in-place)
I:30.92 net.cpp:141] Setting up drop7
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer fc8
I:30.92 net.cpp:91] Creating Layer fc8
I:30.92 net.cpp:425] fc8 &- fc7
I:30.92 net.cpp:399] fc8 -& fc8
I:30.92 net.cpp:141] Setting up fc8
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 layer_factory.hpp:77] Creating layer prob
I:30.92 net.cpp:91] Creating Layer prob
I:30.92 net.cpp:425] prob &- fc8
I:30.92 net.cpp:399] prob -& prob
I:30.92 net.cpp:141] Setting up prob
I:30.92 net.cpp:148] Top shape: 10 )
I:30.92 net.cpp:156] Memory required for data:
I:30.92 net.cpp:219] prob does not need backward computation.
I:30.92 net.cpp:219] fc8 does not need backward computation.
I:30.92 net.cpp:219] drop7 does not need backward computation.
I:30.92 net.cpp:219] relu7 does not need backward computation.
I:30.92 net.cpp:219] fc7 does not need backward computation.
I:30.92 net.cpp:219] drop6 does not need backward computation.
I:30.92 net.cpp:219] relu6 does not need backward computation.
I:30.92 net.cpp:219] fc6 does not need backward computation.
I:30.92 net.cpp:219] pool5 does not need backward computation.
I:30.92 net.cpp:219] relu5 does not need backward computation.
I:30.92 net.cpp:219] conv5 does not need backward computation.
I:30.92 net.cpp:219] relu4 does not need backward computation.
I:30.92 net.cpp:219] conv4 does not need backward computation.
I:30.92 net.cpp:219] relu3 does not need backward computation.
I:30.92 net.cpp:219] conv3 does not need backward computation.
I:30.92 net.cpp:219] norm2 does not need backward computation.
I:30.92 net.cpp:219] pool2 does not need backward computation.
I:30.92 net.cpp:219] relu2 does not need backward computation.
I:30.92 net.cpp:219] conv2 does not need backward computation.
I:30.92 net.cpp:219] norm1 does not need backward computation.
I:30.92 net.cpp:219] pool1 does not need backward computation.
I:30.92 net.cpp:219] relu1 does not need backward computation.
I:30.92 net.cpp:219] conv1 does not need backward computation.
I:30.92 net.cpp:219] data does not need backward computation.
I:30.92 net.cpp:261] This network produces output prob
I:30.92 net.cpp:274] Network initialization done.
I:30.92 caffe.cpp:320] Performing Forward
I:30.92 caffe.cpp:325] Initial loss: 0
I:30.92 caffe.cpp:326] Performing Backward
I:30.92 caffe.cpp:334] *** Benchmark begins ***
I:30.92 caffe.cpp:335] Testing for 50 iterations.
I:30.92 caffe.cpp:363] Iteration: 1 forward-backward time: 17.9167 ms.
I:30.92 caffe.cpp:363] Iteration: 2 forward-backward time: 14.5289 ms.
I:30.92 caffe.cpp:363] Iteration: 3 forward-backward time: 14.4394 ms.
I:30.92 caffe.cpp:363] Iteration: 4 forward-backward time: 14.4486 ms.
I:30.92 caffe.cpp:363] Iteration: 5 forward-backward time: 14.4736 ms.
I:30.92 caffe.cpp:363] Iteration: 6 forward-backward time: 14.5299 ms.
I:30.92 caffe.cpp:363] Iteration: 7 forward-backward time: 14.5472 ms.
I:30.92 caffe.cpp:363] Iteration: 8 forward-backward time: 14.5004 ms.
I:30.92 caffe.cpp:363] Iteration: 9 forward-backward time: 14.4412 ms.
I:30.92 caffe.cpp:363] Iteration: 10 forward-backward time: 14.4823 ms.
I:30.92 caffe.cpp:363] Iteration: 11 forward-backward time: 14.463 ms.
I:30.92 caffe.cpp:363] Iteration: 12 forward-backward time: 14.4556 ms.
I:30.92 caffe.cpp:363] Iteration: 13 forward-backward time: 14.2781 ms.
I:30.92 caffe.cpp:363] Iteration: 14 forward-backward time: 13.3916 ms.
I:30.92 caffe.cpp:363] Iteration: 15 forward-backward time: 13.4184 ms.
I:30.92 caffe.cpp:363] Iteration: 16 forward-backward time: 13.3694 ms.
I:30.92 caffe.cpp:363] Iteration: 17 forward-backward time: 13.4208 ms.
I:30.92 caffe.cpp:363] Iteration: 18 forward-backward time: 13.4377 ms.
I:30.92 caffe.cpp:363] Iteration: 19 forward-backward time: 13.3858 ms.
I:30.92 caffe.cpp:363] Iteration: 20 forward-backward time: 13.4489 ms.
I:31.92 caffe.cpp:363] Iteration: 21 forward-backward time: 13.4417 ms.
I:31.92 caffe.cpp:363] Iteration: 22 forward-backward time: 13.4623 ms.
I:31.92 caffe.cpp:363] Iteration: 23 forward-backward time: 13.4093 ms.
I:31.92 caffe.cpp:363] Iteration: 24 forward-backward time: 13.4735 ms.
I:31.92 caffe.cpp:363] Iteration: 25 forward-backward time: 13.6753 ms.
I:31.92 caffe.cpp:363] Iteration: 26 forward-backward time: 13.0419 ms.
I:31.92 caffe.cpp:363] Iteration: 27 forward-backward time: 13.0997 ms.
I:31.92 caffe.cpp:363] Iteration: 28 forward-backward time: 13.0143 ms.
I:31.92 caffe.cpp:363] Iteration: 29 forward-backward time: 13.0691 ms.
I:31.92 caffe.cpp:363] Iteration: 30 forward-backward time: 14.9067 ms.
I:31.92 caffe.cpp:363] Iteration: 31 forward-backward time: 13.1344 ms.
I:31.92 caffe.cpp:363] Iteration: 32 forward-backward time: 13.0509 ms.
I:31.92 caffe.cpp:363] Iteration: 33 forward-backward time: 13.0845 ms.
I:31.92 caffe.cpp:363] Iteration: 34 forward-backward time: 13.0256 ms.
I:31.92 caffe.cpp:363] Iteration: 35 forward-backward time: 13.0594 ms.
I:31.92 caffe.cpp:363] Iteration: 36 forward-backward time: 13.1316 ms.
I:31.92 caffe.cpp:363] Iteration: 37 forward-backward time: 13.0324 ms.
I:31.92 caffe.cpp:363] Iteration: 38 forward-backward time: 13.0479 ms.
I:31.92 caffe.cpp:363] Iteration: 39 forward-backward time: 13.1312 ms.
I:31.92 caffe.cpp:363] Iteration: 40 forward-backward time: 13.1264 ms.
I:31.92 caffe.cpp:363] Iteration: 41 forward-backward time: 13.0423 ms.
I:31.92 caffe.cpp:363] Iteration: 42 forward-backward time: 13.0402 ms.
I:31.92 caffe.cpp:363] Iteration: 43 forward-backward time: 13.0568 ms.
I:31.92 caffe.cpp:363] Iteration: 44 forward-backward time: 13.048 ms.
I:31.92 caffe.cpp:363] Iteration: 45 forward-backward time: 13.0655 ms.
I:31.92 caffe.cpp:363] Iteration: 46 forward-backward time: 13.0522 ms.
I:31.92 caffe.cpp:363] Iteration: 47 forward-backward time: 13.0704 ms.
I:31.92 caffe.cpp:363] Iteration: 48 forward-backward time: 13.0992 ms.
I:31.92 caffe.cpp:363] Iteration: 49 forward-backward time: 13.0612 ms.
I:31.92 caffe.cpp:363] Iteration: 50 forward-backward time: 13.0353 ms.
I:31.92 caffe.cpp:366] Average time per layer:
I:31.92 caffe.cpp:369]
data forward: 0. ms.
I:31.92 caffe.cpp:372]
data backward: 0.0016416 ms.
I:31.92 caffe.cpp:369]
conv1 forward: 0.70582 ms.
I:31.92 caffe.cpp:372]
conv1 backward: 0.706209 ms.
I:31.92 caffe.cpp:369]
relu1 forward: 0.114414 ms.
I:31.92 caffe.cpp:372]
relu1 backward: 0.0016096 ms.
I:31.92 caffe.cpp:369]
pool1 forward: 0.12752 ms.
I:31.92 caffe.cpp:372]
pool1 backward: 0. ms.
I:31.92 caffe.cpp:369]
norm1 forward: 0.0773696 ms.
I:31.92 caffe.cpp:372]
norm1 backward: 0.206209 ms.
I:31.92 caffe.cpp:369]
conv2 forward: 1.12211 ms.
I:31.92 caffe.cpp:372]
conv2 backward: 1.12579 ms.
I:31.92 caffe.cpp:369]
relu2 forward: 0.0755533 ms.
I:31.92 caffe.cpp:372]
relu2 backward: 0. ms.
I:31.92 caffe.cpp:369]
pool2 forward: 0.0891341 ms.
I:31.92 caffe.cpp:372]
pool2 backward: 0. ms.
I:31.92 caffe.cpp:369]
norm2 forward: 0.161537 ms.
I:31.92 caffe.cpp:372]
norm2 backward: 0.488591 ms.
I:31.92 caffe.cpp:369]
conv3 forward: 0.571384 ms.
I:31.92 caffe.cpp:372]
conv3 backward: 0.856935 ms.
I:31.92 caffe.cpp:369]
relu3 forward: 0.0197875 ms.
I:31.92 caffe.cpp:372]
relu3 backward: 0.0016064 ms.
I:31.92 caffe.cpp:369]
conv4 forward: 0.436511 ms.
I:31.92 caffe.cpp:372]
conv4 backward: 0.696554 ms.
I:31.92 caffe.cpp:369]
relu4 forward: 0.0239539 ms.
I:31.92 caffe.cpp:372]
relu4 backward: 0.0015872 ms.
I:31.92 caffe.cpp:369]
conv5 forward: 0.30266 ms.
I:31.92 caffe.cpp:372]
conv5 backward: 0.519668 ms.
I:31.92 caffe.cpp:369]
relu5 forward: 0.0189939 ms.
I:31.92 caffe.cpp:372]
relu5 backward: 0. ms.
I:31.92 caffe.cpp:369]
pool5 forward: 0.0326426 ms.
I:31.92 caffe.cpp:372]
pool5 backward: 0. ms.
I:31.92 caffe.cpp:369]
fc6 forward: 1.60053 ms.
I:31.92 caffe.cpp:372]
fc6 backward: 1.36114 ms.
I:31.92 caffe.cpp:369]
relu6 forward: 0.0175546 ms.
I:31.92 caffe.cpp:372]
relu6 backward: 0. ms.
I:31.92 caffe.cpp:369]
drop6 forward: 0.0205677 ms.
I:31.92 caffe.cpp:372]
drop6 backward: 0. ms.
I:31.92 caffe.cpp:369]
fc7 forward: 0.724168 ms.
I:31.92 caffe.cpp:372]
fc7 backward: 0.605802 ms.
I:31.92 caffe.cpp:369]
relu7 forward: 0.0171334 ms.
I:31.92 caffe.cpp:372]
relu7 backward: 0.0016 ms.
I:31.92 caffe.cpp:369]
drop7 forward: 0.018528 ms.
I:31.92 caffe.cpp:372]
drop7 backward: 0.002224 ms.
I:31.92 caffe.cpp:369]
fc8 forward: 0.219565 ms.
I:31.92 caffe.cpp:372]
fc8 backward: 0.185244 ms.
I:31.92 caffe.cpp:369]
prob forward: 0.0198214 ms.
I:31.92 caffe.cpp:372]
prob backward: 0. ms.
I:31.92 caffe.cpp:377] Average Forward pass: 6.67847 ms.
I:31.92 caffe.cpp:379] Average Backward pass: 6.93449 ms.
I:31.92 caffe.cpp:381] Average Forward-Backward: 13.6816 ms.
I:31.92 caffe.cpp:383] Total Time: 684.081 ms.
I:31.92 caffe.cpp:384] *** Benchmark ends ***
本文转载自 卜居 , 原文链接: , 转载请保留本声明!
每一个你不满意的现在,都有一个你没有努力的曾经。
Copyright (C) 2015&&
&&Powered by&}

我要回帖

更多关于 caffe cudnn v5.1 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信