欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

cuda程序以及硬件的映射

程序员文章站 2022-06-27 20:38:39
一个网格中,多个块,每个块的大小和维度是一样的,每个线程--->cuda core或者 sp(stream processor)block-->SM。SM 可以调度多个线程块,一个kernel 的各个线程块被分配多个SM, grid 是逻辑层 ,SM 是执行的物理层。每个SM 有自己的共享内存、寄存器 ,L1 cache 以及其他功能的硬件。一个程序的块不能被映射到不同的SM上,一个block 只能被一个SM调度。SM 采用 SIMT采用单指令多线程的架构(将多维t......

cuda程序以及硬件的映射

 

一个网格中,多个块,每个块的大小和维度是一样的,每个线程--->cuda core或者 sp(stream processor)

 block-->SM。

SM 可以调度多个线程块,一个kernel 的各个线程块被分配多个SM, grid 是逻辑层 ,SM 是执行的物理层。每个SM 有自己的共享内存、寄存器 ,L1 cache 以及其他功能的硬件。一个程序的块不能被映射到不同的SM上,一个block 只能被一个SM调度。

 

SM 采用 SIMT采用单指令多线程的架构(将多维thread 排成一维),是以wrap为最小的调度单位,每个线程有独立地址计数器,也有寄存器状态,以及独立的执行路径。线程束中的线程从同一程序地址开始执行,但是可能会遇到不同的分支路径,另外一些线程可能不执行,只能进入等待状态。线程束的分化会造成程序性能的下降。

每个wrap中使用的内存、寄存器资源不能太多,否则,每个Sm上处于活跃状态的wrap会比较少。block 的大小一般设为32的倍数。

本文地址:https://blog.csdn.net/xieshangxin/article/details/108868568