目录
一、初步认识
SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。以Fermi架构为例,其包含以下主要组成部分:
- CUDA cores
- Shared Memory / L1Cache
- Register File
- Load / Store Units
- Special Function Units
- Warp Scheduler
GPU中每个SM都设计成支持数以百计的线程并行执行,并且每个GPU都包含了很多的SM,所以GPU支持成百上千的线程并行执行。当一个kernel启动后,thread会被分配到这些SM中执行。大量的thread可能会被分配到不同的SM,但是同一个block中的thread必然在同一个SM中并行执行
CUDA采用 Single Instruction Multiple Thread(SIMT,单指令多线程)的架构来管理和执行thread,thread以32个为单位组成一个单元,称作warp。warp中所有线程并行的执行相同的指令。每个thread拥有独立的 指令地址计数器 和 状态寄存器,并且用该线程自己的数据执行指令
SIMT和SIMD(Single Instruction Multiple Data,单指令多数据)类似,SIMT应该算是SIMD的升级版,更灵活,但效率略低,SIMT是NVIDIA提出的GPU新概念。二者都通