CUDA 是什么:SIMT 执行模型与核心术语
CUDA 是什么:SIMT 执行模型与核心术语
CUDA 是 NVIDIA 的并行计算平台与编程模型,用 C/C++ 的扩展语法把大规模数据并行任务交给 GPU 上成千上万个线程执行。它不是图形 API,也不是把 CPU 线程池换个地方跑:GPU 采用 SIMT(Single Instruction Multiple Threads,单指令多线程)方式执行,一组线程锁步跑同一条指令,靠大量常驻线程在访存等待时切换来掩盖延迟,而不是靠大缓存和乱序执行。
与相邻方案的区别:CPU 多线程是少数强核加多级大缓存,擅长分支复杂、逻辑串行的任务;OpenCL 是跨厂商开放标准,写法更啰嗦,生态弱于 CUDA;HIP 是 AMD 提供的迁移路径,语法与 CUDA 高度接近;SYCL / oneAPI 面向跨厂商异构。落到 AI 推理与训练上,CUDA 是基础层,TensorRT、cuBLAS、cuDNN、FlashAttention 这些库都构建在它之上。懂一点 CUDA,才能读懂性能剖析工具给出的那些指标。
术语表:
- host / device:CPU 侧与 GPU 侧,两者的内存空间彼此独立,需要显式拷贝。
- kernel:在 GPU 上并行执行的函数,用
__global__修饰,由 host 侧启动。 - grid / block / thread:三层线程组织。grid 由 block 组成,block 由 thread 组成。block 内的线程可以通过 shared memory 与
__syncthreads()协作,block 之间不能直接同步。 - warp:32 个线程为一组,是调度与执行的最小单位,也是理解一切性能问题的起点。
- SM:流式多处理器,block 会被分配到 SM 上驻留执行,SM 的数量决定了并行规模。
- occupancy(占用率):SM 上实际驻留的 warp 数与硬件上限的比值,直接影响掩盖访存延迟的能力。
- 分支发散:同一个 warp 里的线程走了不同分支,硬件会把各分支串行执行,其余线程空转。

