title: 什么是 CUDA 线程块?

线程块是 CUDA 编程模型 线程层次结构中的中间层级(左图)。一个线程块在单个 流式多处理器 (Streaming Multiprocessor) 上执行(右图,中间)。改编自 NVIDIA 的 CUDA 复习:CUDA 编程模型 和 NVIDIA CUDA C++ 编程指南 中的图表。

线程块是 CUDA 编程模型 (CUDA programming model)线程层次结构 (thread hierarchy) 中的一个层级,位于网格 (grid) 之下但在线程 (thread) 之上。它是 CUDA 编程模型 中与 PTX (Parallel Thread Execution)/SASS (Streaming Assembler) 中具体的协作线程阵列 (cooperative thread array) 相对应的抽象概念。

CUDA 编程模型 中,线程块是向程序员暴露的最小线程协调单元。线程块必须独立执行,因此任何线程块的执行顺序都是有效的,从任意顺序的完全串行执行到所有交错的并行执行。

单个 CUDA 内核 (kernel) 启动会产生一个或多个线程块(以线程块网格 (thread block grid) 的形式),每个线程块包含一个或多个线程束 (warp)。线程块的大小可以是任意的,但通常是线程束 大小的倍数(在所有当前的 CUDA GPU 上为 32)。