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

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 Quantum Computing, podremos resolver todos los problemas difíciles de forma más o menos instantánea”.

Esto no es verdad.


En su mayoría, lo que hoy llamamos supercomputadoras 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, tienes que entender la Ley de Amdahl. Aquí está:

[math] S_ {latency} (s) = \ dfrac {1} {(1-p) + \ frac {p} {s}} [/ math]

[math] S_ {latency} [/ math] 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 de tiempo de ejecución que la parte que se benefició de la aceleración originalmente ocupada.

Lo que efectivamente dice esto es que las tareas que pueden dividirse en partes que pueden ejecutarse en paralelo se benefician de la adición de procesadores separados adicionales, cuanto más cerca esté el valor de p -> 1.

Esto es cierto para problemas que son vergonzosamente paralelos .

Para problemas que no son vergonzosamente paralelos, tenemos:

[math] \ 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, lanzar más hardware al problema no resuelve el problema más rápido.

Un procesador n segundos

512 procesadores? n segundos

Estos son los tipos de problemas que los supercomputadores originales fueron diseñados para resolver: todos los supercomputadores originales tenían un solo procesador, y el objetivo era hacer que ese único procesador haga los cálculos más rápido .

Incluso si pudiera hacer algo en paralelo, fue solo en el nivel de la paralelización virtual, ya que todos los cálculos se realizaron de forma lineal, a través del programador, en ese único procesador .

Así que hicimos procesadores más rápidos.

Tenemos 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 aún no habíamos inventado realmente el acceso no uniforme a la memoria (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 de las primeras máquinas masivas paralelas realmente interesantes tenía procesadores de 32K y se usaba 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 Goodyear Tire and Rubber Company. Solo Dios sabe por qué; Probablemente ellos fueron los postores más bajos.


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

Entonces realmente comenzamos a lanzar hardware al problema de obtener la mayoría de los ciclos de cómputo.

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

Argumentaría que ese es el punto en el que las supercomputadoras perdieron su alma, y ​​perdimos nuestra capacidad de construir supercomputadoras reales y, en cambio, comenzamos a construir clusters HPC ( computación de alto rendimiento ).

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


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

Y para problemas donde p -> 1, los clusters 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 prueba lo contrario, ganará $ 1,000,000, porque es un Problema del Premio del Milenio: También debe restringirse en su capacidad para acelerar los problemas a aquellos problemas donde p -> 1.


Creo que esto limita enormemente nuestro pensamiento sobre el universo.

Pienso que hemos ratholed, con una visión de túnel extrema en p -> 1 problemas, por lo que (en su mayoría) ni siquiera consideramos los problemas p -> 0.

Hemos eliminado 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 computación basada en máquina”.

Dado nuestro enfoque en el hardware básico, en la mayoría de los casos 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 una vergüenza para la humanidad. Uno tiene que preguntarse cuántas civilizaciones extraterrestres hay por ahí que atravesaron ese mismo rathole, algunas incluso antes que nosotros, y nunca se convirtieron en razas de estrellas por eso.


Entonces, para responder a la pregunta original, ahora que tiene el contexto histórico y que se le ha 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 cerca que p se acerca a 1, se consideran los problemas más “interesantes”.

Esto se debe a que “la computación cuántica es genial” y porque 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 “supercomputación” ocurre hoy.

¡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 de aerodinámica (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 expulsa el gas caliente a través de un chorro, combustión o motor de cohete, cómo fluye el petróleo a lo profundo 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 los cálculos de QCD que pueden tardar hasta un año en simular los constituyentes 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 el cáncer y la investigación de enfermedades, simulación de computadoras cuánticas, gases cuánticos como los condensados ​​de Bose-Einstein o gases de 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ámicas sociales (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, genética, epidemiología, plegamiento de proteínas y también imágenes médicas en las que a veces se utilizan grupos de GPU para realizar cortes de una exploración de MRI / PET / CT)
  • La ingeniería estructural (incluidos los edificios, las aeronaves, la acústica de las estructuras, la elasticidad, la resistencia, etc., y las estructuras pueden incluir una gran cantidad de cosas, incluidos automóviles, camiones, equipos de construcción (como excavadoras y grúas), diques, 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 ruta de Google Maps))
  • Inteligencia artificial / Minería de datos (inferencia y descubrimiento de conocimiento, sistemas similares a Watson, optimización, redes neuronales, minería de datos)
  • Modelado del clima (modelos de ciencias de la tierra para la atmósfera, niveles del océano, pronóstico del tiempo, modelado 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, la dinámica galáctica, la difusión de estrellas, los agujeros negros (con la relatividad numérica), la distribución de materia oscura)
  • Criptografía (leer: 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.

Los mainframes se utilizan en entornos muy diferentes a los de las supercomputadoras. En general, los mainframes se utilizan cuando la confiabilidad y la velocidad de IO (esto podría ser IO de red, IO de memoria, transacciones de usuario, etc.) son de la mayor importancia. Las supercomputadoras se utilizan cuando se necesita la mayor cantidad de potencia computacional sin procesar posible. Conozco mucho más sobre mainframes que con las supercomputadoras, así que me centraré en las primeras.

Ejemplos de dónde se utilizan 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 99.999% de disponibilidad. Esto equivale a un máximo de aproximadamente 5 minutos de inactividad del sistema por año. En el mundo real, hay tanta redundancia en el lugar que probablemente no tendrá ningún tiempo de inactividad.

La redundancia es extrema tanto a nivel de hardware como de software. No solo se adquiere cada pieza de hardware (memoria, CPU, tarjetas de red, fuente de alimentación, todo el chasis de mainframe, etc.) 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 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 algún error / excepción fatal en el código de la pila de la red, la pila de respaldo puede tomar el control de las conexiones existentes y futuras. Normalmente también se ejecutan varias instancias del sistema operativo 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 de forma síncrona para garantizar que el código del software aproveche las nuevas características de aceleración del 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 necesario todo esto? Bueno para compañías como Bank of America, donde potencialmente hay millones de personas que utilizan cajeros automáticos o que deslizan su tarjeta de crédito en un restaurante en un momento dado, incluso unos pocos segundos 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 petrolera (análisis sísmico)

Básicamente, cualquier cálculo “estrechamente acoplado” en el que haya muchos puntos de datos altamente interconectados se ejecutará mejor en esta clase de máquinas. Es posible que algunas personas se sorprendan al saber que la potencia de cómputo en bruto es a menudo secundaria al tamaño de la memoria y / o las comunicaciones rápidas características de la raza.

Los mainframes son una cuestión completamente diferente. Para ser honesto, sé menos acerca de ellos, pero están diseñados más para la confiabilidad y el manejo de E / S que para la velocidad computacional. Además de los roles tradicionales orientados a bases 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 la consolidación extrema del servidor.

La computadora central y las súper computadoras no son lo mismo. El mainframe se utiliza para grandes empresas, instituciones financieras, compañías de seguros, etc. En India, incluso nuestra bolsa de valores NSE tiene una gran cantidad de tecnología de mainframe. Aún así, los mainframes se consideran bastante confiables para una gran cantidad de procesamiento de transacciones.
Para mantenerlo simple, si necesita procesar millones de cuentas bancarias para generar interés, debe leer estos millones de registros, hacer un cálculo de interés menor y luego actualizarlos. Aquí el cómputo es menos pero IO es enorme. Aquí puedes usar mainframe.

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

La supercomputación es sobre la escala. Las supercomputadoras hacen los mismos cálculos que puede hacer en su propia computadora, simplemente 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 detalles y complejidad.

El propósito de una supercomputadora es convertir un problema vinculado a la computación en un problema vinculado a la 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, modelos climáticos, problemas de ingeniería, física nuclear, visualización científica y simulaciones, etc.

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

Agregaré algunos:

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

Un equipo de Fórmula Uno usa 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 involucran la predicción de la propagación de la enfermedad en una pandemia, para planificar una.

Física nuclear teórica

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

Ejemplos: Modelo computacional dinámico de fluidos de toda la atmósfera; flujo de calor en un motor de automóvil; simulación de una supernova; simulación del flujo de electrones alrededor de una oblea semiconductora; simulación del sistema solar (problema de n-cuerpos) con una precisión lo suficientemente grande como para colocar una sonda con 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 usar PVM, MPI o BSP y necesita un número de nodos no trivial, tiene un problema que necesita una supercomputadora.

Esencialmente puedes pensar en términos de dos tipos de supercomputadoras. Sobre todo pensamos en un procesador muy rápido que puede manejar tareas aritméticas enormemente 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 a la vez, que pueden manejar cualquier problema de color que se pueda dividir en tareas independientes. Piense en todos los procesadores que se comunican mediante uno o más buses y puede ver por qué “super” computadora.
Ahora considere un sistema donde algunos de los procesadores están dedicados a este o ese tipo de proceso, y algunos individualmente muy grandes, y usted comienza a tener la idea.
El pensamiento del sistema operativo hace que me duela el cerebro.

Cada gran banco de inversión tiene una supercomputadora.

El banco en el que trabajé 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 administración de riesgos se iniciarían y calcularían los informes de riesgo 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 la manera de hacer mucho dinero con él …
Algo con analizar el mercado de valores en tiempo real … Entonces, 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 lo más saludable para el cuerpo y la mente humana. . La neurociencia computacional pronto nos permitirá ver el cerebro durante la administración de medicamentos y los momentos de angustia, para saber exactamente qué sucede cuando alguien está experimentando una depresión aguda, luego toma ketamina y se administra para salvar el terreno en funcionamiento. También cómo tomar un químico como la ketamina y aislar el grupo específico de moléculas que afectan la depresión y deshacerse de (si es posible) las que causan que te drogues. (No soy un profesional en este campo, pero creo que definitivamente debería ser el foco central de lo que debe suceder para el mejor significado de la raza humana).
También estoy muy interesado en usar esta supercomputadora hipotética para ejecutar algoritmos paralelos y preferiblemente ejecutar algunos 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, qué tan destructivas son las armas termonucleares.

Número crujido en su mayoría, para el tradicional HPC. Muchos problemas se pueden resolver de forma aproximada y numérica. Cuanta más potencia de computación desperdicies, más respuestas precisas obtendrás. Es por eso que se necesitan supercomputadoras.

Además de la respuesta de Jan Christian Meyer a la computación de alto rendimiento: ¿para qué se usa 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 alza como un sumidero de ciclos, ¿eh? Análisis de datos no mucho todavía.

Respondí eso en otro post de Quora.

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

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

¿Por qué a la gente le gustan las supercomputadoras? Simplemente hacen el mayor trabajo en un momento dado. Los problemas con los que se usan los supercomputadores tienden a tener un escalamiento mayor que el lineal (> O (n)). La multiplicación de matrices tiene operaciones O (n ^ 3). Si tienes que preguntar, no tienes concepto. El problema del vendedor viajero (TSP) es uno de esos problemas O (NP-completo). Para que puedan ser peores.

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

Sobre todo, si tiene que preguntar el precio, no puede permitirse.

Respuesta corta.

No puedo aspirar a realizar un estudio exhaustivo de las áreas de aplicación de HPC, pero desde lo más alto 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.

Los mainframes son utilizados por

1. Todos los principales bancos para ejecutar sus soluciones de banca central.
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. Compañías automovilísticas para mantener sus datos.

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

En su mayoría HPC; ver Supercomputadora – Wikipedia

En diez años, tal vez se pueda 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, mover un control deslizante en cualquier momento y ver todo lo que la humanidad tiene sobre lo que estaba sucediendo. Quién estaba allí, qué aspecto tenían, qué sucedió. Una máquina del tiempo enciclopédica que se podría configurar para avanzar o retroceder, de modo que pueda ver cómo cambió el horizonte o cómo cambió el idioma o cómo viajaron las cosas de un lugar a otro. Algo para que comencemos en una simulación completa de todo lo que ha existido.

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