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

2023-11-02

深度神经网络加速库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 版本一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度神经网络加速库cuDNN简介 的相关文章

随机推荐

  • Hash转magnet magnet:?xt=urn:btih:

    Hash码之前加上 magnet xt urn btih 注意空格和标点
  • 【OpenGL】opengl shader内置变量和函数

    1 uint CreateShader enum type 创建空的shader object type VERTEX SHADER 2 void ShaderSource uint shader sizeicount const stri
  • 关于thinkphp union多表关联查询 后排序及分页实现

    遇到的问题 1 union后直接排序或分页报错 Incorrect usage of UNION and ORDER BY 2 fetchSql得到的查询语句是没有 括起来的 3 buildSql 得到的查询语句有 括起来的 例如 查询语句
  • typeScript面试必备之-通识一

    现在玩ts的前端越来越多 作为马上来临的春季招聘 前端的小伙伴你准备好了吗 ts越来越像java 更加规整 个人认为这是一个大趋势 Typescript 介绍 1 TypeScript 是由微软开发的一款开源的编程语言 2 TypeScri
  • java获取所有方法及注释_获取类的方法上的所有方法上的注解

    最近在加深注解这块的理解 很多框架都使用到了注解 直接上代码 注解的实现类 Anno java package com robot test import java lang annotation ElementType import ja
  • 《The Road Less Traveled》,心智成熟之旅

    少有人走的路 Scott Peck 规矩 人生苦海无边 人生不是享乐的过程 是解决一个个问题的过程 这个过程中我们会遇到越来越多的问题 我们要正视问题 而不是选择忽略 忽略问题不会使它消失 到后面也是要自己承担 通俗来说就是 现在所受的苦很
  • 梳理百年深度学习发展史-七月在线机器学习集训营助你把握深度学习浪潮

    作为机器学习最重要的一个分支 深度学习近年来发展迅猛 在国内外都引起了广泛的关注 然而深度学习的火热也不是一时兴起的 而是经历了一段漫长的发展史 接下来我们了解一下深度学习的发展历程 1 深度学习的起源阶段 图1 AI之父 马文 明斯基 1
  • 列表页曝光埋点实现

    列表页曝光埋点实现 以商品为例 要求 商品一半以上出现在视窗中时 上报该行的商品 快速滑动过去的商品不上报 滑动过程中如果一行商品一直未消失在视野中 一半以上 不能重复上报 滑出视野的商品 再次滑入视野时需要再次上报 分析 需要以下信息 商
  • Mybatis---resultMap详解

    目录 一 resultMap介绍 二 自定义映射关系 一 resultMap介绍 该标签的作用是自定义映射关系 Mybatis可以将数据库结果封装到对象中 是因为结果集和对象属性名相同 也就是你写的pojo类型的参数名和数据库的字段名相同
  • Your account has been blocked. fatal: Could not read from remote repository

    1 首先设置自己的账户 https blog csdn net qq 38125058 article details 81209667 2 然后 删除在git配置密码的文件下 home kevin ssh 删除别人的文件
  • Reactive Streams, flux, mono介绍之白话版

    目录 要解决的问题 解决原理 解决方法 发布者Publisher 订阅者Subscriber 订阅对象Subscription 处理者Processor 源码简析 spring中响应式流的应用 服务端技术栈 响应式Http客户端 服务端修改
  • NodeJs入门(一)

    1 process nextTick callback 它的功能是为事件循环设置一项任务 nodeJs会在下一个事件循环时调用callback Node js是单线程的 除了系统IO之外 在它的事件轮询过程中 同一时间只会处理一个事件 你可
  • windows server2016创建AD域账户并登录

    上篇介绍了Windows Server2016下安装配置AD域 查看文章请点这里 接下来介绍创建AD域账户并登录域账户的流程步骤 创建域账户 1 右键AD服务器 选择Active Directory管理中心 2 右键AD名称 选择新建 组织
  • TCP 通信流程

    1 TCP通信过程 TCP 是一个面向连接的 安全的 流式传输协议 这个协议是一个传输层协议 1 面向连接 是一个双向连接 通过三次握手完成 断开连接需要通过四次挥手完成 2 安全 tcp 通信过程中 会对发送的每一数据包都会进行校验 如果
  • Java中使用JDBC操作Postgresql

    目录 在Rocky Linux上安装postgresql 用IntelliJ创建JavaFx项目 画一个表格 建立数据库访问 在Rocky Linux上安装postgresql Rocky的仓库中自带了postgresql安装包 我们直接用
  • ffmpeg: error while loading shared libraries: libavdevice.so.57

    编译完ffmpeg后 在终端敲ffmpeg 反馈如下 ffmpeg error while loading shared libraries libavdevice so 57 cannot open shared object file
  • 在matlab中寻找曲线上离原点距离最近的点的坐标的思考

    syms y x linspace 2 2 200 n length x g for i 1 n a x i t vpa solve y 1 a 2 y 2 sin a cos y y 3 g g t end 对于这个代码主要是想算出对应x
  • 第六章 存储器层次结构 第一节 存储技术之磁盘存储

    磁盘能比RAM存储更大的信息 但是读取速度上比DRAM慢了10万倍 比SRAM慢了100万倍 1 磁盘构造 磁盘是由盘片 platter 构成 盘片中央有一个可以旋转的主轴 它使得盘片以固定的旋转速率旋转 每个盘片有两面或者称为表面 表面覆
  • JDK开发环境配置

    JRE Java Runtime Environment Java运行环境 用来运行JAVA程序 JDK Java Development Kit Java开发工具包 包含JRE JDK 是整个Java的核心 包括了Java运行环境 Jav
  • 深度神经网络加速库cuDNN简介

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