¿Qué es la informática de alto rendimiento?

High Performance Computing (HPC) es un término que generalmente se aplica a la informática en las ciencias de la ingeniería, y principalmente a las computaciones que son lo suficientemente grandes como para que realmente te preocupe el rendimiento: de qué es capaz tu procesador y qué tan cerca estás de eso .

Aquí hay algunas características de HPC:

  • Normalmente se trata de cálculos numéricos: física, química, ingeniería, todos conducen a grandes cálculos. Es por eso que las computadoras fueron inventadas en primer lugar.
  • Esto significa que HPC tiene una superposición de buen tamaño con la “Computación científica”, y un buen HPCer debería comprender mejor cierta cantidad de matemática numérica.
  • Recientemente, el análisis de gráficos a veces también se considera bajo HPC, ya que los gráficos pueden ser muy grandes, y realmente le importa la eficiencia de los cálculos. Lo mismo vale para algunos cálculos de ciencias de la vida, como todo lo relacionado con los genomas.
  • HPC a menudo se trata de paralelismo: desde mediados de la década de 1980, los fabricantes de computadoras se han dado cuenta de que el uso de dos procesadores en la misma caja le brinda, en un buen día, el doble de rendimiento en el mismo problema. Alrededor del año 2000, las computadoras estaban en los miles de procesadores, y ahora tenemos 10 millones de núcleos. Tratar con el paralelismo a tal escala es una ciencia en sí misma. Definitivamente HPC.
  • Y, por supuesto, si va a construir un clúster grande, también puede asegurarse de hacer un uso eficiente de los procesadores individuales. Por lo tanto, HPC también incluye conocimiento de cachés, instrucciones de vectores, TLB, bancos de DRAM, etc., y cómo programar para que use todos esos transistores de manera óptima.

Si desea leer más acerca de mi opinión sobre HPC, descargue (o compre) mi libro: Introducción a la informática científica de alto rendimiento

Respuesta corta: un término de marketing para cualquier programa computacional que se ejecuta en una supercomputadora; como una forma de hacerlo especial y diferenciarlo de lo que se ejecuta en una computadora más pequeña, como una computadora personal / portátil / de escritorio, etc.

Respuesta más larga: es un poco más complejo que mi broma. HPC, HPTC (informática técnica de alto rendimiento), o simplemente TC (informática técnica) toma su forma de los orígenes del negocio informático cuando los ingenieros y científicos intentaban resolver problemas que generalmente incluían matemáticas complejas y difíciles. En las décadas de 1940 y 1950, esto era cálculo de tablas de artillería, descifrado de códigos y física compleja.

Hoy, tradicionalmente llamamos a este mismo estilo de cálculo ‘problemas de gran desafío’, aunque los tipos de comercialización tienden a dividir los problemas en diferentes segmentos del mercado (petróleo y gas, contenido digital y creación, química, física de alta energía, ciencias de la vida, astronomía, clima, CAD mecánico, CAD eléctrico, comercio de alto volumen, análisis de cartera, gestión de riesgos, etc. ).

Lo que es común en algún lugar, lo que se necesita para resolver estas tareas, es una gran cantidad de poder de cómputo y, por lo general, también hay una gran cantidad de dinero en algún lugar atado a la tarea; aunque donde el valor es puede ser diferente. Por ejemplo, los datos de mercado que utilizan los operadores financieros son información pública, pero los algoritmos utilizados por las empresas que analizan esos datos se mantienen cercanos y privados. Por otro lado, muchas de las empresas de exploración de petróleo y gas utilizan los mismos programas para analizar los datos geológicos, pero los datos en sí mismos están en manos de quienes los recolectaron.

Otra gran confusión es que el término HPC abarca tantos tipos diferentes de programas que tienen muchas formas diferentes de resolverse. Algunos de estos programas son “vergonzosamente paralelos”, mientras que otros son de naturaleza bastante secuencial; que a menudo se expresa por cuán tolerante puede ser la aplicación a la latencia en la información compartida.

Examine la imagen que creé para algunos ejecutivos para una presentación diferente hace un tiempo y debería notar algunas ideas importantes. ¡Es un diagrama de dispersión, por lo que es poco probable que un calcetín se ajuste a todos los pies! En la esquina superior derecha, verá la industria de servicios financieros y las carteras HPC de exploración de energía. Estos son extremadamente valiosos (miles de millones de dólares) y protegidos. En el otro extremo hay algo como quantlib: un sistema de financiación cuantitativa de software libre. Del mismo modo, al observar la química y el clima, vemos programas FOSS como CHARM y WARF, que son ampliamente utilizados. Pero en CAD mecánico, herramientas como Ansys, CADAM y PTC están cerradas.

Algunas cosas para recordar. A los usuarios de HPC no les importa mucho la computadora, les importa hacer un trabajo . Los programadores de HPC tampoco se preocupan mucho por la computadora, aparte de que quieren que sea lo más barata posible para cierta velocidad y quieren que el sistema operativo y otros ‘gastos generales’ se salgan del camino. Casi siempre ha sido así. Los clientes de HPC usarán todo lo que puedan tener en sus manos y migrarán de alguna manera para obtener computadoras baratas. Hoy eso tiende a estar en las cajas de Linux. Solía ​​estar en sistemas UNIX, y antes estaba en sistemas personalizados.

Otra cosa que es tradicional, el trabajo es matemática desagradable, por lo que tradicionalmente los programas para resolver las matemáticas se han escrito en FORTRAN (aunque en mercados más nuevos, digamos contenido digital y creación, no tanto). La razón es que las matemáticas no han cambiado. Si abre el programa CAD eléctrico, como SPICE y el programa de simulación química, adivine lo que ambos están haciendo … resolver sistemas de ecuaciones diferenciales simultáneas utilizando álgebra lineal. ¿Viste la película de 2016, Hidden Figures? ¿Qué estaban haciendo esas mujeres antes de comenzar a aprender a programar un IBM 704 en FORTRAN? Resolver sistemas de ecuaciones diferenciales usando álgebra lineal. ¿Adivina qué estaban haciendo esos programas? Las matemáticas no han cambiado, los conjuntos de datos se han vuelto más grandes y tenemos más de ellos para describir más cosas.

Entonces, lo que está haciendo HPC es tomar grandes conjuntos de datos y manipularlos, de modo que se pueda obtener información nueva de esos datos. Eso es lo que es común en todos los casos en mi foto. Es difícil y generalmente costoso; pero si puedes hacerlo; a menudo puedes desbloquear secretos que antes no se sabían; Es por eso que HPC siempre ha sido el ‘high-end’ de nuestro negocio.

Bueno, esa es una larga historia. Y todo comienza con una CPU.

Como probablemente sepa, la CPU está dividida en muchas unidades. Tiene una unidad predeterminada, que es responsable de la suma de enteros, multiplicación, división, desplazamiento, etc. También tiene una unidad de coma flotante, que se ocupa de las matemáticas de coma flotante, y algunas otras unidades que se ocupan de la memoria, la vectorización, etc.

¿Lo tienes? Excelente.

Como probablemente sepa, en cada ciclo, la CPU carga una sola instrucción, verifica si necesita tomar algo de la memoria y la pasa a la unidad correcta.

Lo cual es realmente una mentira.

El problema con la configuración anterior es que, mientras la unidad normal está realizando la adición, ninguna de las otras unidades está haciendo nada. Están sentados allí, perdiendo el tiempo y los ciclos de reloj, y cuando la FPU finalmente hace algo, la unidad normal está durmiendo nuevamente. Además, una instrucción puede tomar varios ciclos (la exponenciación es costosa). Enfrentarse a estas ineficiencias es la razón por la que realmente tenemos unidades en primer lugar.

Lo que realmente sucede es que las instrucciones se cargan en una memoria caché, llamada ‘ventana de instrucciones’, que también verifica cuáles de las instrucciones contenidas se pueden ejecutar y qué instrucciones deben esperar los datos. A partir de ahí, las instrucciones y los datos se envían a las diferentes unidades, donde esperan su posterior procesamiento. Esto significa que puede, por ejemplo, calcular una suma de punto flotante y una suma entera al mismo tiempo.

Además, las CPU actuales tienen instrucciones que funcionan en grandes tamaños de palabras, que van desde 128 hasta incluso 512 bits, que pueden calcular la suma de dos conjuntos de 64 bytes en una sola instrucción.

Si recuerdo correctamente, la última CPU tiene dos de ellos. Dos.

Si escribe bien su código, su CPU puede sumar 256 enteros. Por. Ciclo.

Eso es más de 700 mil millones de enteros por segundo.

Desafortunadamente, no todo el código puede sumar 700 mil millones de enteros por segundo. Para poder hacer eso, debes tener mucho cuidado con:

  • Donde tus enteros están en la memoria;
  • Usar instrucciones que no dependen unas de otras;
  • Cómo escribe sus declaraciones de bucle para que no obtenga gastos generales de eso.

Y muchos programas realmente no quieren sumar números enteros, quieren hacer cosas útiles.

La informática de alto rendimiento es el dominio que se ocupa de transformar esas solicitudes en un conjunto de instrucciones que puede ser paralelo a su CPU fuera de orden para lograr un alto rendimiento.

High Performance Computing es un campo de estudio que se ocupa de explorar métodos que hacen uso de la computación paralela. La idea básica es distribuir una tarea a múltiples procesadores. Aquí hay un ejemplo simple.

Digamos que tienes dos matrices

a = [1 2 3 4]

b = [5 6 7 8]

Puedes agregarlos secuencialmente. O use 4 procesadores para agregar cada uno de los elementos correspondientes de las dos matrices.

La computación paralela en el mundo real tiene toneladas de aplicaciones. Las herramientas de simulación basadas en la física moderna están paralelas en algún nivel. Aquí hay un par de ejemplos.

La figura anterior es del blog de riesgo no mitigado. Puede usar la computación paralela para procesar una gran cantidad de muestras de huellas dactilares y dicha herramienta obviamente sería útil cuando se trata de aplicaciones de seguridad escalables.

Otro ejemplo son las simulaciones de Montecarlo. Esta técnica ha existido por un tiempo. Sin embargo, paralelizar esto significa que puede aumentar el tamaño de la muestra, lo que mejora la precisión de los modelos que utilizan este principio. Aquí hay un ejemplo que muestra cómo las rutas de precios de opciones.

Dicho esto, si está interesado en aprender más sobre HPC, consulte Aprender computación paralela y de alto rendimiento

La informática de alto rendimiento es, bueno, la informática de alto rendimiento. Está computando a un nivel muy superior al de las computadoras de uso general. Por ejemplo, su computadora portátil es probablemente un modelo “Duo Core” de algún tipo, ¿verdad? Eso significa que su computadora tiene dos núcleos en su CPU o unidad central de procesamiento. Las CPU son las que ejecutan las matemáticas detrás de los programas que ejecuta su computadora. Los núcleos son unidades operativas independientes de la CPU. Bueno, una máquina HPC, o una supercomputadora, es básicamente una colección de computadoras, conectadas por una red, que ejecutan programas de manera paralela. En lugar de tener una máquina con 1 CPU y 2 núcleos, tiene 400 máquinas, cada una con 2 CPU, y cada CPU tiene 10 núcleos en lugar de 2. Eso es lo que es la informática de alto rendimiento. Está computando con más hardware y la paralelización de software que acompaña a ese hardware.

HPC es un espectro de aplicaciones informáticas y soluciones de hardware + software típicamente basadas en escalado vertical (supercomputadoras). Simulación de ingeniería, simulación física / climática, modelos económicos, descubrimiento de nuevas moléculas. Muchos algoritmos funcionan igual de bien en una red de computadoras más baratas, es decir, son escalables horizontalmente. Por ejemplo, BOINC es un programa para distribuir tareas a usuarios domésticos de cientos de proyectos informáticos a los que las personas pueden ofrecerse como voluntarios para donar ciclos de CPU de sus computadoras personales. Una supercomputadora es una computadora con un alto nivel de rendimiento informático en comparación con una computadora de uso general. El rendimiento de una supercomputadora se mide en operaciones de punto flotante por segundo en lugar de millones de instrucciones por segundo. Wikipedia

La informática de alto rendimiento (HPC) es generalmente una alternativa a la informática de alta disponibilidad (HA) utilizada en clústeres empresariales.

Cuando necesita elegir entre rendimiento y disponibilidad, elige el rendimiento. Tenga en cuenta que puede tener componentes de alta disponibilidad como RAID, alimentación dual y redes redundantes en partes críticas del diseño, pero cuando se ve obligado a elegir una u otra opción debido a limitaciones técnicas o de costos, HPC elige Rendimiento.

HPC = coche de Fórmula 1

HA = Tanque Abrams

Ambos son “rápidos”, ambos son “seguros”, pero tienen diferentes propósitos. Un investigador que usa un HPC puede vivir con el sistema fuera de línea durante un día para reparaciones o actualizaciones. Pero si su correo electrónico se desconecta por un día, habrá consecuencias directas.

Tenga en cuenta que los investigadores pueden obtener un aumento de rendimiento de hasta 2 veces al renunciar a la redundancia y arriesgarse a una interrupción desafortunada ocasionalmente. En el transcurso de la vida de una computadora, hay mucha más investigación incluso después de algunos cortes masivos.

HPC simplemente no es computación de bajo rendimiento.

¡No en serio! Nadie llama a la computación normal / de escritorio / grupo de trabajo “bajo rendimiento”, pero lo es. Alguien que ejecute Excel o un navegador no tendrá problemas de escala. Si no están contentos con el rendimiento, pueden actualizar fácilmente a un SSD, obtener más RAM, mejor pantalla, mejor CPU, GPU, proveedor de Internet.

En otras palabras, para no HPC, simplemente actualiza un componente. La premisa de HPC es que ya está más allá de los límites normales: debe escalar a máquinas exóticas (los servidores de 4 sockets y 6 TB de RAM podrían ser HPC o una máquina con decenas de GB / s de ancho de banda de almacenamiento, o con 8 GPU) o más comúnmente un clúster (probablemente Infiniband hoy). Un gran número de nodos probablemente idénticos, conectados con una red de alta bisección, probablemente con un sistema de archivos paralelo / escalable como Luster, y casi seguramente controlado por un programador. Mire Top500 para ver ejemplos: vale la pena señalar que también están ejecutando Linux.

Es cierto que el término abarca un amplio espacio. HPC se trata realmente de empujar el sobre de configuración. Maximizar una sola caja (4 sockets, RAM masiva o IO o GPU) es lo que lo distingue de la informática de alto rendimiento. Yo diría que un clúster pequeño ya no es realmente HPC (digamos, menos de varios cientos de núcleos) porque un pequeño clúster puede funcionar con redes de Gb o 10Gb con conmutadores baratos, posiblemente sin planificador, diseño de capacidad de administración, subsistema de almacenamiento dedicado, etc. .

informática que supera significativamente a la “informática normal”, generalmente en términos de operaciones por segundo. generalmente se logra mediante un paralelismo masivo, es decir, tomar potencia de procesamiento “normal” y encontrar una manera de distribuir el procesamiento para que se ejecute en paralelo al mismo tiempo. No todos los tipos de procesamiento se benefician del paralelismo por igual. por ejemplo, el cifrado de un solo archivo es típicamente un proceso en serie donde el paralelismo no proporcionaría beneficios. sin embargo, los intentos de encontrar una clave de cifrado desconocida para un solo archivo cifrado se beneficiarían del paralelismo. obviamente, “alto rendimiento” es un término muy relativo y lo que se consideraba HPC hace 10 años, ahora puede ser superado por un solo teléfono inteligente.

Es una informática que generalmente se basa en programación paralela. El alto rendimiento significa que los programas tienen que computar rápidamente, particularmente en el sistema enorme y complejo.