CUDNN v3例程演示

首先到NVIDIA官网下载CUDNN v3安装包和例程,如下图中红框所示:

安装CUDNN v3之前需要先安装CUDA 7.0或更高版本,不再赘述。

将下载后的两个tgz包拷贝到已安装CUDA 7.0的目标机器某个路径(我这里为/home/yongke.zyk/local_install),解压,得到三个子目录include/,lib64/和samples/。其中include/下为cudnn.h头文件,需要在编译时包含;lib64/下为cudnn静态库libcudnn_static.a和动态库libcudnn.so.7.0.58及其软链接libcudnn.so  libcudnn.so.7.0,在程序链接时加入。samples/下面为使用cudnn的简单例程mnistCUDNN,实现了简单的数字识别。

修改mnistCUDNN/Makefile的第41-46行为:

else
CUDA_PATH = /usr/local/cuda
CUDA_LIB_PATH = $(CUDA_PATH)/$(CUDA_LIBSUBDIR)
CUDNN_LIB_PATH = /home/yongke.zyk/local_install/lib64
CUDNN_INCLUDE_PATH = /home/yongke.zyk/local_install/include
endif

执行make,编译链接得到可执行的mnistCUDNN。接下来运行,输出如下:

$ ./mnistCUDNN
cudnnGetVersion() : 3002 , CUDNN_VERSION from cudnn.h : 3002 (3.0.02)
Host compiler version : GCC 4.4.6
There are 2 CUDA capable devices on your machine :
device 0 : sms 24  Capabilities 5.2, SmClock 1076.0 Mhz, MemSize (Mb) 12287, MemClock 3505.0 Mhz, Ecc=0, boardGroupID=0
device 1 : sms 24  Capabilities 5.2, SmClock 1076.0 Mhz, MemSize (Mb) 12287, MemClock 3505.0 Mhz, Ecc=0, boardGroupID=1
Using device 0

Testing single precision
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.045056 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.055328 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.060416 time requiring 57600 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.142336 time requiring 207360 memory
^^^^ CUDNN_STATUS_NOT_SUPPORTED for Algo 3: -1.000000 time requiring 0 memory
Resulting weights from Softmax:
0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999819 0.0000154 0.0000000 0.0000012 0.0000006

Result of classification: 1 3 5

Test passed!

Testing half precision (math in single precision)
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.036896 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.039936 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.078880 time requiring 28800 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.131104 time requiring 207360 memory
^^^^ CUDNN_STATUS_NOT_SUPPORTED for Algo 3: -1.000000 time requiring 0 memory
Resulting weights from Softmax:
0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000709 0.0000000 0.0000000 0.0000000 0.0000000
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006

Result of classification: 1 3 5

Test passed!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 02:38:46

CUDNN v3例程演示的相关文章

NetworkComms V3 使用TCP通信传递IList<T>类型的数据

客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取) 我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持) [ 使用protobuf.net序列化器] 第一步创建相关的工程文件: MessageContract中的 User类为契约类,使用protobuf.net进行序列化 写法如下: using System; using System.Collections.Generic; using System.Text; usin

emWin(ucGui)数值显示例程 -【worldsing笔记】

本例程下载:2.emWin5.26(ucGui)VS2008数字显示.zip ? 在emWin显示文本字符还是容易,我们也可以使用字符串和标准 C 库的函数来显示数值.然而,有时候这会是件困难的事.通常,较为容易(也更为有效)的是调用一个例程显示所需结 构的数值. emWin 支持各种十进制.十六进制和二进制输出.本章将对这些例程进行逐一描述.所有函数不需要使用浮点库,并对速度和大小进行了优化.当然"Sprintf"可以用于任何系统.使 用本章介绍的例程,有时可以简化操作,节省 ROM

windows 10 下 Caffe + Matlab 部署

在 windows 10 下部署 Caffe 花了很多时间才调通,记录下 key 节点以便后续查询: 一.安装软件: 1.安装 Microsoft Virtual Studio 2013 / Matlab 2015a / CUDA 7.5: 需要注意的是, VS2013 需要先安装,以便于 Matlab 识别 VS路径,CUDA 绑定内容:总之需要 VS2013 第一个安装: 其中,VS2013 SP5 是必须的版本,据 happynear [CSDN,GitHub]描述,Caffe 在 VS2

java ee环境搭建

下载安装Java EE SDK 版本:Java Platform,Enterprise Edition 7 SDK (with JDK 7u45) 下载页面: http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-7-sdk-with-jdk-u45-2066865.html 文件名:java_ee_sdk-7-jdk7-windows.exe 安装路径:D:\glassfish4 环境变量设置 JAVA_HOME=D:\

IOS开发网络篇-JSON文件的解析

一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用来给HTML增加动态功能. javascript和java没有半毛钱的关系! 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外). 2.JSON的语法规则 <1> 数据以键值的方式保存; 键(key)必须用双引号("key"),与键值之间以':'分隔;

VC++多线程编程-线程间的通信和线程同步

引用:http://blog.csdn.net/zjc0888/article/details/7372258 线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信.这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明. 使用全局变量进行通信 由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量.对于标准类型

Nvidia GPU 上的 CNN 计算速度变迁

笔者从 2012 年初开始接触 GPU 编程,2014 年上半年开始接触 Caffe,可以毫不谦虚地说是"一天天看着 Nvidia GPU 和 Caffe 长大的". Nvidia GPU 架构经历了 Fermi.Kepler.Maxwell.Pascal(都是著名物理学家:特斯拉.费米.开普勒.麦克斯韦.帕斯卡.还未发布的 Volta 伏打--),硬件版本号从 1.x 到现在的 6.x,CUDA Toolkit 从 3.x 到现在 8.x,cuDNN 也从 v1 升级到 v5.1.

windows7+visual studio 2013+CUDA7.5 编译caffe

经过朋友指导,终于成功在windows7上成功编译了caffe,这里将编译过程记录 安装文件准备 安装visual studio 2013 安装cuda75 编译caffe 1 解压缩下载的caffe-windows文件 2 进入到windows文件夹 3 复制配置文件并重命名 4 修改配置文件修改工程的属性文件 5 打开名称为Caffe的解决方案 6 编译libcaffe项目 7 编译caffe项目 8 编译其他项目 运行第一个caffe测试程序 配置cuDNN 配置python 配置matl

3D Touch:静态快速启动方式

原文传送门:Add iOS 9’s Quick Actions shortcut support in 15 minutes right now ! 苹果在iOS9 上引入3D触控(压力触控)功能,API 主要分为三个模块:快速启动.Peek 和 Pop,压敏技术. 该新功能在iOS9 中你默认是有效的,这样就意味着你现在就可以提交支持该技术的app.现在,我将快速直接的深入的探索 快速启动的技术,如果幸运的话,你就可以在15分钟内学完.如果你想一更新就受到消息,那么关注我就好了,如果没有进一步