GPU架构
GPU的架构是围绕一个流式多处理器(SM)的可扩展阵列搭建的。可以通过复制这种架构的构建块来实现GPU的硬件并行。
SM是GPU中的一个重要组件,负责执行CUDA核函数中的线程块(Thread Block)。每个SM包含多个CUDA核心,可以同时执行多个线程块中的线程,以实现并行计算。
每个CUDA核心有自己的缓存器,也可以访问同一个SM中的共享内存。每个CUDA核心可以并行多个线程。简单来说,一个GPU可以并行的最大线程数=CUDA核心数*一个CUDA核心可以并行的线程数。
CUDA采用单指令多线程(SIMT)架构来管理和执行线程,每32个线程为一组,被称为线程束。线程束中所有线程同时执行相同的指令。每个SM都将分配给它的线程块划分到包含32个线程的线程束中,然后在可用的硬件资源上调度执行。
SIMT架构与SIMD(单指令多数据)架构相似。两者都是将相同的指令广播给多个执行单元来实现并行。一个关键的区别是SIMD要求同一个向量中的所有元素要在一个统一的同步组中一起执行,而SIMT允许属于一个线程束的多个线程独立执行。
一个线程束中的所有线程在相同的程序地址上同时开始执行,但是单独的线程仍有可能有不同的行为。
SIMT架构有三个SIMD所不具备的关键特征
- 每个线程都有自己的指令地址计数器
- 每个线程都有自己的寄存器状态
- 每个线程可以有一个独立的执行路径
一个线程块只能在一个SM上被调度,一旦开始调度,就会保存在该SM上直到执行完成。在同一时间,一个SM可以容纳多个线程块。
SM中的共享内存和寄存器
-
共享内存:
- 共享内存是SM中的一种存储器,用于在线程块中的线程之间共享数据。


4974

被折叠的 条评论
为什么被折叠?



