GCN arch

423 words

由于我要在成都超算平台上做一个河流动力学模型 GPU 大规模并行计算的项目,因而需要了解相关的硬件结构。成都超算的 DCU 产品叫 Pre-Wukong DCU,架构信息是 gfx906,刚好对应 AMD MI50 这一代产品,所以我决定读一下 AMD 官方的 “Vega” 7nm ISA Reference guide

设备信息通过以下shell指令获取

1
2
srun -N 1 --gres=dcu:1 rocm-smi --showproductname
srun -N 1 --gres=dcu:1 rocm-smi --showmeminfo vram

术语

  • GCN Processor (Graphics Core Next shader processor) 是支持标量和向量运算的 ALU

  • Work-item 工作的一个最小单元

  • Wavefront 是并行运行于单个 GCN 上的 64 个 work-item 的集合

  • Workgroup 是一组 wavefront,它们能够快速地进行同步操作,也能通过Local Data Share 共享数据

程序组织

在 GCN 处理器上运行的程序是 GCN kernel,从程序员视角来看 kernel 函数的执行是 SIMT 的,即对每个 work-item apply 一个 kernel 函数。但实际上 GCN 处理器在每个 wavefront 处理 64 个 work-item,GCN 处理器含有一个标量 ALU 和一个向量 ALU,标量 ALU 对一个 wavefront 处理一个值(即每个 work-item 需要的处理相同),向量 ALU 处理不同的值。在存储结构上,GCN 处理器有局部共享内存、标量内存、向量内存。

从这一点上来看,vega7 架构像是在 NV 的 CUDA 和寒武纪的 BANGC 中间,在硬件上使用 Scalar+Vector 的 SIMD 范式,而在软件上又通过 EXECute mask 实现类似 SIMT 的编程模型(使用统一 pc 以及一个 mask 的技术神似 P100 及以前的 NV GPU)。