为什么需要GPU?

图形处理器(GPU)是现代计算机系统中不可或缺的部分,它在许多应用中发挥了关键作用,特别是在3D图形渲染、深度学习和区块链等领域。

为什么我们需要GPU呢?

这源于它在图形渲染过程中的关键作用。让我们来看一下3D图形渲染的流程,它通常包括顶点处理、图元处理、栅格化、片段处理和像素操作五个步骤。

  • 顶点处理:GPU将多边形三维空间的顶点转换到屏幕二维空间中。

  • 图元处理:GPU将多边形的顶点连接起来,并剔除不在屏幕中的图元,以减少后续处理的工作量。

  • 栅格化:这个阶段会把多边形涵盖的区域转换成一个个的像素点。

  • 片段处理:GPU计算每一个像素点的颜色和透明度,并给它们上色。

  • 像素操作:把不同的多边形像素点混合到一起。

在这个流程中,绝大部分的处理都是固定的且可以并行的,不需要CPU的乱序执行、分支预测,以及实现他们的复杂电路。这使得GPU电路简单,算得更快,成本也可以更低。

GPU的进化

早期的GPU图形渲染都是使用硬件的固定流水线处理的,要实现不同的渲染效果,开发人员只能调整配置参数。

2001年,微软在Direct3D 8.0中开始引入可编程管线的概念,使得开发人员可以修改顶点处理和片段处理的程序逻辑。

2005年,微软的XBox360提出了一种统一着色器架构,ATI和Nvidia也开始跟进采用。虽然流水线不同步骤的处理逻辑不同,但是可以使用相同的指令集,所以硬件电路可以共用。这使得着色器变成了一个通用模块,可以做各种通用计算。因此,图形处理器进化为通用图形处理器(GPGPU)。

2007年,NVIDIA发布了CUDA(Compute Unified Device Architecture)平台,这是一种使用NVIDIA的图形处理器进行通用计算的技术。CUDA平台提供了一个能让开发者直接使用高级语言编写GPU代码的接口,大大降低了开发难度。

随着CUDA的出现,GPU开始被广泛用于机器学习领域。机器学习算法,尤其是深度学习算法,通常涉及大量的矩阵运算,这种计算特性非常适合GPU的并行处理能力。例如,神经网络的训练过程中,需要对大量的神经元进行并行计算,这正是GPU擅长的。

此后,许多基于CUDA的深度学习框架,如TensorFlow、PyTorch等,开始出现。这些框架进一步降低了使用GPU进行深度学习的门槛,使得更多的研究者和开发者能够利用GPU进行机器学习。

现代GPU的特点

现代GPU有以下特点:

  • 只保留了取指令、指令译码、ALU、执行上下文等相关电路。
  • 引入了单指令多线程(SIMT)技术,一次取多条数据,然后交给多个ALU并行计算。
  • GPU还实现了超线程技术。通用GPU在执行任务时会遇到停顿问题,此时可以做别的任务,所以执行上下文可以比ALU多。
  • 因为并行计算能力,与CPU相同价格的GPU在深度学习时所需的时间往往能减少一两个数量级。无论是在性能还是在成本方面,GPU都是一个非常高效的计算工具。

图片来源:www.researchgate.net/figure/Simp...

更多学习资源

我注册了一个微/信/公/众/号:萤火架构,后续会分享很多架构方面的真实经验和认知,欢迎关注,以免错过精彩内容。


以上就是本文的主要内容,如有问题,欢迎交流。

相关推荐
东锋1.37 小时前
NVIDIA(英伟达) GPU 芯片架构发展史
gpu·nvidia
KIDGINBROOK2 天前
DeepSeek DeepEP学习(一)low latency dispatch
gpu·cuda
A.sir啊6 天前
计算机组成原理知识点精汇(一)计算机基础知识
硬件架构·cpu·计算机组成原理·冯诺依曼
AI小白龙8 天前
使用torch.compile进行CPU优化
pytorch·python·gpu·cuda编程
怪怪王13 天前
【GPU驱动】OpenGLES图形管线渲染机制
驱动开发·gpu·opengl
叶庭云14 天前
PyTorch 深度学习框架中 torch.cuda.empty_cache() 的妙用与注意事项
pytorch·深度学习·gpu·empty_cache·内存缓存管理
不能只会打代码20 天前
计算机组成原理—— 总线系统(十一)
fpga开发·计算机组成原理
Nicn20 天前
考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)
c++·考研·系统架构·操作系统·计算机组成原理·os
smartcat201021 天前
VLLM历次会议(2024.7)
大模型·gpu
LucianaiB23 天前
深度对比析:DeepSeek服务优胜本地部署、网页版与蓝耘GPU智算云平台的较量以及删除本地部署的过程
python·ai·gpu·本地部署·deepseek