Potencia el procesamiento de DSP con los motores AMD Versal™ AI Engine

La tecnología Versal AI Engine permite cumplir con los requisitos del procesamiento de señales digitales (DSP) de alto rendimiento 

Los clientes que trabajan en aplicaciones de DSP (Digital Signal Processing, procesamiento de señales digitales) de última generación requieren enormes capacidades de procesamiento que no se implementan de forma eficiente en las arquitecturas de FPGA (Field-Programmable Gate Arrays, matriz de puertas lógicas programable en campo) tradicionales. Las aplicaciones de DSP con uso intensivo de procesamiento, como FIR (finite impulse response, respuesta finita al impulso), FFT y multiplicación matricial general, pueden utilizar cantidades significativas de bloques de DSP y recursos lógicos programables.

La complejidad de este algoritmo puede reducir considerablemente la capacidad de procesamiento general disponible en los dispositivos lógicos programables tradicionales. Simplemente aumentar los bloques de DSP y la lógica programable disponible no es una solución escalable para cargas de trabajo de DSP intensivas, que tienen presupuestos de potencia estrictos. Los motores Versal AI Engine están diseñados para ofrecer una solución de procesamiento más eficiente en estos casos. 

Nuestra biblioteca de videos explicativos ofrece información técnica esencial para empezar.

Proceso de diseño de DSP con motores de IA

El diseño de funciones de DSP de alto rendimiento enfocadas en los motores AMD Versal™ AI Engine se puede realizar mediante las herramientas de desarrollo AMD Vitis™ o el flujo de Vitis Model Composer, a fin de aprovechar las capacidades gráficas y de simulación de la herramienta MathWorks Simulink®. 

En cualquier caso, es crucial asignar la aplicación de DSP en funciones para la implementación en los motores de FPGA o IA o una combinación de la lógica de FPGA y los motores de IA. Esto requiere comprender las capacidades del dispositivo, así como del sistema en general. 

Por lo general, las funciones de procesamiento intensivo se adaptan mejor a la implementación en motores de IA, mientras que las funciones que requieren movimiento/reordenamiento de datos se adaptan mejor a la implementación en FPGA. 

En el ejemplo que se muestra a continuación, el filtrado complejo y las transformadas de Fourier suelen ser más adecuadas dentro de la matriz de motor de IA.

AMD Vitis AI Engine array chart

Una vez que las funciones se identifican claramente como apropiadas para el motor de IA, se pueden implementar en él utilizando cualquiera de las siguientes opciones.

Nota: Un enfoque híbrido en el que se utilicen múltiples opciones de la siguiente lista también es posible. 

Entornos de programación

La plataforma Vitis ofrece dos entornos de programación, que utilizan bibliotecas DSP, API e intrínsecos 

Desarrollar en C/C++

La plataforma Vitis tiene bases de código abierto para algoritmos DSP comunes, funciones y gráficos de dispositivos. Empléalas tal como están para pruebas rápidas o personalízalas según tus necesidades.

Flujo C/C++

Al comenzar con AI Engines para DSP, es muy recomendable iniciar con las funciones de Vitis DSP Library (basadas en C). Si bien la codificación manual puede producir una implementación más optimizada, el uso de los siguientes métodos es la forma más rápida de comenzar con AI Engines para DSP, ya que también ofrece un rendimiento confiable. (Un enfoque híbrido en el que se utilicen múltiples opciones de la siguiente lista también es posible)

Opción 1
Llamada de función de Vitis DSP Library


dsplib::fft::dit1ch::fft_ifft_dit_1ch
 

  • La más fácil de usar de todas
  • Parametrizable
  • Desarrollo más rápido de todos
Opción 2
Programación vectorizada con API de motor de IA

aie::vector<int8_t, sizeTileA> A0 

aie::vector<int8_t, sizeTileA> A1
 

  • Personalizable
  • Desarrollo más rápido
Opción 3
Programación vectorizada con intrínsecas

Acc0 = mac16(acc0, Bbuff, 0, 0x00000000, 8, 0x3120, Abuff0, 0, 0xCC884400, 2, 0x3210);​

Acc0 = mac16(acc0, Bbuff, 32, 0x00000000, 8, 0x3120, Abuff0, 0, 0xCC884400, 2, 0x3210); 
 

  • Personalización completa de bajo nivel 
  • Desarrollo más lento

Las diferentes funciones del motor de IA se interconectan utilizando el código gráfico de C, que es el código de C++ que describe una red de múltiples mosaicos de motor de IA.  

Pasos de simulación y verificación

Diseño Opciones de simulación
Solo AI Engine Simulador x86 (rápido) y simulador AIE (ciclo aproximado)
AI Engine + subsistema PL
(PL codificado usando Vitis HLS)
Simulación funcional de Vitis con MATLAB o Python
AI Engine + subsistema PL
(PL codificado usando lenguaje HDL)
Simulación funcional con banco de pruebas de lenguaje HDL utilizando Vivado™ XSIM
AI Engine + PL + PS Emulación de hardware en Vitis
PS simulado usando QEMU
Simulación de PL utilizando XSIM (banco de pruebas de lenguaje HDL)
AIE simulado usando un simulador de AIE (System C)

Para obtener más información sobre los flujos de simulación, consulta: Guía de diseño de SoC adaptable Versal (UG1273)

Flujo basado en modelos con Vitis Model Composer

El compositor lleva el desarrollo al entorno MATLAB®/Simulink® de MathWorks, en que puedes generar kernels para motores de IA Versal, integrar módulos lógicos programables y simular sistemas.

Flujo de Vitis Model Composer

El uso de Vitis Model Composer permite una interconexión gráfica entre las diferentes funciones del motor de IA. Esta representación gráfica se puede convertir mediante un botón pulsador en el código gráfico de C mediante Vitis Model Composer. La sólida compatibilidad de simulación del entorno de Simulink de MathWorks también se puede aprovechar para verificar el diseño.

Para obtener más información sobre el desarrollo de Versal AI Engine usando Vitis Model Composer, visita la página Desarrollo de Versal AI Engine usando Vitis Model Composer.

Ejemplos y tutoriales de diseño de Vitis GitHub

Implementación de diseño de AMD Vitis

Usa el GitHub de AMD para obtener ejemplos de diseño optimizados, tutoriales y funciones de biblioteca para AI Engines en aplicaciones DSP de alto rendimiento. Estos son diseños de código abierto que se pueden usar para acelerar los ciclos de diseño.

Enlaces de GitHub

Recursos

Videos explicativos

Webinars

Dominar el desarrollo de motores de IA en dispositivos AMD Versal: desde las bases a aplicaciones avanzadas

Descarga la Clasificación de señales múltiples (MUSIC) a los motores Versal AI Engine

Comenzar

Licencias para las herramientas de AI Engine: Compilador y simulador

Si bien el compilador y las herramientas de simulador de AI Engine forman parte del instalador de software de AMD Vitis™, estas herramientas aún requieren una licencia gratuita para su uso. Esta licencia se puede obtener en el sitio de licencias de productos.

Ingresa tus datos y elige la opción “AI Engine Tools License” (Licencia para herramientas de motor de IA).

Accede a las evaluaciones comparativas en las que se contrastan los motores Versal AI Engine con la tecnología de lógica programable anterior

Para ver contrastes directos de evaluaciones comparativas de diseños de solo lógica programable con un diseño de SoC adaptable + motor de IA usando los SoC adaptables AMD Versal, comunícate con ventas o con tu FAE (Field Application Engineer, ingeniero de aplicaciones de campo) para obtener los resultados de las evaluaciones comparativas y los diseños fuente.

Notas al pie
  1. Basado en evaluaciones comparativas de terceros encargadas por AMD al mes de febrero del 2024, en el SoC adaptable AMD Versal con herramientas de diseño Vitis for AI frente a la lógica programable tradicional con el software Vivado y la herramienta Vitis Model Composer, versión 2023.1 en una implementación de FIR (finite impulse response, respuesta finita al impulso) de aplicación de procesamiento de señales. Los resultados promediaron más de tres diseños. Los resultados variarán según las especificaciones del diseño. (VER-034)