流多处理器(Streaming Multiprocessor,简称SM)是NVIDIA GPU的基本计算单元。理解SM的结构和功能对于最大限度地利用GPU的计算能力非常重要。
SM是一种单指令多线程(SIMT)架构的处理器,类似于单指令多数据流(SIMD)的特点,含有指令发射单元及若干个流处理器(Streaming Processor, SP)、标量处理器(Scalar Processor, SP)、特殊函数处理器(Special Function Unit, SFU)以及可快速访问的共享存储器。每个SM由多个流处理器组成,这些流处理器拥有独立的寄存器和指令指针,并且共享一套取指和发射单元、常量缓存、纹理缓存以及共享内存。
在CUDA编程模型中,当主机CPU上的CUDA程序调用kernel网格时,网格的块被枚举并分发到具有可用执行能力的多处理器上。一个线程块的线程在一个SM上并发执行,多个SM可以同时处理不同的任务。此外,SM可以完成线程的创建和调度,而线程的执行则由流处理器SP完成。
总结来说,流多处理器是NVIDIA GPU的核心计算单元,负责执行CUDA线程,通过其复杂的硬件结构和并行计算能力,能够高效地进行大规模数据处理和计算