Guía de cálculo de occupancy en la AMD MI355X (CDNA4) desde los principios básicos

Fuentes: Occupancy Math on the AMD MI355X (CDNA4): A From-First-Principles Guide

Esta guía técnica explica, desde los principios fundamentales, cómo calcular manualmente la occupancy —la fracción de ranuras de wavefront ocupadas en un SIMD— en la GPU AMD Instinct MI355X, basada en la arquitectura CDNA4 (gfx950). En MI355X, la occupancy máxima por kernel queda determinada por el primero de cuatro recursos que se agote: registros vectoriales (VGPR), registros escalares (SGPR), memoria local de datos (LDS) o ranuras de workgroup y barrera. Cada limitador se calcula dividiendo un presupuesto fijo de hardware entre el consumo del kernel, por lo que el techo de occupancy se puede obtener a mano a partir del binario. El archivo de VGPR dispone de 512 entradas por carril, compartidas entre registros regulares y acumuladores (AccVGPR), y no constituye un pool separado.

El artículo recorre la arquitectura de la MI355X —ocho XCD con 256 unidades de cómputo en total, 32 por XCD, a 2,4 GHz, con 288 GB de HBM3E y 256 MB de Infinity Cache—, se detiene en el Compute Unit (cuatro SIMD de 64 carriles, 160 KB de LDS compartida) y traduce la terminología de AMD a la de NVIDIA (wavefront frente a warp, SIMD frente a sub-partición, workgroup frente a thread block).

La parte central demuestra los cálculos con ejemplos de kernels MXFP8 GEMM y contrasta la teoría con mediciones de rocprofv3. El hallazgo clave es que maximizar la occupancy rara vez es el objetivo correcto: un barrido MFMA medido muestra que el matrix core se mantiene en torno al 97 % del pico incluso cuando la occupancy cae a una fracción del máximo, porque su rendimiento depende de la utilización de la matriz, no de cuántas waves están residentes. Conceptos como la ley de Little y el paralelismo a nivel de instrucción (ILP) explican por qué un kernel con baja occupancy puede seguir siendo rápido.