AMD ha dado a conocer una noticia bastante interesante al publicar el código fuente del controlador para sus unidades con motor basado en la arquitectura XDNA, que está diseñado para acelerar cálculos relacionados con el aprendizaje automático y el procesamiento de señales, conocido como NPU (unidades de procesamiento neuronal).
Esta NPU, basada en la arquitectura XDNA, se encuentra disponible en las series 7040 y 8040 de procesadores AMD Ryzen, así como en los aceleradores AMD Alveo V70 y SoC AMD Versal y con este paso AMD brinda acceso al funcionamiento interno de estos a desarrolladores.
Esta serie de procesadores fueron introducidos en año pasado y APU de la serie Ryzen 7040 «Phoenix», fue la primera en estar equipada con el motor de IA de arquitectura XDNA basado en IP de Xilinx. Este motor tiene la capacidad de acelerar marcos de aprendizaje automático como PyTorch y TensorFlow.
Inicialmente, la compatibilidad con Ryzen AI estaba limitada a Windows. Sin embargo, después de una demostración en junio de 2023, los funcionarios de AMD solicitaron comentarios a la comunidad de Linux en GitHub sobre la posibilidad de admitir la compatibilidad. A pesar de que el hilo de discusión se cerró inicialmente después de tres días, AMD reabrió la recopilación de comentarios en octubre y recibiendo una respuesta de la comunidad de Linux positiva, con más de mil comentarios solicitando soporte para Ryzen AI.
Ahora, en respuesta a las solicitudes de los desarrolladores de la comunidad de Linux, AMD ha lanzado oficialmente el controlador XDNA de código abierto para Linux.
Aunque AMD aún no ha confirmado si los controladores relevantes se fusionarán con la línea principal, este paso representa un avance significativo para los usuarios de Linux que desean aprovechar las capacidades de Ryzen AI en sus sistemas. La liberación del controlador de código abierto demuestra el compromiso de AMD con la comunidad de desarrolladores y su voluntad de responder a las necesidades y solicitudes de los usuarios de Linux.
El conjunto de código publicado incluye:
- Amdxdna.ko: un controlador de bajo nivel para el kernel de Linux que interactúa directamente con el hardware XDNA, lo que permite la comunicación y el control entre el sistema operativo y la NPU.
- Una biblioteca de tiempo de ejecución conocida como complemento «xrt_plugin*-amdxdna», diseñada para aprovechar la interfaz XRT (Xilinx Runtime Library). Esta biblioteca proporciona una interfaz permite que las aplicaciones interactúen con las NPU utilizando la biblioteca de tiempo de ejecución Xilinx (XRT), ademas de que accedan y utilicen los kernels que se ejecutan en el acelerador de hardware de forma eficiente.
La ventaja de XRT radica en su capacidad para proporcionar varios niveles de abstracción, lo que facilita el desarrollo de aplicaciones en una variedad de lenguajes de programación. Desde API de bajo nivel para C/C++ hasta enlaces de alto nivel para Python, así como componentes integrados para trabajar con marcos de trabajo populares de aprendizaje automático como TensorFlow, PyTorch y Caffe.
Sobre el controlador, se menciona que este requiere para ejecutar aplicaciones de IA:
- Procesador:
- Para ejecutar aplicaciones de IA (máquina de prueba): Procesador RyzenAI, ejemplo: Phoenix/Strix
- Cualquier procesador x86 para construir el repositorio (de ser posible se recomienda el procesador AMD)
- Sistema operativo: Ubuntu 22.04
- Kernel de Linux: debe tener habilitado el IOMMO SVA (direccionamiento virtual compartido) compatible con la versión 6.7.
- Paquete base XRT instalado
- Para asegurarse de que el paquete base XRT funcione con el paquete de complemento, es mejor compilarlo desde el submódulo xrt en este repositorio (/xrt)
Para los interesados en el código del controlador, deben saber que esta está escrito en C y C++ y se ha lanzado bajo la licencia GPLv2, lo que significa que es de código abierto y permite a la comunidad de desarrolladores acceder, modificar y distribuir el software de acuerdo con los términos de la licencia.
Finalmente si estás interesado en poder conocer más al respecto, asi como seguir las instrucciones detallas de la compilación del Kernel, te invito a que consultes en el siguiente enlace.