Inevitabilidad de la penetración de FPGA en los centros de datos

Inevitabilidad de la penetración de FPGA en los centros de datos
No es necesario ser un desarrollador de chips para programar para FPGA, así como no es necesario ser un programador de C++ para escribir código en Java. Sin embargo, en ambos casos, probablemente no estaría de más.

El objetivo de la comercialización de ambas tecnologías, Java y FPGA, es refutar la última afirmación. La buena noticia para FPGA es que, utilizando los niveles de abstracción y las herramientas adecuadas durante los últimos 35 años, desde que se inventó el dispositivo lógico programable, ha sido cada vez más fácil crear algoritmos y flujos de datos para FPGA en lugar de CPU, DSP, GPU o cualquier otra forma de ASIC especializado.

La asombrosa oportunidad que representa su creación se manifiesta en el hecho de que, justo cuando las CPU ya no podían seguir siendo el único módulo de computación de centros de datos para llevar a cabo múltiples tareas, por diversas razones, las FPGA alcanzaron su eficacia, ofreciendo alta velocidad, baja latencia, capacidades de red y memoria: las heterogéneas capacidades computacionales de los modernos FPGA SoC, que representan sistemas computacionales casi completos. Sin embargo, las FPGA también se combinan eficazmente con otros dispositivos en sistemas híbridos, y, en nuestra opinión, apenas comienzan a encontrar su lugar legítimo en la jerarquía de la computación.

Por lo tanto, organizamos la conferencia The Next FPGA Platform en San José el 22 de enero. Naturalmente, uno de los principales proveedores de FPGA en el mundo y pionero en este campo es la empresa Xilinx. Ivo Bolsens, vicepresidente senior y director técnico de Xilinx, presentó una conferencia y nos habló sobre sus pensamientos actuales sobre cómo Xilinx está ayudando a crear sistemas de computación flexibles para centros de datos.

Los arquitectos de sistemas y programadores han dedicado tiempo para llegar a un centro de datos heterogéneo que presente capacidades computacionales diversas, capaces de manejar tareas de cálculo, almacenamiento y organización de redes. Esto parece necesario debido a que seguir la ley de Moore con el uso de diversos CMOS se vuelve cada vez más difícil. Mientras nuestro lenguaje todavía está atado a la CPU, y seguimos hablando de 'aceleración de aplicaciones', refiriéndonos a mejorar el desempeño de los programas en comparación con lo que se puede lograr solo con las CPU. Con el tiempo, los centros de datos se transformarán en conjuntos de capacidades computacionales, almacenamiento de datos y protocolos que conectan todo, y regresaremos a términos como 'cálculos' y 'aplicaciones'. La computación híbrida se convertirá en una norma, tal como lo son hoy los servicios 'en la nube', que funcionan sobre la base de lo habitual o máquinas virtuales, y en algún momento utilizaremos simplemente la palabra 'cálculos' para describir su funcionamiento. En algún momento – y es probable que la llegada de esta era sea impulsada activamente por FPGA – volveremos a llamar a esto procesamiento de datos.

La implementación de FPGA en los centros de datos requerirá un cambio de mentalidad. 'Al pensar en la forma de acelerar las aplicaciones actuales, es necesario profundizar en los fundamentos de cómo se ejecutan, qué recursos se utilizan y en qué se emplea el tiempo', explica Bolsens. 'Hay que estudiar el problema general que intentas resolver. Muchas aplicaciones que operan hoy en los centros de datos se escalan, capturando una gran cantidad de recursos. Tomemos, por ejemplo, el aprendizaje automático, que utiliza una enorme cantidad de nodos computacionales. Pero al hablar de aceleración, no solo hay que pensar en acelerar los cálculos, sino también en acelerar la infraestructura.'

Por ejemplo, en aquellas operaciones relacionadas con el aprendizaje automático que Bolsens ha estudiado en la práctica, aproximadamente el 50% del tiempo se dedica a transferir datos de un lado a otro entre las capacidades computacionales dispersas, y solo la mitad restante del tiempo se utiliza para los propios cálculos.

Aquí es donde, creo, FPGA puede ayudar, ya que podemos optimizar tanto los aspectos computacionales como los aspectos de transmisión de datos para la aplicación. Y podemos hacerlo a nivel de infraestructura general y a nivel de chip. Esta es una de las grandes ventajas de FPGA, que permiten crear redes de comunicación adaptadas a las necesidades específicas de la aplicación. Al observar los patrones típicos de movimiento de datos en tareas relacionadas con la inteligencia artificial, no veo la necesidad de una arquitectura compleja basada en conmutadores. Se puede construir una red con un gran flujo de datos. Lo mismo se aplica a las tareas de entrenamiento de redes neuronales: se puede construir una red celular con tamaños de paquetes que se adapten a la tarea específica. Con FPGA se puede escalar y ajustar muy precisamente los protocolos de transmisión de datos y la topología del circuito para una aplicación específica. Y en el caso del aprendizaje automático, también está claro que no necesitamos números de punto flotante de doble precisión, y eso también lo podemos ajustar.

La diferencia entre FPGA y CPU o ASIC especializados es que estos últimos se programan en la fabricación, y después de eso ya no puedes cambiar tu opinión sobre los tipos de datos procesados o elementos computacionales, ni sobre la naturaleza del flujo de datos que pasan a través del dispositivo. FPGA te permiten reconsiderar si cambian las condiciones de operación.

En el pasado, esta ventaja era costosa, cuando la programación para FPGA no era para los de carácter débil. Se necesita abrir compiladores para FPGA para que se integren mejor con las herramientas que los programadores utilizan para crear aplicaciones de cálculos paralelos para CPU en lenguajes como C, C++ o Python, y delegar parte del trabajo a bibliotecas que aceleran los procedimientos en FPGA. Eso es lo que hace el stack de Vitis para aprendizaje automático, que está en la base de plataformas de IA como Caffe y TensorFlow, y que tiene bibliotecas para ejecutar modelos de IA comunes o agregar capacidades de FPGA a tareas como la recodificación de video, reconocimiento de objetos en video, análisis de datos, gestión de riesgos financieros y cualquier biblioteca externa.

Este concepto no es muy diferente del proyecto CUDA de Nvidia, lanzado hace diez años, que traslada los cálculos paralelos a aceleradores GPU, o del conjunto de herramientas ROCm de AMD, o de las promesas del proyecto OneAPI de Intel, que debe funcionar en diferentes CPU, GPU y FPGA.

La cuestión es cómo se conectarán todas estas herramientas para que cualquier persona pueda programar un conjunto de capacidades computacionales a su antojo. Esto es importante porque las FPGA se han vuelto mucho más complejas que cualquiera de las CPU existentes. Se fabrican utilizando procesos tecnológicos más avanzados y las tecnologías de empaquetado de chips más modernas. Encontrarán su nicho, ya que ya no podemos perder tiempo, dinero, energía e inteligencia; todos estos son recursos demasiado costosos.

«Las FPGA ofrecen ventajas tecnológicas», dice Bolsen. «Y no es solo una publicidad normal sobre adaptabilidad y reconfigurabilidad. En todas las aplicaciones importantes – aprendizaje automático, análisis de grafos, comercio de alta frecuencia, etc. – tienen la capacidad de adaptar no solo la ruta de propagación de datos a una tarea específica, sino también la arquitectura de memoria, es decir, cómo se mueven los datos dentro del chip. Además, las FPGA tienen mucha más memoria integrada que otros dispositivos. También se debe considerar que si una tarea no cabe en una sola FPGA, se puede escalar a varios chips sin enfrentar las desventajas que se presentan al escalar tareas en varias CPU o GPU».

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster