La patente de AMD que me gustaría comentar en esta entrada se titula INTEGRATED VIDEO CODEC AND INFERENCE ENGINE cuyo resumen inicial dice lo siguiente:

Se describen sistemas, aparatos y métodos para integrar un códec de video con un motor de inferencia. Un sistema está configurado para implementar un motor de inferencia y un códec de video mientras comparte al menos una parte de sus elementos de procesamiento entre el motor de inferencia y el códec de video. Al compartir elementos de procesamiento al combinar el motor de inferencia y el códec de video, se reduce el área de silicio de la combinación. En una realización, la porción de elementos de procesamiento que se comparten incluyen un motor de predicción de movimiento / estimación de movimiento / MAC con una pluralidad de unidades de multiplicador-acumulador (MAC), una memoria interna y periféricos. Los periféricos incluyen una interfaz de memoria, un motor de acceso directo a memoria (DMA) y un microprocesador. El sistema está configurado para realizar un cambio de contexto para reprogramar los elementos de procesamiento para cambiar entre los modos de operación. El cambio de contexto puede ocurrir en un límite de trama o en un límite de subtrama.

¿Que es un motor de Inferencia? Pues dejemos que la patente nos lo defina ella misma.

Como es utilizado aquí, un «motor de inferencia» se define como la implementación de un modelo de aprendizaje automático o sistema experto. En una realización, un «motor de inferencia» es una red neuronal convolucional entrenada. En diversas realizaciones, la red neuronal entrenada puede representar una versión podada u optimizada de otra manera de una red neuronal utilizada para el entrenamiento. El sistema también está configurado para compartir al menos una parte de los elementos de procesamiento entre el motor de inferencia y el códec de video. En una realización, los elementos de procesamiento incluyen una pluralidad de unidades de multiplicador-acumulador (MAC). En una realización, la porción de elementos de procesamiento que se comparten incluyen una memoria conectada localmente y un motor de predicción de movimiento / estimación de movimiento / MAC. En una realización, el sistema está configurado para intercalar operaciones de códec de video y operaciones de motor de inferencia cuando se procesa un flujo de video.

Pues es lo que hoy en día es llamado motor de inteligencia artificial, red neural, núcleo Tensor… En realidad estamos hablando de un conjunto de ALUs interconectadas entre si de manera matricial, es decir, en forma de malla, como si fuese una reunión familiar de átomos de carbono.

Cuando la patente habla de unidades del tipo Multiplicador-Acumulador hace referencia a un tipo de ALU o Unidad Aritmético-lógica que realiza la siguiente operación matemática:

(A*B)+C

¿Que tiene de especial? Pues que primero realiza la multiplicación de A*B y luego al resultado le suma C, es decir, es una ALU del tipo multiplicador cuya salida esta conectada directamente a una ALU del tipo sumador. Este tipo de unidad también es llamada MADD (Multiplicador y Sumador donde Add es Suma en Inglés) y si se le coloca una F delante entonces nos marca que trabaja con coma flotante.

¿Y que tiene que ver con los codecs de video? Pues que las unidades MAC son altamente utilizadas para descodificar vídeo y aquí entramos en el tema de la doble funcionalidad, es decir, según el contexto y por limitaciones de espacio utilizar la misma unidad para un trabajo determinado o para otro. Es decir, la misma matriz de unidades MAC que nos sirven para codificar y/o descodificar vídeo la podemos utilizar como si fuese un procesador de IA, teniendo un 2×1.

¿Tiene más secreto la patente? Realmente no, el único diagrama realmente importante es este:

Fijaos que al contrario que los Tensor Cores (en realidad ALUs) de Nvidia, no se encuentran dentro de la misma GPU sino que se encuentran conectados a la estructura 225, que no deja de ser un Northbridge y lo sabemos por el hecho que esta conectado a la memoria. ¿Os acordáis cuando hace unas entradas os dije que AMD de colocar un motor de «inteligencia artificial» a sus sistemas lo haría de la misma manera que ocurre en los smartphones donde los procesadores neurales son colocados como otro procesador cliente del Northbridge principal en vez de dentro de las unidades shader de la GPU? Pues ahí tenéis la declaración de intenciones de AMD en forma de patente.

Esto es todo, como siempre tenéis el Discord y los comentarios de la misma entrada para comentar el contenido de la misma.