LogoCookLLM文档
LogoCookLLM文档
首页CookLLM

原理精讲

词元化
Tokenization 基础BPE 算法详解GPT 系列 TokenizerBPE 训练工程化
模型架构
Transformer LM
从 token ids 到 logitsEmbedding 与 LM Head
Attention 机制
Self-Attention 到 GQAAttention Sink
位置编码
位置编码基础RoPE 数学推导RoPE 代码实现长度外推
GPU 编程基础
GPU 架构基础张量布局Triton 入门:向量加法
FlashAttention
Flash Attention 原理详解从朴素实现到 Auto-TuningBlock Pointer 与多维支持Causal Masking 优化Grouped Query Attention反向传播实现
分布式训练
数据并行ZeRO 优化器全分片数据并行张量并行流水线并行多维混合并行
推理优化
KV CacheContinuous BatchingPagedAttention

动手训练

概述
预训练
预训练数据Tokenizer 训练模型架构数据流水线训练循环监控与验证
X (Twitter)
系统工程GPU 编程基础

GPU 架构基础

会员专享

深入理解 GPU 的设计哲学、SIMT 编程模型以及硬件层级映射,建立并行计算的物理直觉。

在权益中心获取代码

核心矛盾:延迟 vs 吞吐

在开始写第一行 CUDA 代码之前,我们需要先调整一下大脑的"计算模式"。

CPU 和 GPU 虽然都是为了计算而生,但它们解决的是完全不同的物理问题。这就好比法拉利与公交车的区别:

  • CPU (Latency Oriented):为了低延迟而设计。它拥有巨大的缓存(Cache)和极其复杂的控制逻辑(分支预测、乱序执行)。它的目标是尽快完成一个必须串行执行的任务。
    • 场景:操作系统调度、逻辑复杂的业务代码。
  • GPU (Throughput Oriented):为了高吞吐量而设计。它砍掉了大部分控制逻辑和缓存,把晶体管全用来造计算单元 (ALU)。它的目标是同时处理海量的数据。
    • 场景:图形渲染、矩阵乘法、深度学习训练。

CPU vs GPU 异构架构

异构计算 (Heterogeneous Computing)

GPU 并不是一个能独立运行的计算平台,而必须视为 CPU 的协处理器 (Coprocessor)。

当我们谈论"GPU 并行计算"时,实际上是指 CPU + GPU 的异构计算架构:

  • Host (主机端):CPU 及其内存。负责复杂的逻辑控制、IO 读取和任务调度。
  • Device (设备端):GPU 及其显存。负责密集型的并行计算任务。
  • 通信桥梁:两者通过 PCIe 总线 连接。

瓶颈预警:PCIe 总线的带宽(通常几十 GB/s)远远低于 GPU 内部显存的带宽(通常几 TB/s)。因此,频繁地在 Host 和 Device 之间搬运数据是性能最大的杀手。编写高效内核的第一原则就是:让数据留在 GPU 上。

晶体管经济学

直观理解: 如果要把 100 块砖从 A 搬到 B:

  • CPU 像是一辆法拉利,速度极快,一次搬 2 块,来回跑 50 趟。
  • GPU 像是一群蚂蚁(或者一辆慢速大卡车),速度不快,但一次能搬 100 块,跑 1 趟就搞定。

晶体管经济学与任务分工

从硬件图上看,CPU 的芯片大部分面积是 Control 和 Cache,只有少部分是计算核心。而 GPU 几乎整个芯片都是绿色的计算单元 (ALU)。这种物理结构的差异决定了它们的分工:

特性CPUGPU
核心数量较少 (几个到几十个)众多 (数千个)
擅长任务控制密集型 (逻辑复杂、分支多)计算密集型 (数据并行、矩阵运算)
线程特性重量级 (上下文切换开销大)轻量级 (极速切换,用于掩盖延迟)

这意味着:GPU 不擅长做复杂的逻辑判断(if-else),但非常擅长做在大规模数据上重复同样的计算。

因此,CPU+GPU 的异构平台正好可以优势互补:

  • CPU:负责处理逻辑复杂的串行程序,指挥整个流程。
  • GPU:重点处理数据密集型的并行计算程序,发挥海量核心的算力。

从图形到 AI:算力的进化

为什么 GPU 会在今天统治 AI 领域?这不仅仅是因为核心多。

摩尔定律的终结与并行化

随着摩尔定律(Moore's Law)逼近物理极限,单纯靠增加晶体管密度来提升单核性能变得越来越难。图灵奖得主 Hennessy & Patterson 指出,未来的计算性能增长将主要依赖于 特定领域的架构(Domain Specific Architectures)。

GPU 正是这种理念的先行者:既然无法让一个工人跑得更快(延迟瓶颈),那就雇佣一万个工人一起搬砖(吞吐量胜利)。

CUDA:通用计算的钥匙

2007 年,NVIDIA 发布 CUDA,这是一个里程碑时刻。它允许工程师使用类似 C 语言的代码指挥 GPU,而不再需要伪装成图形渲染任务。这开启了 GPGPU (General-Purpose Computing on GPU) 的时代。

Tensor Core:为 AI 而生的"核"

在现代 NVIDIA GPU(Volta 架构之后)中,除了一般的计算核心(CUDA Core),还加入了一种专门为深度学习设计的 Tensor Core。

  • CUDA Core:精通通用的标量运算(如 float32 加减乘除)。
  • Tensor Core:只做一件事,但做得快到极致——矩阵乘累加(Matrix Multiply-Accumulate, D=A×B+CD = A \times B + CD=A×B+C)。它通常使用混合精度(Mixed Precision),在一次时钟周期内完成巨大的计算量。

这也是为什么在 LLM 推理和训练中,我们总是强调要“用满 Tensor Core”。

登录以继续阅读

这是一篇付费内容,请登录您的账户以访问完整内容。

GPU 编程基础

入门 CUDA 与 Triton,写出高效的 GPU Kernel

张量布局

深入理解张量在内存中的物理布局,Strides,View 与 Reshape 的区别,以及梯度追踪机制。

目录

核心矛盾:延迟 vs 吞吐
异构计算 (Heterogeneous Computing)
晶体管经济学
晶体管经济学与任务分工
从图形到 AI:算力的进化
摩尔定律的终结与并行化
CUDA:通用计算的钥匙
Tensor Core:为 AI 而生的"核"
SIMT:单指令多线程
告别循环思维
为什么需要边界检查?
硬件层级:Grid, Block 与 Thread
层级映射
查询硬件限制
解决规模问题:全局索引计算
多维映射:走向矩阵计算
二维索引计算
为什么这很重要?
总结