一、 GPU架构,包括硬件架构和软件编程架构

1. 硬件架构:

  1. 核心执行单元是 SM/CU:
名称 NVIDIA AMD
计算簇 SM (Streaming Multiprocessor) CU (Compute Unit)
最小调度单元 Warp = 32 threads Wavefront = 64 threads
向量执行 32 FP ALU / tensor core 64 ALU / MFMA

SM/CU 内部包含:
标量/向量 ALU(FP32/FP16/BF16/INT8)
Tensor Core / Matrix Core (NVIDIA)
MFMA Matrix Core (AMD)
寄存器文件(Register File)
共享内存 / LDS(SRAM)
L1 Cache(可与共享内存融合)

  1. 层次化存储结构:
层级 类型 延迟 带宽 大小
寄存器 SRAM 几个 cycle 极高 每线程几十~上百
Shared Memory / LDS SRAM 10~20 cycles 很高 48–164 KB/SM
L1 Cache SRAM ~20 cycles 128 KB ~ 256 KB
L2 Cache SRAM 数百 cycles 数 MB
HBM/DRAM DRAM 几百 cycles 高但慢于SRAM两个数量级 GB级

GPU 计算性能非常强,但 DRAM 访问极慢,因此一切优化都围绕减少 HBM 访问展开。

  1. 线程模型
抽象层 NVIDIA硬件 意义
Thread 线程 最小执行主体
Warp 32 threads 同步执行,SIMD
Block (CTA) 多个 warp 可共享 shared memory
Grid 多个 block 分派到多个 SM

AMD 类似,只是最小 SIMD 是 wavefront = 64。

  1. . 指令调度与并发

核心思想:GPU 要保持 SM 处于 “满载(high occupancy)” 状态。

如果 kernel:

  1. Tensor Core / MFMA(矩阵计算)

都是专门的矩阵-FMA 并行阵列,用于:

2. 软件编程架构

软件编程架构分为:

  1. 驱动层:

NVIDIA:

AMD:

作用:
创建 GPU 上下文
分配显存
启动 kernel
管理 stream & events
设备同步

cudaMalloc, cudaMemcpy, hipMemcpy 都属于这一层。

  1. 编程层:CUDA/HIP

明确暴漏 Grid/Block/Thread
共享内存用 shared 管理,区分 host/device/global 程序,asm 嵌入,内置函数等。

  1. Triton

Triton(软件层 DSL)
Triton,它把 GPU 编程抽象成:
program = tile/block
内部没有 warp 的概念,由编译器负责
显式创建向量维度 (tl.arange)
自动做 coalescing / vectorization / pipelining
Triton 的抽象让注意力类 kernel 简化到几十行即可获得接近 CUTLASS 水平性能。

  1. 高层库

CUTLASS:
它是 CUDA C++ 的 GEMM 内核生成器。

特征:
可控 tile 尺寸、warp shape、thread shape
Tensor Core 配置
epilogue(softmax/activation/bias)可融合
性能接近 cuBLAS

cuBLAS:
cuBLAS 是黑盒高性能库
CUTLASS 是你自己构建内核的框架,可以扩展

cuTile:
cuTile / TileLang 更抽象,让你只描述算法分块

cuDNN:
深度学习算子库

  1. Runtime 调度(Streams / Graphs)

GPU kernel 的调度包括:

3. 硬件架构/软件架构对应:

软件抽象 硬件实体
threadIdx.x ALU lane
warp SIMD 执行单元
block (CTA) SM(调度单位)
shared memory SM 内部 SRAM
register RF(寄存器文件)
global memory HBM
Tensor Core API GPU 的矩阵加速单元