Computación de alto rendimiento: ¿para qué se utiliza una supercomputadora?

¡Hay tantas cosas increíbles para las que usamos supercomputadoras! Voy a tener problemas para mantener esta lista corta, pero prometo que será divertido.

Aquí vamos..

  • Simulaciones aerodinámicas (automóviles, aviones, diseño de naves espaciales, generalmente para eficiencia energética y / o velocidad)
  • Dinámica de fluidos (cómo vuelan las libélulas, cómo se drena el agua en un fregadero, cómo se hace pasar el gas caliente a través de un motor a reacción, de combustión o de cohetes, cómo fluye el petróleo por debajo de la superficie de la Tierra, cómo fluye la sangre por las venas)
  • Física de partículas (analice los exabytes de datos que salen de los detectores LHC, ejecute cálculos QCD que pueden tomar hasta un año para simular componentes fundamentales del núcleo, otro fenómeno de alta energía)
  • Sistemas cuánticos y dinámica molecular (descubrimiento de fármacos, plegamiento de proteínas para la investigación del cáncer y enfermedades, simulación de computadoras cuánticas, gases cuánticos como condensados ​​de Bose-Einstein o gases Fermi, superconductividad, células solares, puntos cuánticos)
  • Sistemas biológicos (dinámica de poblaciones, secuenciación genética, estudios de comportamiento, epidemiología)
  • Dinámica social (comportamiento de la mafia, microeconomía, redes sociales)
  • Medicina (algunas cosas que mencioné en las otras categorías, como simular la física del cuerpo humano, la genética, la epidemiología, el plegamiento de proteínas y también las imágenes médicas donde a veces se usan grupos de GPU para procesar cortes de una resonancia magnética / PET / TC)
  • La ingeniería estructural (incluidos edificios, aviones, la acústica de estructuras, elasticidad, resistencia, etc. y estructuras pueden incluir una gran cantidad de cosas, incluidos automóviles, camiones, equipos de construcción (como excavadoras y grúas), presas, puentes y más)
  • Finanzas (comercio de alta frecuencia, PDE, comercio algorítmico)
  • Electrónica / EE (antenas, redes eléctricas, circuitos)
  • Redes (esquemas de comunicación, esquemas de búsqueda (por ejemplo, búsqueda de rutas de mapas de Google))
  • Inteligencia artificial / Minería de datos (inferencia de conocimiento y descubrimiento, sistemas similares a Watson, optimización, redes neuronales, minería de datos)
  • Modelado climático (modelos de ciencias de la tierra para la atmósfera, niveles oceánicos, pronóstico del tiempo, modelos de desastres naturales)
  • Ingeniería nuclear (simulación de nuevos tipos de reactores nucleares, ya que son muy caros de construir, blindaje contra la radiación)
  • Astrofísica / Cosmología (simulando el big bang, dinámica galáctica, difusión estelar, agujeros negros (con relatividad numérica), distribución de materia oscura)
  • Criptografía (léase: descifrado de códigos de la NSA)

Siéntase libre de editar mi respuesta y agregar a su propia gente. Hay un montón de cosas que no he incluido.

Esta es una buena pregunta, porque las personas que no conocen la historia de las supercomputadoras están obligadas a responderla de una manera que excluye la mayoría de los espacios de problemas interesantes a los que se podría aplicar una verdadera supercomputadora.

También tienen la idea de que “una vez que tengamos computación cuántica, podremos resolver todos los problemas difíciles de manera más o menos instantánea”.

Esto no es verdad.


En su mayoría, lo que llamamos supercomputadoras hoy no es lo que Seymour Cray o Gene Amdahl habrían llamado “supercomputadoras”.

Esto se debe a que hay diferentes tipos de problemas, y cada tipo diferente define subconjuntos del espacio del problema que contiene el conjunto de todos los problemas posibles.

Para entender esto, debes entender la Ley de Amdahl. Aquí está:

[matemática] S_ {latencia} (s) = \ dfrac {1} {(1-p) + \ frac {p} {s}} [/ matemática]

[matemáticas] S_ {latencia} [/ matemáticas] es la aceleración teórica para la tarea

[math] s [/ math] es la aceleración de la parte de la tarea que se beneficia de recursos mejorados

[math] p [/ math] es la proporción del tiempo de ejecución que la parte que se benefició de la aceleración originalmente ocupaba.

Lo que esto efectivamente dice es que las tareas que se pueden dividir en partes que se pueden ejecutar en paralelo se benefician de la adición de procesadores separados adicionales, cuanto más cercano sea el valor de p -> 1.

Esto es cierto para problemas que son vergonzosamente paralelos .

Para problemas que no son vergonzosamente paralelos, tenemos:

[matemáticas] \ displaystyle \ lim {s \ to \ infty} S_latency (s) = \ dfrac {1} {1-p} [/ math]

En otras palabras, la aceleración teórica de la paralelización siempre está limitada por la parte que no se puede lograr en paralelo.

Nota: la Ley de Amdahl en realidad se aplica a todos los recursos del sistema, pero para el propósito de esta discusión, el recurso interesante es el número de procesadores.


El resultado de la discusión anterior es que para problemas con un valor de p -> 0, arrojar más hardware al problema no lo resuelve más rápido.

Un procesador? n segundos

512 procesadores? n segundos

Estos son los tipos de problemas que las supercomputadoras originales fueron diseñadas para resolver: todas las supercomputadoras originales tenían un único procesador, y el objetivo era hacer que ese único procesador hiciera los cálculos más rápido .

Incluso si pudieras hacer algo en paralelo, fue solo a nivel de paralelización virtual, ya que todos los cálculos ocurrieron linealmente, a través del programador, en ese único procesador .

Entonces hicimos procesadores más rápidos.

Nos hicimos muy buenos en eso.


Luego comenzamos a agregar procesadores para tratar algunos aspectos de los problemas que eran paralelizables.

Algunos, al principio, porque estábamos interesados ​​en la coherencia de la memoria MESI y todavía no habíamos inventado el Acceso a la Memoria No Uniforme (NUMA). Esto fue antes de que un amigo mío y un par de sus amigos fueran contratados por los fundadores de Thinking Machines, Inc ..

Principalmente, fue utilizado por la Administración Nacional Oceánica y Atmosférica para mejores modelos de predicción numérica del clima.

Una máquina paralela masiva temprana realmente interesante tenía procesadores de 32K, y se utilizó para modelar el flujo de aire laminar a través de los diseños del transbordador espacial. Fue un hardware especialmente diseñado para la NASA. Fue construido por la empresa Goodyear Tire and Rubber Company. Dios solo sabe por qué; probablemente fueron el mejor postor.


Basado en los primeros éxitos, construimos computadoras paralelas más grandes …

Entonces realmente comenzamos a lanzar hardware al problema de obtener la mayor cantidad de ciclos de cómputo de las cosas.

El precio / rendimiento se convirtió en un problema bastante grande, y comenzamos a usar hardware básico como componentes: Commodity Off The Shelf (COTS).

Yo diría que ese es el punto en el que las supercomputadoras perdieron su alma, y ​​nosotros perdimos nuestra capacidad de construir supercomputadoras reales y, en cambio, comenzamos a construir clústeres HPC ( High Performance Computing ).

Al menos las personas que lo hicieron tuvieron la decencia de cambiarles el nombre de las supercomputadoras, incluso si Wikipedia redirige HPC a “supercomputadoras”, y no reconoce la diferencia.


En ese punto, para problemas donde p -> 0, las supercomputadoras se volvieron masivamente más lentas .

Y para problemas donde p -> 1, los clústeres de HPC se volvieron masivamente más rápidos .

Y la computación cuántica, a menos que alguien resuelva el problema P versus NP a favor de que la respuesta sea P = NP, que, por cierto, incluso si demuestra lo contrario, le dará $ 1,000,000, porque es un Problema del Premio del Milenio, También estará restringido en su capacidad para acelerar los problemas a aquellos problemas donde p -> 1.


Creo que esto limita enormemente nuestro pensamiento sobre el universo.

Creo que hemos explorado, con una visión de túnel extrema en problemas p -> 1, de modo que (en su mayoría) ya ni siquiera consideramos los problemas p -> 0.

Hemos reducido una gran cantidad del espacio total de problemas de nuestra consideración como “problemas que son válidos e interesantes para tratar de resolver utilizando la informática basada en máquinas”.

Dado nuestro enfoque en el hardware básico, la mayoría de las veces ni siquiera somos capaces de resolver algunos de los problemas en p -> 0 que pudimos resolver en el hardware que solíamos tener disponible en el pasado. Porque no tiene sentido gastar en uniprocesadores más rápidos para resolver los problemas que ya no estamos enfocados en resolver.

Es casi una maldita vergüenza para la humanidad. Uno tiene que preguntarse cuántas civilizaciones extraterrestres hay por ahí que cayeron en la misma rathole, algunas incluso antes que nosotros, y nunca se convirtieron en razas de estrellas debido a eso.


Entonces, para responder a la pregunta original, ahora que tiene el contexto histórico y que le han explicado la Ley de Amdahl en términos simples:

El tipo de computación que hacen las supercomputadoras hoy en día está bastante limitado a la pequeña parte del conjunto de todos los problemas en el universo donde p -> 1.

Cuanto más se acerque p a 1, más se considerarán los problemas “interesantes”.

Esto se debe a que “la computación cuántica es genial” y porque realmente no tenemos que pensar mucho más allá de “simplemente lanzar más hardware al problema”.

Sí. En el subconjunto del espacio del problema donde p -> 1. Ahí es donde ocurre hoy la “supercomputación”.

Los mainframes se usan en entornos muy diferentes de los supercomputadores. En general, los mainframes se usan cuando la confiabilidad y la velocidad de E / S (esto podría ser E / S de red, E / S de memoria, transacciones de usuario, etc.) son de suma importancia. Las supercomputadoras se usan cuando necesita tanta potencia computacional sin procesar como sea posible. Tengo mucho más conocimiento sobre mainframes que sobre supercomputadoras, así que me centraré en lo primero.

Ejemplos de dónde se usan mainframes:
– Agencias gubernamentales (es decir, Administración de la Seguridad Social)
– Los 50 bancos multinacionales más grandes del mundo (es decir, Bank of America)
– Compañías de seguros (es decir, State Farm)
– Grandes empresas minoristas multinacionales (es decir, Walmart)

Muchos entornos de mainframe tienen acuerdos de nivel de servicio (SLA) que garantizan al menos un 99.999% de disponibilidad. Esto equivale a un máximo de aproximadamente 5 minutos de tiempo de inactividad del sistema por año. En el mundo real, existe tanta redundancia que probablemente no tendrá tiempo de inactividad.

La redundancia es extrema tanto a nivel de hardware como de software. No solo cada pieza de hardware (memoria, CPU, tarjetas de red, fuente de alimentación, todo el chasis de la unidad central, etc.) se compra en números pares para tener una conmutación por error en cada punto de falla posible, el software también está diseñado para la redundancia. Como ejemplo, la pila de red en el sistema operativo que maneja las conexiones TCP / IP y SNA de los usuarios que se conectan al mainframe generalmente tiene una o más pilas de respaldo. Si ocurre un error / excepción fatal en el código de la pila de red, la pila de respaldo puede hacerse cargo de las conexiones existentes y futuras. Por lo general, varias instancias del sistema operativo también se ejecutan simultáneamente.

La velocidad de procesamiento de IO en un mainframe es impresionante en comparación con las máquinas de servidor típicas. Gran parte de la ventaja proviene del hecho de que IBM (que vende la gran mayoría de los mainframes) desarrolla tanto el hardware como el software. Como resultado, el software y el hardware se desarrollan sincrónicamente para garantizar que el código del software aproveche las nuevas características de aceleración de hardware. Esto sucede a menudo con el código de pila de red del sistema operativo y las nuevas características de hardware de la tarjeta de red.

¿Por qué es todo esto necesario? Bueno, para compañías como Bank of America, donde potencialmente hay millones de personas que usan cajeros automáticos o deslizan su tarjeta de crédito en un restaurante en un instante dado, incluso unos segundos de tiempo de inactividad pueden ser desastrosos.

Para las supercomputadoras, algunas de las áreas de aplicación con las que estoy familiarizado incluyen:

  • Dinámica de fluidos (gas + líquido)
  • Ciencia de los Materiales
  • Física (QED / QCD)
  • Exploración de petróleo (análisis sísmico)

Básicamente, cualquier cálculo “estrechamente acoplado” en el que haya muchos puntos de datos altamente interconectados funcionará mejor en esta clase de máquinas. Puede sorprender a algunas personas saber que la potencia informática en bruto suele ser secundaria al tamaño de la memoria y / o las características de comunicación rápida de la raza.

Los mainframes son un asunto completamente diferente. Sé menos sobre ellos, para ser honesto, pero están diseñados más para la confiabilidad y el manejo de E / S que para la velocidad computacional. Además de las funciones tradicionales orientadas a la base de datos, sus capacidades de virtualización integradas (desde hace treinta años, por cierto) las convierten en una buena plataforma para ejecutar miles de máquinas virtuales. Piense en ello como una consolidación extrema del servidor.

Mainframe y supercomputadoras no son lo mismo. Los mainframe se utilizan para grandes empresas, instituciones financieras, compañías de seguros, etc. En la India, incluso nuestra bolsa de valores NSE tiene mucha tecnología de mainframe involucrada. Aún así, los mainframes se consideran bastante confiables para una gran cantidad de procesamiento de transacciones.
Para simplificar, si necesita procesar millones de cuentas bancarias para generar intereses, entonces debe leer estos millones de registros, hacer cálculos de intereses menores y luego actualizarlos. Aquí el cálculo es menor pero IO es enorme. Aquí puedes usar mainframe.

Pero si necesita ejecutar un cálculo matemático complejo para predecir el camino del misil, el IO es menor pero el cálculo es enorme. Aquí usar mainframe no es la mejor idea, usar supercomputadora o alguna plataforma de computación distribuida dará mejores resultados.

La supercomputación se trata de escala. Las supercomputadoras hacen los mismos cálculos que puede hacer en su propia computadora, más rápido y con más procesadores. Esto le permite completar el mismo cálculo mucho más rápido o hacerlo al mismo tiempo que su PC, pero con más detalle y complejidad.

El propósito de una supercomputadora es convertir un problema vinculado a la informática en un problema vinculado a E / S (cortesía de Ken Batcher – Wikipedia).

Los tipos de problemas que resuelve una supercomputadora son tan variados como las personas que los usan. Por lo general, grandes problemas con grandes conjuntos de datos. Predicción del tiempo, modelación climática, problemas de ingeniería, física nuclear, visualización científica y simulaciones, etc.

Tengo experiencia trabajando tanto en mainframes como en supercomputadoras y no se usan para los mismos fines. Los mainframes se usan principalmente cuando las operaciones informáticas necesitan una precisión fina incluso para las operaciones triviales. Las supercomputadoras, por otro lado, se utilizan principalmente para aplicaciones científicas que exigen un tiempo de computación enorme y en la academia.
Los mainframes generalmente son utilizados por las organizaciones bancarias para calcular los balances de días, el cálculo de intereses, el cálculo de nóminas, el cálculo de impuestos y, en algunas aplicaciones anteriores, la IU también.
Más del 80% de las compañías Fortune 500 usan tiempo de mainframe, generalmente no tienen un mainframe propio y sus capacidades de operación de I / P son enormes.

Agregaré algunos:

Diseñando aviones (Boeing era un gran usuario de Crays)

Un equipo de Fórmula Uno utiliza un grupo grande para ser un túnel de viento numérico para varios diseños de automóviles.

Bioinformática

Encontrar nuevos medicamentos o nuevos materiales como catalizadores para procesos químicos más baratos.

Estudios que implican la predicción de la propagación de la enfermedad en una pandemia, para planificar una.

Física teórica nuclear

Cualquier problema altamente paralelo que no pueda resolverse por medios secuenciales en tiempo razonable.

Ejemplos: modelo dinámico de fluidos computacional de toda la atmósfera; flujo de calor en el motor de un automóvil; simulación de una supernova; simulación del flujo de electrones alrededor de una oblea semiconductora; simulación del sistema solar (problema del cuerpo n) con una precisión lo suficientemente grande como para colocar una sonda a un alto nivel de precisión después de décadas de sueño; problemas de álgebra lineal con conjuntos de datos muy grandes; procesamiento de conjuntos de datos del acelerador de partículas para identificar nuevas partículas.

Si necesita utilizar PVM, MPI o BSP, y necesita un número no trivial de nodos, tiene un problema al necesitar una supercomputadora.

Esencialmente puedes pensar en términos de dos tipos de supercomputadoras. Principalmente pensamos en un procesador muy rápido que puede manejar tareas aritméticas muy complejas, como la extracción de números primos muy grandes. La alternativa es una enorme base de datos a la que acceden miles de procesadores simultáneamente que puede manejar cualquier problema de colosal que se puede dividir en tareas autónomas. Piense en todos los procesadores que se comunican por uno o más autobuses y puede ver por qué computadora ‘super’.
Ahora considere un sistema donde algunos de los procesadores están dedicados a este o aquel tipo de proceso, y algunos individualmente muy grandes, y comienza a tener la idea.
La idea del sistema operativo me duele el cerebro.

Cada banco de inversión importante tiene una supercomputadora.

El banco en el que trabajaba tenía cuatro sistemas de supercomputación masivos, cada uno en una parte diferente del mundo, y una vez que los mercados cerraran, los sistemas de gestión de riesgos comenzarían a funcionar y calcularían los informes de riesgos para los próximos días de negociación. ¿Conoces esos “informes de estrés” que escuchas en las noticias que quiere la Reserva Federal? Todo hecho con supercomputadoras.

Lo que un banco de inversión puede y no puede hacer depende de sus supercomputadoras. Hay algunas situaciones en las que un banco importante tuvo que abandonar un negocio porque no tenían los sistemas de supercomputación que necesitaban para proporcionar a los reguladores los informes que los reguladores desean.

Primero encontraría una manera de ganar mucho dinero con él …
Algo con analizar el mercado de valores en tiempo real … Luego, una vez que el dinero no sea un problema para el futuro previsible, simularía y analizaría las interacciones bioquímicas y las moléculas con el objetivo de descubrir qué es realmente saludable para el cuerpo y la mente humana. . La neurociencia computacional pronto nos permitirá ver el cerebro durante el suministro de drogas y los momentos de angustia, para descubrir exactamente qué sucede cuando alguien experimenta depresión aguda y luego toma ketamina y se entrega para salvar el funcionamiento. También cómo tomar una sustancia química como la ketamina y aislar el grupo específico de moléculas que afectan la depresión y deshacerse (si es posible) de las que causan que te drogues. (No soy un profesional en este campo, pero creo que definitivamente debería ser el centro de atención de lo que debe suceder para mejorar la raza humana).
También estoy muy interesado en usar esta supercomputadora hipotética para ejecutar algoritmos paralelos y, preferiblemente, ejecutar algunos procedimientos físicos.

Computación científica. Por ejemplo, hacer predicciones sobre el clima o el clima, cómo se comportan los fluidos en condiciones turbulentas, qué tan fuertemente se unen las moléculas candidatas a las proteínas, cómo se forman las galaxias, cómo las partículas elementales reciben su masa y, por último, cuán destructivas son las armas termonucleares.

Numeración mayoritariamente, para el HPC tradicional. Muchos problemas pueden resolverse solo de forma aproximada y numérica. Cuanta más potencia informática tenga, más respuestas precisas obtendrá. Es por eso que se necesitan supercomputadoras.

Respondí eso en otra publicación de Quora.

Históricamente, los primeros usos fueron trayectorias informáticas (artillería), criptoanálisis (lectura del correo de otras personas) y meteorología. Ah, sí, la bomba H (este era el prefijo original para la computadora, el super era una superbomba).

Se usan para lo que sea que su propietario quisiera usar (por lo general, problemas de larga duración). Diría que si no espera 20 minutos o más, no tiene un problema de supercomputadora.

¿Por qué a la gente le gustan las supercomputadoras? Simplemente hacen la mayor parte del trabajo en un momento dado. Los problemas para los que se utilizan las supercomputadoras tienden a tener una escala mayor que la lineal (> O (n)). La multiplicación de matrices tiene operaciones O (n ^ 3). Si tiene que preguntar, no tiene concepto. El problema del vendedor ambulante (TSP) es uno de esos problemas O (NP-completo). Entonces pueden ser peores.

Si desea clases de aplicaciones, wikipedia “Gran desafío”. La mayoría de las personas que tienen supercomputadoras tienden a no querer compartir sus carreras (algunas lo hacen).

Principalmente, si tiene que preguntar el precio, no puede pagarlo.

Respuesta corta.

No puedo esperar hacer una encuesta exhaustiva de las áreas de aplicación de HPC, pero fuera de mi cabeza, la dinámica de fluidos, la astrofísica y la geofísica son tres campos que hacen un uso extensivo de los recursos computacionales a esta escala.

Además de la respuesta de Jan Christian Meyer a High Performance Computing: ¿para qué se utiliza una supercomputadora ?, las supercomputadoras pasan gran parte de sus ciclos en química computacional. Las aplicaciones son cosas como problemas de valores propios no lineales o cálculos de tensor. Todo eso requiere mucho poder. La biología computacional está en marcha como un, ¿eh, ciclo sumidero? Análisis de datos aún no tanto.

Los mainframes son utilizados por

1. Todos los principales bancos para ejecutar sus soluciones bancarias principales.
2. Todos los principales emisores de tarjetas de crédito.
3. Sistemas de reserva de líneas aéreas.
4. Todos los operadores de telecomunicaciones.
5. Principales proveedores de seguros.
6. Empresas de automóviles para mantener sus datos.

Básicamente, toda la lógica empresarial de misión crítica aún se ejecuta en mainframes.

Principalmente HPC; ver Supercomputadora – Wikipedia

En diez años, tal vez se podría establecer un marco para organizar toda la información de manera que se pueda acceder a través de una interfaz gráfica. Idealmente, deberíamos poder hacer clic en cualquier parte del mapa y mover un control deslizante a cualquier momento y ver todo lo que la humanidad tiene sobre lo que estaba sucediendo. Quién estaba allí, cómo se veían, qué pasó. Una máquina del tiempo enciclopédica que podría configurar el funcionamiento hacia adelante o hacia atrás para que pueda ver cómo cambió el horizonte o cómo cambió el idioma o cómo las cosas viajaron de un lugar a otro. Algo para comenzar con una simulación completa de todo lo que ha existido.

Fuera de eso, creo que obtendríamos algunos beneficios secundarios más serios: la base de datos médica definitiva, la consolidación de bibliotecas, etc.