线程架构

SIMT编程模型的线程层次结构分为两层:

基于SIMT编程模型的程序,在AIV核上执行多个结构相同的线程块,执行的总线程数等于gridDim*blockDim。

gridDim由三维结构dim3来表示,{dimx,dimy,dimz}用于指定3个不同维度的线程块的大小,三维乘积的总数不超过65535,各线程块可通过线程块索引blockIdx进行标识。blockDim也由dim3三维结构表示,三维乘积的总数不超过2048,各线程可通过线程块内线程索引threadIdx进行标识。线程索引的计算示例如下图所示:

底层调度过程中,同一时刻一个AIV只能执行一个线程块任务,每个线程块会被切分成多个Warp。Warp是执行相同指令的线程的集合,每个Warp包含32个线程。每个AIV核包含4个Warp调度器(Warp Scheduler),调度器编号scheduler id为warp id % 4。在每个调度周期内,每个Warp调度器从其需要调度处理的Warp集合中选取一个就绪状态的Warp发射指令。