跳转至

Ch16 SIMD 与 GPU 编程 · 闪卡 (Anki 导出)

80 张卡,涵盖 8 节核心。Anki Deck: Ch16 SIMD 与 GPU


Section A: 基础

Card 1

Front: SIMD 含义? Back: Single Instruction, Multiple Data — 一条指令操作多个数据。AVX-512 同时算 16 个 FP32。

Card 2

Front: SIMT 含义? Back: Single Instruction, Multiple Threads — GPU 的 SIMD 变体, 32 thread 同指令 (NVIDIA)。

Card 3

Front: Roofline 模型两个区域? Back: 计算受限 (compute-bound) 和 带宽受限 (memory-bound)。

Card 4

Front: 内存墙 (Memory Wall)? Back: 算力增长 > 内存带宽增长, 性能被 IO 限制。

Card 5

Front: Tensor core 算的什么? Back: 矩阵乘, FP16/BF16/INT8/FP8。


Section B: ARM NEON

Card 6

Front: NEON 寄存器宽度? Back: 128 bit, 16 个 Q 寄存器 (Q0-Q15)。

Card 7

Front: ARM SVE 是什么? Back: Scalable Vector Extension, 可变长度 SIMD (128-2048 bit)。

Card 8

Front: Apple Silicon SIMD? Back: ARM NEON + AMX (矩阵扩展)。

Card 9

Front: NEON intrinsics 示例? Back: vfloat32x4_t a = vld1q_f32(ptr); vfloat32x4_t b = vmulq_f32(a, a);

Card 10

Front: ARM Helium 是什么? Back: M85 内核的 M-Profile Vector Extension (MVE), IoT SIMD。


Section C: x86 AVX

Card 11

Front: AVX-512 寄存器? Back: ZMM0-Z31, 512 bit 宽。

Card 12

Front: AVX-512 mask 操作? Back: k0-k7 mask 寄存器, 控制 lane 是否生效。

Card 13

Front: FMA 指令? Back: Fused Multiply-Add, 一次完成 a*b+c。

Card 14

Front: AVX vs AVX-512 宽度? Back: AVX 256 bit (YMM), AVX-512 512 bit (ZMM)。

Card 15

Front: 编译器启用 AVX-512? Back: gcc -mavx512f -O3。


Section D: GPU CUDA

Card 16

Front: CUDA warp 大小? Back: 32 threads。

Card 17

Front: CUDA block / grid? Back: block = 多个 warp (32-1024 threads), grid = 所有 blocks。

Card 18

Front: CUDA 内存层级? Back: Register > Shared > L1 > L2 > Global (HBM)。

Card 19

Front: 什么是 coalesced access? Back: warp 32 threads 访问连续 128 字节, 一次内存事务。

Card 20

Front: shared memory bank conflict? Back: shared memory 分 32 bank, 同 bank 同时访问冲突。


Section E: CUDA 进阶

Card 21

Front: Tensor core 算力 (H100)? Back: FP16 ~1000 TFLOPS, FP8 ~2000 TFLOPS。

Card 22

Front: occupancy 含义? Back: 活跃 warp 数 / SM 最大 warp 数。影响延迟隐藏。

Card 23

Front: Flash Attention 核心优化? Back: 分块 attention, 不存中间结果, 减少 IO。

Card 24

Front: CUDA kernel launch overhead? Back: 5-10 μs。少 launch, 多 batch。

Card 25

Front: CUDA stream 是什么? Back: GPU 命令队列, 不同 stream 可并行。


Section F: Triton

Card 26

Front: Triton 优势? Back: Python-like, 自动向量化, 自动调优, 易写 CUDA。

Card 27

Front: Triton @triton.jit 用途? Back: 装饰 JIT 编译 kernel。

Card 28

Front: Triton autotune? Back: 自动搜索 block size / num_warps 等配置。

Card 29

Front: Triton block size 范围? Back: 通常 128-1024, 取决于 kernel。

Card 30

Front: Triton 编译目标? Back: PTX (NVIDIA), 支持 A100/H100/AMD。


Section G: TPU

Card 31

Front: TPU 脉动阵列? Back: dataflow 架构, 数据流动通过 MXU, 高吞吐 matmul。

Card 32

Front: TPU MXU 规模? Back: 128×128, 一周期算 16384 个乘加。

Card 33

Front: TPU pod 大小? Back: v4 pod = 4096 chips, >1 ExaFLOPS。

Card 34

Front: TPU 与 GPU 区别? Back: TPU 脉动 (systolic), GPU SIMT。TPU 高吞吐, GPU 灵活。

Card 35

Front: XLA 与 TPU? Back: XLA 是 TPU 的编译器, 把 PyTorch / TF 编译成 TPU 程序。


Section H: RISC-V

Card 36

Front: RISC-V 是什么? Back: 开放指令集架构 (ISA), 免版税, 可定制。

Card 37

Front: RISC-V V 扩展? Back: 向量扩展, 128-2048 bit 可变长 SIMD。

Card 38

Front: RISC-V 主要厂商? Back: SiFive, 平头哥 (玄铁), Andes, 芯来。

Card 39

Front: RISC-V 在 AI 边缘? Back: 低功耗 + 可加 AI 扩展, 用于 IoT 推理。

Card 40

Front: RISC-V 与 ARM 区别? Back: RISC-V 开放, ARM 授权; RISC-V 生态新, ARM 成熟。


Section I: Vulkan

Card 41

Front: Vulkan 是什么? Back: Khronos 跨平台 GPU API, 替代 OpenGL。

Card 42

Front: Vulkan Compute 用途? Back: GPU 通用计算, 跨平台 (Windows / Linux / Android / macOS via MoltenVK)。

Card 43

Front: SPIR-V 是什么? Back: Vulkan 标准中间表示, 类比 CUDA PTX。

Card 44

Front: Vulkan workgroup? Back: 类似 CUDA block, 多个 invocation。

Card 45

Front: Vulkan 与 CUDA 区别? Back: Vulkan 跨平台, 仅 NVIDIA; CUDA 仅 NVIDIA 性能更好。


Section J: 跨章

Card 46

Front: Ch13 §02 架构与 Ch16 §01 硬件? Back: Ch13 教原理, Ch16 教 SIMD/GPU 编程。

Card 47

Front: Ch17 §02 LLM 推理与 Ch16 §04/05? Back: LLM 推理用 CUDA / Triton 加速。

Card 48

Front: Ch15 §05 K8s 与 Ch16 §07 Vulkan? Back: K8s 调度 Vulkan 跨平台 GPU。

Card 49

Front: Ch07 §04 Transformer 与 Ch16 §04 Flash Attention? Back: Flash Attention 是 Transformer 的 CUDA 优化版。

Card 50

Front: Ch05 概率与 Ch16 量化? Back: 量化导致精度损失, 概率分布变化。


Section K: 现实应用

Card 51

Front: PyTorch 后端用 SIMD? Back: ATen 库用 AVX-512 / NEON 加速 tensor ops。

Card 52

Front: LLM 推理用 Flash Attention? Back: 是, 节省显存, 加速 attention。

Card 53

Front: Triton 比 CUDA 简单多少? Back: 50% 代码量, 自动向量化, 性能接近。

Card 54

Front: TPU 用于哪些服务? Back: Google Cloud TPU v4 / v5e, 用于 Gemini / PaLM 训练。

Card 55

Front: 边缘 LLM 用什么? Back: Llama.cpp + RISC-V/ARM + 量化 (INT4)。


Section L: 工程

Card 56

Front: 如何测试 SIMD 加速? Back: benchmark (perf stat), 验证数值一致性。

Card 57

Front: 内存对齐要求? Back: 32 / 64 字节, 否则性能下降。

Card 58

Front: CUDA 同步方式? Back: cudaDeviceSynchronize(), cudaStreamSynchronize()。

Card 59

Front: NVIDIA Nsight Compute? Back: ncu, kernel 级 profile (SM 利用率, 内存带宽)。

Card 60

Front: profile 工作流? Back: nvtx + nsys (粗) + ncu (细)。


Section M: 错误避免

Card 61

Front: SIMD 数据不对齐后果? Back: 段错误或性能下降。

Card 62

Front: CUDA bank conflict 后果? Back: 性能下降 2-32 倍。

Card 63

Front: occupancy 误区? Back: 100% 不一定最快, 取决于 kernel。

Card 64

Front: 量化 INT4 风险? Back: 精度损失, 可能影响输出质量。

Card 65

Front: Triton 不适用场景? Back: 极端优化需求 (用 CUDA), 跨平台异构 (用 MLIR)。


Section N: 进阶

Card 66

Front: CUTLASS 是什么? Back: NVIDIA 开源 GEMM 库, 模板化 CUDA。

Card 67

Front: Helion 是什么? Back: PyTorch 2024 推出的 Python-like kernel DSL。

Card 68

Front: MFU 含义? Back: Model FLOPS Utilization, 实际 / 理论 FLOPS 比。

Card 69

Front: TensorRT 是什么? Back: NVIDIA 推理优化器, 图融合 + 量化。

Card 70

Front: ROCm 是什么? Back: AMD GPU 平台, 对标 CUDA。


Section O: 历史

Card 71

Front: CUDA 起源? Back: NVIDIA, 2007, 让 GPU 通用计算。

Card 72

Front: AVX-512 起源? Back: Intel Xeon Phi (2012), 后续主流化。

Card 73

Front: NEON 起源? Back: ARM, 2004, ARMv7 加入。

Card 74

Front: TPU 起源? Back: Google, 2016 (内部), 2018 Cloud TPU v2。

Card 75

Front: Triton 起源? Back: OpenAI, 2018 (论文), 2019 开源。

Card 76

Front: RISC-V 起源? Back: UC Berkeley, 2010, Krste Asanović。

Card 77

Front: Vulkan 起源? Back: Khronos, 2016, OpenGL 后继。

Card 78

Front: Flash Attention 起源? Back: Tri Dao, 2022 (FA), 2024 (FA3)。

Card 79

Front: AVX-10 起源? Back: Intel, 2023, 统一 AVX-512 与 AVX-2。

Card 80

Front: 一句话总结 Ch16。 Back: SIMD 与 GPU 编程 = AI 性能内功。覆盖 §00 C++/框架 + §01 硬件 + §02 ARM NEON + §03 x86 AVX + §04 CUDA + §05 Triton/TPU + §06 RISC-V + §07 Vulkan。是 AI 性能工程师必学。