CUDA(compute unified device architecture)是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够对复杂的计算问题做性能速度优化

GPU的主要特点是由非常多算力比较低的核,而CPU是有几个算力比较大的但是数量比较少的核。所以CPU适合串行计算,GPU适合并行计算,而连接CPU和GPU的工具,就是CUDA。

从软件层面来讲,thread -> thread group -> grid -> kernel
从硬件层面来讲,thread processor(SP) -> multiprocessor(MP) -> GPU

CUDA 内存模型
每个线程都有自己register
每个线程都有自己的local memory
每个线程块都有自己的shared memory
每个grid都有自己的global memory
每个grid都有自己的constant memory和texture memory(用于增加3D模型真实感和细节的图像数据块,通常以二维或三维图像的形式存储在GPU的显存中,并通过专用的纹理硬件和缓存来高效读取和处理,从而映射到模型表面,实现丰富的视觉效果)

存储器的速度 register > local memory > shared memory > global memory

在CUDA编程中, Device = GPU,Host = CPU, kernel = function that run on the device
__global__定义一个CPU 上调用,GPU上执行
device GPU上调用,GPU上执行
host CPU上调用,CPU上执行

GPU加速优化策略

  1. 内存访问优化
  2. 共享内存
  3. 计算并行度优化
  4. 核函数优化(避免分支发现、同一线程束内的线程执行相同指令,否则性能下降)
  5. 使用高效库与策略

具体的

  1. 数据与计算优化(数据预处理加速,在GPU上执行数据增强,减少CPU-GPU传输时间)
  2. 模型结构与算法优化(模型部署、剪枝、量化、知识蒸馏,高效模型架构,如Flash Attention)算子优化:CUDA Kernel优化(优化线程组合、优化内存访问、计算与传输并行)
  3. 并行与分布训练(数据并行、单机多卡、多机多卡、DP、DDP)GPU多卡通信对比:PCle、NVLink、RDMA
  4. 混合精度训练
  5. 梯度优化策略
  6. 优化器与学习率策略(自适应优化器AdamW、 LAMB, 学习率调度warmup、cosine annealing等)
  7. 显存管理:Pageable、Pinned、Unified Memory
  8. AI编译器:TVM/XLA编译优化(算子融合、自动调优、内联计算、内存复用)

更多推荐