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

更多学习资源

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


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

相关推荐
探索云原生2 天前
大模型推理指南:使用 vLLM 实现高效推理
ai·云原生·kubernetes·gpu·vllm
若石之上5 天前
DeepSpeed:PyTorch优化库,使模型分布式训练能高效使用内存和更快速
pytorch·内存·gpu·deepspeed·速度·zero
qiang425 天前
想租用显卡训练自己的网络?AutoDL保姆级使用教程(PyCharm版)
pycharm·gpu·autodl·租显卡
扫地的小何尚8 天前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
藓类少女9 天前
【深度学习】使用硬件加速模型训练速度
人工智能·深度学习·分布式训练·gpu
小新_-9 天前
第五章:指令系统
计算机组成原理
centurysee11 天前
【一文搞懂】GPU硬件拓扑与传输速度
gpu·nvidia
探索云原生16 天前
GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
ai·云原生·kubernetes·go·gpu
一个处女座的程序猿17 天前
AI之硬件对比:据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D
人工智能·gpu