深度神经网络加速库cuDNN简介-程序员宅基地

技术标签: c++  python  dnn  人工智能  神经网络  

深度神经网络加速库cuDNN简介

在这里插入图片描述

简介

NVIDIA CUDA深度神经网络库 (cuDNN: CUDA Deep Neural Network ) 是用于深度神经网络的 GPU 加速基元库。它提供了 DNN 应用程序中经常出现的例程的高度调整实现:

  • Convolution forward and backward, including cross-correlation
  • Matrix multiplication
  • Pooling forward and backward
  • Softmax forward and backward
  • Neuron activations forward and backward: relu, tanh, sigmoid, elu, gelu, softplus, swish
  • Arithmetic, mathematical, relational and logical pointwise operations
  • Tensor transformation functions
  • LRN, LCN and batch normalization forward and backward

cuDNN 卷积示例旨在实现与此类示例的最快的基于 GEMM(矩阵乘法)的实现具有竞争力的性能,同时使用显着更少的内存。

cuDNN 功能包括可定制的数据布局,支持灵活的维度排序、跨步以及用作其所有例程的输入和输出的 4D 张量的子区域。这种灵活性允许轻松集成到任何神经网络实现中,并避免了基于 GEMM 的卷积有时需要的输入/输出转置步骤。

cuDNN 提供了一个基于上下文的 API,可以轻松实现多线程和(可选)与 NVIDIA CUDA 流的互操作性。

编程模型

cuDNN 库公开了一个主机 API,但假设对于使用 GPU 的操作,可以从设备直接访问必要的数据。

使用 cuDNN 的应用程序必须通过调用 cudnnCreate() 来初始化库上下文的句柄。这个句柄被显式地传递给对 GPU 数据进行操作的每个后续库函数。一旦应用程序完成使用 cuDNN,它可以使用 cudnnDestroy() 释放与库句柄关联的资源。这种方法允许用户在使用多个主机线程、GPU 和 CUDA 流时显式控制库的功能。

例如,应用程序可以使用 cudaSetDevice 将不同的设备与不同的主机线程相关联,并且在每个主机线程中,使用唯一的 cuDNN 句柄将库调用定向到与其关联的设备。因此,使用不同句柄进行的 cuDNN 库调用将自动在不同的设备上运行。

假定与特定 cuDNN 上下文关联的设备在相应的 cudnnCreate()cudnnDestroy() 调用之间保持不变。为了使 cuDNN 库在同一主机线程中使用不同的设备,应用程序必须通过调用 cudaSetDevice() 设置要使用的新设备,然后通过调用创建另一个与新设备关联的 cuDNN 上下文cudnnCreate()。

cuDNN API 兼容性

从 cuDNN 7 开始,补丁和次要版本的二进制兼容性保持如下:

  • 任何补丁版本 x.y.z 都与针对另一个 cuDNN 补丁版本 x.y.w 构建的应用程序向前或向后兼容(意思是,具有相同的主要和次要版本号,但具有 w!=z)。

  • 从 cuDNN 7 开始的 cuDNN 次要版本与基于相同或更早补丁版本构建的应用程序二进制向后兼容(这意味着,基于 cuDNN 7.x 构建的应用程序与 cuDNN 库 7.y 二进制兼容,其中 y>=x)。

  • 当 y > x 时,使用 cuDNN 版本 7.y 编译的应用程序不能保证与 7.x 版本一起使用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kunhe0512/article/details/125062638

智能推荐

SpringBoot事务-REQUIRES_NEW 事务属性陷阱-程序员宅基地

文章浏览阅读9.1k次,点赞3次,收藏6次。REQUIRES_NEW 事务属性陷阱不管是使用 Spring Framework,还是使用 EJB,使用 REQUIRES_NEW 事务属性都会得到不好的结果并导致数据损坏和不一致。REQUIRES_NEW 事务属性总是会在启动方法时启动一个新的事务。许多开发人员都错误地使用 REQUIRES_NEW 属性,认为它是确保事务启动的正确方法。考虑清单 11 中的两个方法:清单 11. 使用..._requires_new

各模组相关interface_ar模块interface-程序员宅基地

文章浏览阅读507次。AP接口表:AP_INVOICES_INTERFACEAP_INVOICE_LINES_INTERFACE涉及的请求:应付款管理系统开放接口导入涉及案例: 运费导AP、费用导APPO接口表:申请:PO_REQUISITIONS_INTERFACE_ALL涉及请求:导入申请采购:po_headers_interfacepo_lines_interf_ar模块interface

深入 理解Statement 和 PreparedStatement_statement、preparedstatement-程序员宅基地

文章浏览阅读3.7k次。一、使用Statement而不是PreparedStatement对象JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的.PreparedStatement的第一次执行消耗是很..._statement、preparedstatement

字典如何遍历_字典怎么遍历-程序员宅基地

文章浏览阅读1w次,点赞8次,收藏23次。a={'a':'1','b':'2','c':'3'}1. 遍历key值for key in a: pritn(key+':'+a[key]) for key in a.keys(): print(key+':'+a[key])2.遍历value值for value in a.values(): print(value)3.遍历字典项..._字典怎么遍历

python标准库模块_gsignal.c:2641: instance 'x55854ba4cfoo' has no ha-程序员宅基地

文章浏览阅读2k次。06/07 20:10:08 编译0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我们 核心模块1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. st..._gsignal.c:2641: instance 'x55854ba4cfoo' has no handler with id

CentOS8通过yum安装php7.4.7-程序员宅基地

文章浏览阅读2.1k次。CentOS8安装php7.4.7# 添加源rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpmrpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-8.rpm# 启用remi模块安装dnf -y install dnf-utils# 查找yum search php74*# 安装yum install php74-p_yum安装php7.4.7

随便推点

Html5把页面分成左右两,把页面分成左右两个,如何实现在左侧点击,链接一个页面到右边的页面...-程序员宅基地

文章浏览阅读3.5k次。问:请问jsp页面用框架网页把页面分成左右两个,怎么实现在左侧点击,链接一个页面到右边的页面jsp页面用框架网页()把页面分成左右两个页面,怎么实现在左侧点击,链接一个页面到右边的页面?另外,为什么我在jsp页面里面设置onmouseover事件,不管用呢?--------------------解决方案--------------------起个名字 target = "name"linkfra..._html怎么分成左右两块

VS2015社区版、企业版、专业版下载官网地址_vs2015官网-程序员宅基地

文章浏览阅读5.9k次,点赞20次,收藏20次。VS2015 专业版下载链接http://download.microsoft.com/download/B/8/9/B898E46E-CBAE-4045-A8E2-2D33DD36F3C4/vs2015.pro_chs.isoVS2015 企业版下载链http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs.isoVS2015 社区版下载链接http://d_vs2015官网

SQL查询语句关键字的执行顺序_sql中查询关键字的顺序-程序员宅基地

文章浏览阅读214次。SQL查询语句关键字的执行顺序1)Mysql语法顺序:select ->from ->join ->on ->where ->group by ->having ->union ->order by ->imit2)MySQL语句执行顺序from ->on ->join ->where ->group by ->having ->select ->distinct ->_sql中查询关键字的顺序

小白学习python-安装-程序员宅基地

文章浏览阅读145次。工作需要,学习了python!绝对好使 转载:https://blog.csdn.net/nmjuzi/article/details/79075736

VRChat火了,但VR社交还没迎来最好的时代-程序员宅基地

文章浏览阅读516次。谁也没想到,VR社交是通过视频博主在中国火起来的。九月份微博上一位二次元领域博主发布了一段视频,内容是在一款名为《VRChat》的游戏中,两名外国人莫名其妙地用中文交流起..._vrchat进去之后又要我重新进入

hdoj 蟠桃记_hdoj蟠桃-程序员宅基地

文章浏览阅读423次。蟠桃记 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 58 Accepted Submission(s) : 39Font: Times New Roman | Verdana | Georgia Font Size: ←_hdoj蟠桃

推荐文章

热门文章

相关标签