理解CUDA中的thread,block,grid和warp
之前写在知乎上的,现在放在自己的网站上。(https://zhuanlan.zhihu.com/p/123170285)
本篇文章是从网上一些文章中整理得到的,具体请查看参考文章。
从硬件上看
SP(Streaming Processor):流处理器, 是GPU最基本的处理单元,在fermi架构开始被叫做CUDA core。
SM(Streaming MultiProcessor):一个SM由多个CUDA core组成,每个SM根据GPU架构不同有不同数量的CUDA core,Pascal架构中一个SM有128个CUDA core。
SM还包括特殊运算单元(SFU),共享内存(shared memory),寄存器文件(Register File)和调度器(Warp Scheduler)等。register和shared memory是稀缺资源,这些有限的资源就使每个SM中active warps有非常严格的限制,也就限制了并行能力
从软件上看
thread: 一个CUDA的并行程序会被以许多个thread来执行
block: 数个thread会被群组成一个block,同一个bl ...