CUDA程序开发——软硬件层级的调度解读
通过阅读文本你将了解到以下内容:
- CUDA硬件层级
- CUDA软件层级
- 软件层级在硬件层级上的具体调度
关键字:SP、SM、Device、Thread、Block、Grid、Warp
想要编写出高性能的CUDA核函数,研究CUDA的软硬件架构是必不可少的。比如在给每一个核函数配置<<<>>>内的启动参数时,你可能在想到底应该分配多少个block,每个block中应该分配多少个thread,这些参数是试出来的,还是有一定的规律可循。如果你想把这个问题搞清楚,不如先从CUDA的软硬件层级开始了解。
1. 软硬件层级
从硬件方面看,CUDA将GPU的处理单元被分为3个层次:流处理器(Streaming Process,SP)、流多处理器(Streaming Multiprocessor,SM)和设备(Device)。
- SP是最基本的处理单元,也称为CUDA Core,可以将其理解成CPU的一个核,CUDA的kernel函数运行的具体指令就是在SP上处理的。
- SM由多个SP和一些其他资源组成,不同的架构包含的SP的数量不同,Kepler架构一个SM包含192个SP(这里可以理解成一个SM有192个核)。SM通过线程调度器为SP分发线程,实际可执行的线程要比SP个数多很多。
- Device由多个SM和一些其他资源组成,