GPU与CPU流程原理

一、CPU与GPU的区别

(一)设计目标

CPU设计用于通用计算任务,擅长处理复杂的逻辑运算和少量数据的快速处理。它的核心数量较少,但每个核心的性能非常强大。例如,在运行操作系统、处理文本、图形和执行各种应用程序时,CPU能够凭借其强大的单核性能和通用性,高效地完成任务。而GPU设计用于并行计算任务,擅长处理大量简单任务的并发执行。它的核心数量非常多,但每个核心的性能相对较弱。在图形渲染、深度学习、科学计算等领域,GPU能够同时处理多个相同操作,发挥其并行计算的优势。

(二)核心数量

CPU通常有4到64个核心(高端服务器可能更多),每个核心支持多线程(如Intel的超线程技术),可以同时处理多个任务。例如,常见的桌面级CPU可能有4核、6核或8核,这些核心能够协同工作,提高整体的计算效率。而GPU通常有数千个核心(如NVIDIA的GPU可能有数千个CUDA核心),每个核心专注于执行简单的计算任务。以NVIDIA A100 GPU为例,它具有6912个CUDA核心,能够在同一时间处理大量的数据。

(三)缓存与内存

CPU配备大容量的高速缓存(L1、L2、L3缓存),用于存储频繁访问的数据。内存访问速度较快,适合需要低延迟的任务。例如,在处理复杂的逻辑运算时,CPU可以快速从缓存中获取数据,减少内存访问的时间开销。而GPU缓存较小,依赖显存(VRAM)进行数据存储。内存带宽较大,适合需要高吞吐量的任务。在进行大规模的数据处理时,GPU能够利用其高带宽的显存,快速地读取和写入数据,提高计算效率。

(四)应用场景

CPU适合串行任务和复杂逻辑运算,如操作系统管理、数据库查询、Web服务等。在这些场景中,CPU的通用性和强大的单核性能能够确保任务的高效执行。而GPU适合并行任务和大规模数据处理,如图形渲染、深度学习、科学计算等。在图形渲染中,GPU能够同时对多个像素点进行计算,大大提高了处理速度;在深度学习训练中,GPU能够加速神经网络的训练过程,显著缩短训练时间。

二、CPU与GPU的原理

(一)CPU的原理

1. 工作原理

CPU通过总线与其他硬件组件如内存、硬盘等进行通信。工作时,它会从内存中读取指令,解码并执行这些指令。每个指令的执行可能会涉及数据的传输、算术或逻辑运算等操作。例如,当我们打开一个应用程序时,CPU会从内存中读取该程序的指令,然后按照指令的要求进行相应的操作,如加载数据、进行计算等。

2. 组成部分

CPU主要由运算器、控制器、寄存器组和内部总线等部件组成。运算器又称算术逻辑单元(ALU),是进行算术和逻辑运算的部件,在控制器的控制下执行指令。控制器负责从存储器中取出指令,并对指令进行译码;根据指令的要求,按时间的先后顺序,负责向其它各部件发出控制信号,保证各部件协调一致地工作,一步一步地完成各种操作。寄存器组可分为专用寄存器和通用寄存器,用于临时存储数据。内部总线根据CPU内部各部分工作的需要,设置具有特定功能的内部总线结构,以便高速、准确地传送信息。

3. 指令流水线与分支预测

CPU使用指令流水线技术,将指令分为多个阶段(取指、解码、执行、写回),提高执行效率。例如,在指令流水线中,当一条指令在执行阶段时,下一条指令可以同时进行解码操作,从而实现指令的并行执行。同时,CPU通过分支预测技术提前猜测程序的执行路径,减少等待时间。当程序中出现分支跳转时,CPU可以根据分支预测的结果,提前准备好相应的指令,避免因等待分支结果而导致的时间浪费。

(二)GPU的原理

1. 工作原理

GPU基于并行计算的思想,通过大量的核心同时处理多个数据项。它采用SIMD(Single Instruction Multiple Data)架构,即一个指令同时作用于多个数据。例如,在进行矩阵运算时,GPU可以同时对矩阵中的多个元素进行相同的操作,大大提高了计算速度。

2. 组成部分

GPU的核心被组织成多个流式多处理器(SM),每个SM包含多个CUDA核心。每个SM独立执行任务,实现高度并行化。此外,GPU还配备了大容量的显存,用于存储和处理图形渲染所需的纹理、顶点和像素数据等。它还提供了专门的图形处理管线,包括顶点处理、几何处理、光栅化和像素处理等阶段。

3. 显存带宽与并行计算

GPU的显存带宽远高于CPU的内存带宽,适合处理大量数据。在进行大规模的数据处理时,GPU能够利用其高带宽的显存,快速地读取和写入数据,减少数据传输的瓶颈。同时,众多的流处理器协同工作,使得GPU能够在同一时间处理大量的数据。它们的工作方式类似于一个高效的计算团队,各自负责一部分任务,共同完成复杂的计算工作。

三、CPU与GPU在大模型运行中的原理

(一)大模型训练阶段

1. GPU主导

在大模型的训练阶段,需要处理海量的数据和复杂的神经网络计算。GPU由于其优秀的并行性,能够有效进行大量的浮点运算。例如,在训练过程中,我们会遇到大量的矩阵运算,比如权重更新、前向传播和反向传播等。这些矩阵运算能够被分解成较小的子任务,利用GPU的并行核心同时处理,从而实现加速。多个研究显示,在相同的硬件条件下,使用GPU进行深度学习训练可以比使用CPU快数十倍甚至上百倍。这种加速效果使得科研人员和工程师能够更快地迭代与优化模型,大幅度缩短实验时间。以OpenAI的GPT – 3模型为例,它拥有1750亿参数,需要大量的计算资源来进行训练,GPU的并行计算能力使得模型的训练成为可能。

2. CPU辅助

虽然GPU在训练过程中起主导作用,但CPU也不可或缺。CPU负责管理系统资源、协调GPU的工作、进行数据预处理等任务。它为GPU提供了一个稳定的运行环境,确保训练过程的顺利进行。例如,在数据加载阶段,CPU可以将数据从硬盘读取到内存中,并进行必要的预处理,然后将处理后的数据传递给GPU进行计算。

(二)大模型推理阶段

1. CPU与GPU协同

在大模型的推理阶段,根据不同的应用场景和需求,CPU和GPU可以协同工作。对于一些对实时性要求不高、计算量较小的推理任务,CPU可以独立完成。例如,在一些简单的文本分类任务中,CPU可以凭借其强大的单核性能和通用性,快速地完成推理任务。而对于对实时性要求较高、计算量较大的推理任务,如自动驾驶、实时翻译等,则需要像NVIDIA RTX系列、Quadro系列这样的GPU卡的加速支持。通过合理分配任务,CPU和GPU可以实现优势互补,提高推理效率。

2. 数据传输与性能优化

在大模型推理过程中,数据需要在CPU和GPU之间进行传输。数据传输的效率直接影响整体性能。为了提高数据传输的效率,通常采用PCIe总线等高速互联技术。同时,为了优化性能,还可以采用一些技术手段,如模型量化、剪枝等,减少模型的计算量和存储需求,提高推理速度。

四、原理图展示

(一)CPU架构原理图

CPU架构原理图1 该图展示了内存与CPU的关系,内存分为代码段和数据段,包含进程、指令、数据等;CPU包含控制单元、运算单元、指令计数器、指令寄存器、存储单元等,通过指令地址、操作数地址等箭头连接内存与CPU各部分。

CPU架构原理图2 此图展示了内存与CPU的交互过程,内存分为代码段(含指令1 – 指令n)和数据段(含数据1 – 数据m)。CPU有指令计数器、指令寄存器、控制单元、存储单元、运算单元。内存与CPU通过指令地址、操作数地址交互指令和数据,CPU内各单元间也有控制指令、数据传输。

(二)GPU架构原理图

GPU架构原理图1 这是一张芯片架构图,上方有“Graphics Engine”等模块,中间是“Ultra – Threaded Dispatch Processor”区域,含“SIMD Engines”等,下方有多个“Memory Controller”。各模块以不同颜色区分,有连线表示关系。

GPU架构原理图2 该图是一张显卡架构示意图,有“Setup Engine”“Ultra – Threaded Dispatch Processor”等模块,中间标注有“Unified Shader Core”“800 Stream Processing Units”等,还有“Texture Units”“Render Back – Ends”等组件,底部有多个“Memory Controller”。

(三)CPU与GPU在大模型运行中的原理的原理图

CPU与GPU在大模型运行中的原理的原理图1 此图展示了CPU(APP)、GPU(服务)和SurfaceFlinger合成的工作流程。CPU中UI线程构建OpenGL渲染任务树,RenderThread配置渲染环境、构建命令与GPU通信等;GPU进行顶点处理、像素处理等;SurfaceFlinger负责合成,各部分通过GPU通信中介交互。

CPU与GPU在大模型运行中的原理的原理图2

这是一张展示数据处理流程的示意图。上方有黄色矩形框标注的“Input_data”,表示输入数据,其下方连接蓝色矩形框“CONV POOL FC”,并由蓝色箭头指向右侧绿色椭圆形“GPU”。“CONV POOL FC”下方连接蓝色矩形框“PERMUTE FLATTEN PRIORBOX”,并由蓝色箭头指向右侧蓝色椭圆形“CPU”。最下方是黄色矩形框标注的“Output_data”,表示输出数据。整个流程由上至下展示了数据从输入到输出的处理过程。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇