第一篇:关于GPU+CUDA+cuDNN的理解

有关GPU、CUDA、cuDNN的理解



前言

接触深度学习的小伙伴应该或多或少能够理解,神经网络的学习离不开GPU,那对于利用电脑的CPU还是GPU来进行神经网络的训练有什么区别呢,这跟cuda和cuDNN又是如何挂钩的呢?刚入门的小伙伴肯定会有这些问题,下面来帮助大家解决这些问题哦。


一、CPU和GPU的区别是什么呢?

这里先附上一张截图(图片来源于cuda tookit文档,都是英文的,想看的小伙伴直接搜就可以了,哈哈):
在这里插入图片描述
下面我就通过这两张图来说明CPU和GPU的区别。
  我们都知道CPU(中央处理器,Central Processing Unit)和GPU(图像处理器,Graphics Processing Unit)在设计上主要是后者拥有更多的运算单元,也就是图中的绿色部分ALU。两者的差异在哪里呢?

  第一点:对于CPU来说,它比GPU拥有更多的Control和Cache单元,我们知道Cache单元是用来做数据缓存的,CPU可以通过Cache来减少存取主内存的次数,也就是减少内存延迟(memory latency)。GPU中Cache很小或者没有,因为GPU可以通过并行计算的方式来减少内存延迟。因此CPU的Cahce设计主要是实现低延迟,Control主要是通用性,复杂的逻辑控制单元可以保证CPU高效分发任务和指令。所以CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。举个简单的例子,GPU就像是工厂里面流水线上的员工,相互独立,各自分工,但是呢人多力量大,哈哈;反之CPU就像每个车间班长,虽然也会参与干活,但是人少,一般只负责任务分配,人员调度等任务,其实这些知识都是计算机组成原理里面的,详细的还会涉及到CPU工作原理等,内存如何分配,对于小白可能会有些生涩哈,只能努力去理解啦。

  第二点:对于GPU而言,提供比 CPU 高得多的指令吞吐量和内存带宽。许多应用程序利用这些更高的功能在 GPU 上比在 CPU 上运行得更快。其他计算设备(如 FPGA)也非常节能,但提供的编程灵活性比 GPU 低得多。GPU 和 CPU 之间的这种能力差异之所以存在,是因为它们的设计目标不同。虽然 CPU 旨在以尽可能快的速度执行称为线程的一系列操作,并且可以并行执行几十个这样的线程,但 GPU 旨在并行执行数千个线程(摊销较慢的单线程性能以实现更大的吞吐量)。GPU 专用于高度并行计算,因此设计为将更多晶体管用于数据处理而不是数据缓存和流量控制将更多晶体管用于数据处理,例如浮点计算,有利于高度并行计算;GPU 可以通过计算隐藏内存访问延迟,而不是依靠大数据缓存和复杂的流控制来避免长时间的内存访问延迟


一大堆文字看的是不是有点晕,哈哈。写的都晕啦,没办法,继续往下。


二、为什么要用GPU来训练神经网络呢?

在解决这个问题之前大家要首先对神经网络有一定的了解才行,因为神经网络的训练或者说计算机制是与GPU的运行原理相结合的。
  第一点:神经网络是高度并行的。我们知道神经元的每一层都是由一个个神经元组成,每个神经元彼此独立,层与层的神经元又互相关联,在并行计算中,高度并行任务是指将整个任务分割成一组较小的任务以并行计算的任务。高度并行任务是那些容易看到一组小任务彼此独立的任务,由于这个原因,神经网络也就是高度并行的,这也正符合GPU的高度并行性计算特性。
  第二点:神经网络的训练是需要设计大量参数的,激活值、权重等等,并且这些参数由于每次迭代训练都需要更新,会造成很大的缓冲,这也使得内存带宽的使用占比会很大。而GPU一个显著的优势就是拥有极高的内存带宽。并且呢神经网络的训练也不涉及大量的分支运算与复杂的控制指令,所以呢更适合在GPU上训练。


三、什么是cuda?

CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 同时也是是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,这里大家就用该明白了吧,cuda是只能应用在NVIDIA的GPU上的,所以小伙伴们想使用的cuda做计算先看看自己的电脑显卡是NVIDIA的还是AMD的。

一般电脑上都是有两张显卡的,一张是CPU自带的核芯显卡,也叫集成显卡;一张就是英伟达的独立显卡,给大家看看我笔记本上显卡类型的:
在这里插入图片描述


四、什么是cuDNN?

cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。它强调性能、易用性和低内存开销。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库


五、cuda和cuDNN的关系

看了很多解释,我这里也总结一个版本的吧。

如果将CUDA看作是一个工作台,cuDNN是基于CUDA的深度学习GPU加速库,它是一个SDK,有了它才能在GPU上完成深度学习的计算,其能够很大程度的把加载到显卡上的网络层数据进行优化计。值得注意的是,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。

总结

文字有点多,对于想了解或者刚接触的小伙伴应该会有一些帮助的,下一篇我会详细记录下有关cuda的环境配置,如有什么不足或者错误之处欢迎留言指正,虚心求教。

喜欢的小伙伴可以关注一下点个赞哦,哈哈。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了安装cudacudnn,您需要注册一个账号,然后下载对应的版本。首先,您需要***在https://developer.nvidia.com/rdp/cudnn-download下载cudnn。根据您安装的cuda版本选择对应的cudnn版本,例如我们选择安装的是11.5版本。 CudaCudnn之间有密切的关系。Cudnn是基于Cuda架构开发的专门用于深度神经网络的GPU加速库。可以将Cuda理解为一个商圈,而Cudnn就是商圈中的一家装修完成的房间,专门用于深度神经网络的加速。 安装Cudnn的最后一个环节是复制替换文件。您需要解压您刚刚下载的第二个文件,然后按照下面的操作进行复制替换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【Windows11】CudaCudnn详细安装教程](https://blog.csdn.net/Jin1Yang/article/details/124754015)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [深度学习之CUDA+CUDNN详细安装教程](https://blog.csdn.net/hahhahahhaja/article/details/126561090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值