GPU, CUDA,cuDNN三者的关系总结

2023-05-16

GPU, CUDA,cuDNN三者的关系总结

CPU 和 GPU

在这里插入图片描述

cpu和gpu结构展示
GPU(图像处理器,Graphics Processing Unit)和CPU(中央处理器,Central Processing Unit)在设计上的主要差异在于GPU有更多的运算单元(如图中绿色的ALU),而Control和Cache单元不如CPU多,这是因为GPU在进行并行计算的时候每个运算单元都是执行相同的程序,而不需要太多的控制。Cache单元是用来做数据缓存的,CPU可以通过Cache来减少存取主内存的次数,也就是减少内存延迟(memory latency)。GPU中Cache很小或者没有,因为GPU可以通过并行计算的方式来减少内存延迟。因此CPU的Cahce设计主要是实现低延迟,Control主要是通用性,复杂的逻辑控制单元可以保证CPU高效分发任务和指令。所以CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。打个比方,GPU就像成千上万的苦力,每个人干的都是类似的苦力活,相互之间没有依赖,都是独立的,简单的人多力量大;CPU就像包工头,虽然也能干苦力的活,但是人少,所以一般负责任务分配,人员调度等工作。
可以看出GPU加速是通过大量线程并行实现的,因此对于不能高度并行化的工作而言,GPU就没什么效果了。而CPU则是串行操作,需要很强的通用性,主要起到统管和分配任务的作用。

CUDA

CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。

cuDNN

cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。

总结

简单来说,CPU适合串行计算,擅长逻辑控制。GPU擅长并行高强度并行计算,适用于AI算法的训练学习
CUDA 是NVIDIA专门负责管理分配运算单元的框架
cuDNN是用于深层神经网络的gpu加速库

查询版本命令:

ubuntu:

cuda 版本 
nvcc -V
cat /usr/local/cuda/version.txt

cudnn 版本 
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

查看Nvidia GPU版本
nvidia-smi

//10s显示一次
watch -n 10 nvidia-smi

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

GPU, CUDA,cuDNN三者的关系总结 的相关文章

  • OS X 10.8 上的 PyCuda / 多处理问题

    我正在开发一个项目 将计算任务分配给多个 python 进程 每个进程都与其自己的 CUDA 设备关联 生成子进程时 我使用以下代码 import pycuda driver as cuda class ComputeServer obje
  • 为什么 cuCtxCreate 返回旧上下文?

    我已经安装了 CUDA SDK 4 2 64 CUDA工具包4 2 64 CUDA 驱动程序 4 2 64 我检查了 windows 中的每个 nvcuda dll 所有这些都是 4 2 版本 但是当我使用驱动程序 api 创建上下文并使用
  • CUDA计算能力2.0。全局内存访问模式

    CUDA 计算能力 2 0 Fermi 全局内存访问通过 768 KB L2 缓存进行 看起来 开发人员不再关心全局内存库 但全局内存仍然非常慢 因此正确的访问模式很重要 现在的重点是尽可能多地使用 重用 L2 我的问题是 如何 我将感谢一
  • C 中的 CUDA:如何使用 cudaMemcpyAsync 修复错误 11

    我目前正在尝试使用 CUDA 运行一个简单的多 GPU 程序 它的基本作用是将一个包含一些虚拟数据的大型数组复制到 GPU GPU 进行一些数学计算 然后将结果数组复制回来 我在 VS2017 的输出中没有收到任何错误 但我设置的一些错误消
  • 使用 tfprof 分析 TensorFlow

    我正在尝试分析 TensorFlow 的计算 内存使用情况 发现tfprof https github com tensorflow tensorflow tree master tensorflow tools tfprof是实现我的目的
  • CUDA 模型 - 什么是扭曲尺寸?

    最大工作组大小和扭曲大小之间有什么关系 假设我的设备有 240 个 CUDA 流处理器 SP 并返回以下信息 CL DEVICE MAX COMPUTE UNITS 30 CL DEVICE MAX WORK ITEM SIZES 512
  • 使用 GPU 进行 Matlab 卷积

    我用gpuArray尝试了matlab的卷积函数conv2 convn 例如 convn gpuArray rand 100 100 10 single gpuArray rand 5 single 并将其与 cpu 版本 convn ra
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • 如何安装libcusolver.so.11

    我正在尝试安装 Tensorflow 但它要求 libcusolver so 11 而我只有 libcusolver so 10 有人可以告诉我我做错了什么吗 这是我的 Ubuntu nvidia 和 CUDA 版本 uname a Lin
  • CUDA 和 Eigen 的成员“已声明”错误

    我只是 CUDA 和 Nsight 的初学者 希望利用出色的 GPU 性能进行线性代数运算 例如 CUBLAS 我在以下人员的帮助下编写了很多自定义代码Eigen http eigen tuxfamily org index php tit
  • CUDA-Kernel 应该根据块大小动态崩溃

    我想做稀疏矩阵 密集向量乘法 假设用于压缩矩阵中条目的唯一存储格式是压缩行存储 CRS 我的内核如下所示 global void krnlSpMVmul1 float data mat int num nonzeroes unsigned
  • 完全禁用 NVCC 优化

    我正在尝试测量 GPU 上的峰值单精度触发器 为此我正在修改 PTX 文件以在寄存器上执行连续的 MAD 指令 不幸的是 编译器正在删除所有代码 因为它实际上没有做任何有用的事情 因为我没有执行任何数据的加载 存储 是否有编译器标志或编译指
  • 如何从C++头文件调用CUDA文件?

    我知道从 c 文件调用 cu 文件的方法 但现在我想从 C 头文件调用 cu 文件 有可能做到吗 如果是这样 我应该如何设置我的项目 请帮忙 这是一个有效的例子 file1 h int hello file2 h include
  • Tensorflow新Op CUDA内核内存管理

    我已经使用 GPU CUDA 内核在 Tensorflow 中实现了一个相当复杂的新 Op 该操作需要大量动态内存分配 这些变量不是张量 并且在操作完成后被释放 更具体地说 它涉及使用哈希表 现在我正在使用cudaMalloc and cu
  • CUDA 中的 JPEG 库

    我正在尝试在 CUDA 中压缩和解压缩图像 到目前为止我已经找到了这个库 http sourceforge net projects cuj2k source navbar http sourceforge net projects cuj
  • 为什么使用 boost::none 无法通过 nvcc 编译?

    我正在尝试编译以下代码 include
  • 如何转储所有 NVCC 预处理器定义?

    我想达到同样的效果 gcc dM E lt dev null 如所描述的here https stackoverflow com q 2224334 1593077 但对于 nvcc 也就是说 我想转储所有 nvcc 的预处理器定义 唉 n
  • 为什么在 CUDA 中启动 32 倍数的线程?

    我参加了 CUDA 并行编程课程 并且看到了许多 CUDA 线程配置的示例 其中通常将所需的线程数四舍五入到最接近的 32 倍数 我知道线程被分组为 warp 并且如果您启动 1000 个线程 GPU 无论如何都会将其四舍五入到 1024

随机推荐

  • (C/C++)区间调度问题的解决及输出:动态规划、贪心算法(递归、递推)

    给定n个活动 xff0c 其中的每个活动ai包含一个起始时间si与结束时间fi 设计与实现算法从n个活动中找出一个最大的相互兼容的活动子集S 要求 xff1a 分别设计动态规划与贪心算法求解该问题 其中 xff0c 对贪心算法分别给出递归与
  • Ubuntu18.04 xrdp多用户远程桌面

    span class token function wget span http www c nergy be downloads install xrdp 3 0 zip unzip install xrdp 3 0 zip span c
  • char 与 unsign char的转换

    char为字符类型 unsigned char为无符号字符类型 二者均是占一个字节 xff0c 可以直接通过强制转换的方式 xff0c 把char类型的值转为unsigned char 当定义变量 xff1a unsigned char a
  • NIPS20 - 将对比学习用于监督学习任务《Supervised Contrastive Learning》

    文章目录 原文地址论文阅读方法初识相知回顾代码 原文地址 原文 论文阅读方法 三遍论文法 初识 对比学习这两年在自监督学习 无监督学习任务中非常火 xff0c 取得了非常优秀的性能 这个工作就是想办法将其用在监督学习任务中 xff0c 在训
  • ViewBinding的用法

    1 启用Viewbinding功能 xff1a 在模块build gradle文件android节点下添加如下代码 android span class token punctuation span span class token pun
  • android技巧:快速重建system.img

    修改android的系统模块后 xff0c 需要重新生成system img xff0c 以前我用make systemimage xff0c 但这个过程太慢了 xff0c 很烦人 于是通过make输出的信息 xff0c 找到一个比较快的方
  • 前端参数无法传递给后端,一直返回400

    写在前面 太久没写SpringBoot的代码了 xff0c 最近一直在刷题和复习基础 IO xff0c 集合 xff0c 反射 xff0c MySQL等 但是 xff0c 前两天突发奇想 xff0c 想做一个关于某K歌平台歌曲免费导出的网站
  • 如何彻底删除小黑记事本弹窗

    No1 正常步骤 在桌面右键单击这个记事本的图标 xff0c 然后在菜单中找到并点击 打开文件位置 这一项 xff08 在开始菜单搜索也可以 xff09 按照正常方法 xff0c 在控制面板中卸载该软件 在第一步打开的文件位置中 xff0c
  • thinkphp5 select对象怎么转数组?

    DB操作返回是数组 模型直接操作返回是对象 对象类型转换数组 打开 database php 增加或修改参数 39 resultset type 39 61 gt 39 think Collection 39 即可连贯操作 model 39
  • thinkphp select 返回数组

  • python爬虫beautifulsoup详细教程

    BeautifulSoup4是爬虫必学的技能 BeautifulSoup最主要的功能是从网页抓取数据 xff0c Beautiful Soup自动将输入文档转换为Unicode编码 xff0c 输出文档转换为utf 8编码 Beautifu
  • 程序员读书顺序!

    程序猿的读书历程 xff1a xx语言入门 gt xx语言应用实践 gt xxx语言高阶编程 gt xxx语言的科学与艺术 gt 编程之美 gt 编程之道 gt 编程之禅 gt 颈椎病康复指南
  • Windows重建EFI引导启动分区(esp分区)

    Windows重建EFI引导启动分区 xff08 esp分区 xff09 遇到这种情况windows已经无法启动 xff0c 所以需要u盘启动盘进入winPE系统 1 如果只是格式化了esp分区 xff0c 没有改变esp分区的类型 xff
  • 智能革命和未来社会《智能时代--大数据和智能革命重新定义未来》

    通过区块链 xff08 Block Chain xff09 在未来跟踪每一件商品从制造出来到被消费的完整行踪 比特币在一定程度上起到货币的作用 xff0c 并且成为全球很安全的洗钱工具 xff0c 源于它背后的一个技术 区块链 block即
  • cas 单点登陆实战-sso-config篇(五)

    本篇我们讲解cas单点登陆在与shiro集成 xff0c 在与redis集成遇到的问题 先看完整代码吧 package com madnet config import com google common base CaseFormat i
  • cas 登陆时验证信息无效

    1 先查看缓存中的地址等是否正确 xff0c 不正确清除缓存重新打包 2 检查证书是否正确
  • crontab任务堆积导致启动大量进程的处理(flock)

    crontab在执行任务过程中 xff0c 可能由于任务执行错误或者在下一个任务开始前 xff0c 前一个任务没有执行完成 xff0c 导致大量的进程产生 xff0c 最后导致死机等 可以使用flock来加锁防止启动大量进程 xff1a f
  • Ue4行为树学习笔记 二

    Ue4行为树学习笔记 二 前言引用资料 行为树创建于布局任务设立 追逐随机巡逻AI控制器的设置最终设置尾声 前言 因为篇幅原因 xff0c 没看过上篇还请移步至 Ue4行为树学习笔记 一 引用资料 行为树快速入门指南 UE4学习笔记 xff
  • Python实现人脸识别

    文章目录 前言一 face recognition的安装1 安装dlib1 安装face recognition 二 上源码总结 前言 face recognition face recognition中文使用说明 号称是世界上最简单的开源
  • GPU, CUDA,cuDNN三者的关系总结

    GPU CUDA cuDNN三者的关系总结 CPU 和 GPU cpu和gpu结构展示 GPU xff08 图像处理器 xff0c Graphics Processing Unit xff09 和CPU xff08 中央处理器 xff0c