2.3 Occupancy 与资源分配
Occupancy 衡量 SM 上实际活跃 Warp 数与理论最大值的比例,是调优 CUDA Kernel 的核心指标之一。本文讲解 Occupancy 的定义、计算方法、三大限制因素(寄存器/共享内存/Block 大小),以及为什么 Occupancy 并非越高越好——真正的目标是在延迟隐藏与资源利用之间找到平衡点。
Occupancy 衡量 SM 上实际活跃 Warp 数与理论最大值的比例,是调优 CUDA Kernel 的核心指标之一。本文讲解 Occupancy 的定义、计算方法、三大限制因素(寄存器/共享内存/Block 大小),以及为什么 Occupancy 并非越高越好——真正的目标是在延迟隐藏与资源利用之间找到平衡点。
内存访问效率是 CUDA Kernel 性能最大的杠杆。本文深入讲解合并访问(Coalesced Access)的原理与判定方法、共享内存 Bank Conflict 的成因与 Padding 解决方案,以及向量化加载(float4/int4)提升带宽利用率的实战技巧。
深入理解 GPU 最核心的执行单元——Warp。本文从 SIMT 执行模型出发,详解 Warp Divergence 的性能代价与规避策略,掌握 Warp Shuffle 实现线程间零延迟数据交换,为编写高效 CUDA Kernel 奠定执行层面的认知基础。
通过一个完整的向量加法案例,走通 CUDA 编程的全流程:内存分配、数据传输、Kernel 编写、错误检查和性能测量,并对比 CPU 与 GPU 的执行效率。
理解 CUDA 的多层内存层次是写出高性能 Kernel 的关键。本文详解全局内存、共享内存、寄存器、常量内存和统一内存的特性、适用场景及优化技巧。
深入理解 CUDA 的 Grid/Block/Thread 三级线程层次结构、线程索引计算方法和 Kernel 启动配置策略,这是编写高效 GPU 程序的核心基础。
从零搭建一套完整的 CUDA 开发环境,包括驱动安装、Toolkit 配置、编译工具链和 IDE 集成,让你在 10 分钟内写出并运行第一个 GPU 程序。
Reduce(规约)是 GPU 编程中最基础、也最能体现并行思维的算子之一。本文从最朴素的实现出发,逐步引入 Warp 级原语、向量化访存、多元素处理等优化手段,每一步都有性能对比和原理解析,帮你真正搞懂”怎么写出快的 Kernel”。
模型训练的本质是一场”寻找最低点”的旅程,而优化器就是你的向导。本文从梯度下降出发,系统讲解 SGD、Momentum、AdaGrad、RMSProp、Adam 等主流优化器的原理与适用场景,帮你在实践中做出正确的选择。
Transformer 处理的不是原始文字,而是向量。在一段文字变成模型输入之前,需要先经过两道关键变换:Tokenization(分词) 和 Embedding(词嵌入)。这两步看似简单,却决定了模型能”看到”什么、能”理解”什么——是整个 Transformer 流水线的起点,也是语言建模的基础认知。