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 性能工程师必学。