为什么需要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...

更多学习资源

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


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

相关推荐
Seal软件18 小时前
GPUStack 0.2:开箱即用的分布式推理、CPU推理和调度策略
大模型·llm·aigc·gpu·genai·gpu集群
GPUStack18 小时前
GPUStack 0.2:开箱即用的分布式推理、CPU推理和调度策略
ai·大模型·aigc·gpu·genai·gpu集群
小锋学长生活大爆炸3 天前
【踩坑】装了显卡,如何让显示器从主板和显卡HDMI都输出
计算机外设·gpu·显卡·hdmi·外设
Hi202402174 天前
RTX3060 FP64测试与猜想
性能优化·gpu·cuda·性能分析·gpgpu
文艺倾年5 天前
【大模型专栏—入门篇】科研数据与显卡使用
预处理·gpu算力·gpu·数据·数据处理
Hi202402176 天前
smsp__inst_executed_pipe_fp64为什么对不上
性能优化·gpu·cuda·性能分析·gpgpu
杰克逊的日记7 天前
PyTorch----模型运维与实战
人工智能·pytorch·python·gpu
YuCaiH12 天前
【计算机组成原理】计算机的性能指标
笔记·计算机组成原理
Hi2024021722 天前
验证4个SMSP是否是串行访问ShareMemory的
性能优化·gpu·cuda·性能分析·gpgpu
Hi2024021722 天前
NV GPU FMA指令测试
性能优化·gpu·cuda·性能分析·gpgpu