GPU、CUDA和cuDNN分别是什么,之间又有什么关系?

GPU、CUDA和cuDNN分别是什么,之间又有什么关系?

1. GPU

GPU,图形处理单元(Graphics processing unit),为数据的并行处理而设计,可以更好的进行图形和视频渲染,应用广泛。

GPU的发展是对CPU的补充,CPU被设计用来处理通用任务,具有更为复杂的控制单元。虽然CPU通过架构创新、更快的时钟速度和核心的增可以进行性能提升,但是GPU是专门为加快图像工作负载而设计的,主要用来处理逻辑性不强的大规模数据计算任务,在这方面有着远胜于CPU的优势。

GPU和显卡通常被用来表达同一概念,但是两者之间存在一定的区别。GPU之于显卡,就像CPU之于主板,显卡指的是集成GPU的扩展板,板子上还包括大量的其它部件,既能让GPU运行,又能连接到系统的其它部分。GPU有集成和独立两种类型,集成的GPU是嵌入在CPU旁边,而独立的GPU是单独的芯片,安装在自己的电路板上。

GPU最初被设计用来加速图形的渲染,但是随着时间的推移,GPU变得更加灵活和可编程,可以用其创造出更有趣的视觉效果和逼真的场景。开发人员也开始利用GPU强大的能力来大幅度加速深度学习等领域的计算工作。

2. CUDA

CUDA是NVIDIA专门为GPU上通用计算开发的并行计算平台和编程模型。借助CUDA,开发者可以利用GPU的强大性能显著加速计算应用。在经 GPU 加速的应用中,工作负载的串行部分在 CPU 上运行,且 CPU 已针对单线程性能进行优化,而应用的计算密集型部分则以并行方式在数千个 GPU 核心上运行。

也就是说,CUDA是一个并行计算平台,利用这个平台接口,可以高效、灵活的利用GPU的并行计算能力,完成大规模数据计算任务

3. cuDNN

cuDNN是NVIDIA开发的深度神经网络库,一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程(如前向和反向卷积、池化层、归一化和激活层)。

借助cuDNN可以实现高性能 GPU 加速,研究人员和开发者可以专注于训练神经网络及开发软件应用,而不必花时间进行低层级的 GPU 性能调整,也避免了每个使用者都需要自己实现底层的CUDA编程。如果用GPU训练模型,cuDNN也并不是必须的,但是一般会采用这个加速库。cuDNN 可加速广泛应用的深度学习框架,包括 Caffe2、Keras、PaddlePaddle、PyTorch 、TensorFlow等

在明白GPU、CUDA和cuDNN分别是什么之后,三者之间的关系就明晰了
在GPU上进行深度学习开发的过程中,我们利用Pytorch等深度学习框架编写代码,然后深度学习框架依赖cuDNN深度神经网络库,利用CUDA并行计算平台,实现深度学习代码在高性能GPU上的加速运行。可以看作是深度学习框架依赖于cuDNN -> cuDNN依赖于CUDA -> CUDA依赖于GPU

扫描二维码关注公众号,回复: 14889799 查看本文章

猜你喜欢

转载自blog.csdn.net/eastking0530/article/details/126571543