Computación en red realizada con éxito - Calendae | Informática, Electrónica, CMS, Ciberseguridad

Computación en red realizada con éxito

Hola y mil gracias por leerme. Yo soy Simón Sánchez y en el día de hoy te voy a contar sobre Computación en red realizada con éxito

Escribir e implementar aplicaciones informáticas de alto rendimiento es sinónimo de eficiencia, paralelismo, escalabilidad, optimización de caché y uso óptimo de cualquier recurso disponible, ya sean procesadores multinúcleo o aceleradores de aplicaciones, como FPGA o GPU. Las aplicaciones HPC se han desarrollado y ejecutado con éxito en redes durante muchos años.

HPC a la parrilla

Un buen ejemplo de varios componentes diferentes de aplicaciones de HPC se puede ver en el procesamiento de datos del Gran Colisionador de Hadrones (LHC) del CERN. El LHC es un gigantesco instrumento científico (más de 26 kilómetros de circunferencia), enterrado bajo tierra cerca de Ginebra, donde haces de partículas subatómicas, llamadas hadrones, protones o iones de plomo, que se aceleran en direcciones opuestas y se rompen en una sola. en el otro a 0.999997828 la velocidad de la luz. Su objetivo es desarrollar una comprensión de lo que sucedió en los primeros 10-12 de segundo al comienzo del universo después del Big Bang, que a su vez confirmará la existencia del bosón de Higgs, ayudará a explicar la materia oscura, energía oscura, antimateria y quizás la naturaleza fundamental de los problemas mismos.

Los datos se obtienen de una serie de «experimentos». cada uno de los cuales es una colección grande y muy delicada de sensores capaces de capturar los efectos secundarios causados ​​por partículas exóticas y de corta duración que resultan de las colisiones de partículas. Cuando se acelera a la velocidad máxima, los grupos de partículas se cruzan 40 millones de veces por segundo, cada grupo contiene 10 ^ 11 partículas, lo que resulta en mil millones de eventos de colisión que se detectan cada segundo. Estos datos se filtran primero mediante un sistema construido a partir de dispositivos ASIC y FPGA personalizados. Luego, es procesado por una granja de procesamiento de 1000 procesadores y el filtrado se completa con una granja de 3400 procesadores. Una vez que los datos se reducen en un factor de 180.000, todavía generan 3.200 terabytes de datos por año. Y el procesamiento de HPC realizado para reducir el volumen de datos apenas ha arañado la superficie de lo que sucede a continuación.

Luego, diez de los principales sitios de computación del mundo, que comprenden muchas decenas de miles de procesadores (y muchas instalaciones más pequeñas), se ponen a trabajar para interpretar lo que sucedió durante cada «evento». El procesamiento y la distribución de datos son manejados por LHC Grid, que se basa en un middleware de grid llamado gLite desarrollado por el proyecto líder europeo Enabling Grids for E-sciencE (EGEE). Se logra un alto rendimiento en cada etapa porque los programas se han desarrollado con un conocimiento y una comprensión detallados de la red, el clúster o la FPGA a la que se dirigen.

De la red a la nube

La computación en red no está muerta, pero viva la computación en la nube. En cuanto a los primeros usuarios finales de nuestro programa 451 ICE, la computación en la nube ahora se considera el punto final lógico para las estrategias combinadas de red, servicios públicos, virtualización y automatización. De hecho, los usuarios de redes empresariales ven las redes, los servicios públicos y la computación en nube como un continuo: la computación en la nube es la computación en cuadrícula bien hecha; las nubes son un grupo flexible, mientras que las cuadrículas tienen un grupo de recursos fijo; servicios de entrega en la nube, mientras que las redes proporcionan servidores; las nubes son negocios y las redes son ciencia. Y así continúan las comparaciones, pero a través de la computación en nube, las redes ahora parecen estar a punto de cumplir algunas de sus promesas.

Una forma obvia de ver la computación en la nube es el nuevo nombre de marketing adecuado para la computación de servicios públicos, salpicado con un poco de polvo de duendes de Internet. En muchos sentidos, sus aspiraciones coinciden con las aspiraciones originales de la informática de utilidad: la capacidad de activar la potencia informática como un grifo y pagar por bebida. La «utilidad» es una metáfora útil, pero es ambigua porque simplemente no es tan fungible como la electricidad, por ejemplo. El término nunca tuvo éxito. Mientras tanto, la computación en red se ha colgado en la búsqueda de la interoperabilidad y la complejidad de la estandarización. Sacar la ciencia de la red ha demostrado ser lo suficientemente intratable para todas las tareas de aplicaciones especializadas y de computación de alto rendimiento.

Las nubes abstraen de manera útil la complejidad de las redes y la ambigüedad de la informática de servicios públicos y se han adoptado rápida y ampliamente. Desde entonces, todos han estado desesperados por comprender qué significa la computación en la nube y en qué se diferencia de la computación de servicios públicos. No es verdad. La computación en la nube es la computación de utilidad 2.0 con algunos refinamientos, principalmente, que se presenta en formas que creemos que es muy probable que se popularice.

Pero debido a que la nube abstrae la complejidad, también abstrae la visibilidad de los detalles detrás de la plataforma de ejecución. Y sin una comprensión profunda de cómo optimizar para la plataforma de destino, la computación de alto rendimiento se convierte, bueno, simplemente en computación.

Aplicaciones de construcción

Los programas legibles por humanos se traducen en programas que se pueden ejecutar en una computadora mediante un programa llamado compilador. El primer paso de un compilador es el análisis léxico, que convierte un programa en sus componentes lógicos (es decir, palabras clave, operadores, números y variables del lenguaje). Posteriormente, la fase de análisis de sintaxis verifica que el programa respeta las reglas gramaticales de los idiomas. Las dos últimas etapas de optimización y generación de código a menudo están estrechamente vinculadas para que sean iguales (aunque algunas optimizaciones genéricas, como eliminar subexpresiones comunes, son independientes de la generación de código). Cuanto más sepa el compilador sobre los sistemas de destino, más sofisticadas serán las optimizaciones que podrá realizar y mayor será el rendimiento del programa resultante.

Pero si un programa se está ejecutando en la nube, el compilador no conoce ningún detalle de la arquitectura de destino y, por lo tanto, debe hacer suposiciones de mínimo común denominador, como un sistema x86 con hasta 8 núcleos. Pero se puede lograr un rendimiento mucho mayor compilando para muchos más núcleos, o un clúster basado en MPI, o GPU o FPGA.

Esta tecnología se ha convertido en un producto candente. Google compró PeakStream, Microsoft compró activos de supercomputación interactiva e Intel compró RapidMind y Cilk Arts. Por tanto, las principales empresas de TI están comprando esta experiencia informática paralela.

Conclusión

El multinúcleo causa un problema para la TI tradicional, ya que la mayoría de las aplicaciones luchan por escalar tan rápido como los nuevos sistemas multinúcleo y la mayoría de los programadores no son especialistas en procesamiento paralelo. Y este problema se amplifica muchas veces cuando se ejecutan aplicaciones HPC en la nube, ya que aunque el programador y los compiladores utilizados podrían hacer un trabajo perfecto al optimizar y paralelizar una aplicación, se desconoce la arquitectura de destino de los detalles.

¿Hay una solucion? A largo plazo, se necesitan nuevos paradigmas o lenguajes de programación, quizás con un proceso de compilación de dos etapas que compila un lenguaje intermedio, pero pospone la optimización final y la generación de código hasta que se conoce el sistema de destino. Y no, no creo que Java sea la respuesta.

Recuerda compartir en tu Facebook para que tus colegas lo disfruten

??? ? ? ???

Comparte