En los últimos años, los eufemismos inteligencia artificial, Deep Learning y demás palabras mágicas no han sido otra forma de llamar al añadido en el hardware de un nuevo tipo de unidad capaz de hacer operaciones matemáticas con matrices a gran velocidad. Pues bien, contra todo pronóstico, AMD ha ocultado un detalle en sus procesadores gráficos con arquitectura RDNA 3 que tiene que ver con ello. Son las llamadas instrucciones WMMA y traen un cambio muy importante, hasta ahora inédito en las tarjetas gráficas para gaming de AMD.
Los que seáis más veteranos recordaréis como en los años 90 la palabra multimedia resonaba tanto como hoy en día la de inteligencia artificial. ¿El motivo? El añadido de unidades SIMD en los procesadores de antaño. A día de hoy esta ocurriendo lo mismo con el cálculo de matrices y la inteligencia artificial. Pues bien, AMD habría adoptado por fin estas unidades en sus GPU domésticas, tras cuatro años después desde que NVIDIA lanzará sus primeras RTX con ellas.
Una unidad para operar con matrices
Una de las puntas de lanza de NVIDIA en sus GPU es el añadido en las RTX de los llamados Tensor Cores, los cuales no son otra cosa que un tipo de ejecución llamada array sistólico. ¿Su principal ventaja? La capacidad de operar con matrices de datos a gran velocidad. Este tipo de estructuras matemáticas son cruciales para los algoritmos de inteligencia artificial y para poder guardar grandes cantidades de datos. ¿Qué es una imagen por ejemplo? Una matriz de píxeles.
Dado que una matriz no es más que un vector de N dimensiones, hasta el momento para realizar dichas operaciones se utilizaban las unidades vectoriales o SIMD, que pueden ejecutar una misma instrucción en paralelo con varios operandos distintos. Sin embargo, pese a que pueden ejecutar dichas instrucciones, son mucho más lentas en hacerlo que lo que llamamos un array sistólico.
Pues bien, con NVIDIA teniendo sus unidades Tensor e Intel habiendo añadido sus XMX, lo cual no son más que nombres comerciales para el mismo concepto, la que faltaba era AMD. En todo caso, la ausencia ha sido más bien en sus GPU para los ordenadores domésticos y estaciones de trabajo. Ya que en el mundo de la computación de alto rendimiento o HPC, sus AMD Instinct basadas en CDNA llevan tiempo con estas unidades.
WMMA, Matrix Core Units para las RX 7000
El nombre que AMD les da a sus arrays sistólicos es el de Matrix Core Units, las cuales han sido inéditas en RDNA y RDNA 2. Pues bien, después de varios rumores en los que se decía que AMD no apostaría por este tipo de unidades en sus GPU, resulta que en el repositorio en LLVM hay referencias de la inclusión de instrucciones WMMA para GFX11, que es como AMD llama a la arquitectura RDNA 3 de sus futuras GPU como las RX 7000 y procesadores como Phoenix.
En el repositorio las siglas WMMA son descritas como Wave Matrix Multiply Accumulate y se describen como:
Estas operaciones realizan multiplicaciones y sumas de matrices en la forma de: D = A*B+C.
Lo cual nos recuerda a la estructura definida por NVIDIA para describir sus Tensor Cores. Es más, como podéis ver, la empresa rival de AMD también usaba el concepto WMMA. Además, la adopción en las GPU de AMD de este tipo de unidades se revela con un vistazo en diagonal del código fuente.
- La matriz resultante (D) dada en coma flotante de 32 bits o 16 bits y las 3 matrices operando en coma flotante de 16 bits o en formato BFLOAT16.
- El valor final de D estando en enteros de 32 bits, y A, B y C en enteros de 4 u 8 bits.
Por lo que en resumen: nos encontramos que AMD ha añadido las instrucciones WMMA en RDNA, las cuales hacen referencia al añadido de una unidad para operar con matrices, es decir, por fin las GPU de AMD tendrán sus propios Tensor Cores. Las cuales son altamente utilizadas en el mundo de la inteligencia artificial y eran uno de los elementos