开发者
资源

抽象硬件架构

AI Core上的SIMT(Single Instruction Multiple Thread,单指令多线程)编程允许指令对数据进行独立寻址,从而支持线程级并行计算。这种方式特别适用于离散访问和复杂控制逻辑等场景,目前仅支持Atlas 350 加速卡

SIMT编程能够简化复杂算子和不规则控制流的开发,通过SIMT编程可以有效缓解包含分支等的发散计算,同时控制程序复杂度。在系统层面,这有助于提高硬件利用率和能效。如图1所示,AI处理器内部有多个Vector Core,每个Vector Core包含计算单元、Share Memory即Unified Buffer、寄存器和堆栈空间,核外的Global Memory是全局内存空间,被所有Vector Core共享。

图1 SIMT抽象硬件架构图

以下是SIMT多线程计算涉及到的硬件资源的说明。

  • 每个线程拥有独立的寄存器和栈空间,用于存储局部数据,寄存器的数量受线程块内线程数量的影响。线程数量越多,每个线程拥有的寄存器数量就越少。
  • Unified Buffer的一部分内存空间作为线程块内所有线程的共享内存(Share Memory),支持线程块内的线程进行数据交互,一部分作为读取Global MemoryData Cache
  • SIMT模式中,读取Global Memory上的数据时,通过Data Cache单元完成数据中转,数据流经由Global Memory到Data Cache,再从Data Cache到寄存器。Data Cache是Unified Buffer中预留的一部分空间,其最大容量为128KB,最小容量为32KB,实际大小由用户自主分配。

若您对上述内容中的线程、线程块等概念不熟悉,建议查阅线程架构了解更多SIMT线程架构知识;同时,您也可以通过阅读内存层级,了解更多内存空间说明及配置方式。