¿Qué es una supercomputadora?
Antes de comenzar a responder esa pregunta, vamos a tratar de explicar que es una computadora. Una computadora u ordenador tiene por finalidad general tomar la información (datos) a través de un proceso llamado “input” (ingreso), almacenarla y procesarla para luego generar algún tipo de “output” (resultado o salida). Una supercomputadora no es solamente una computadora mas rápida o mas grande: funciona de una manera bastante diferente, generalmente utilizando procesamiento de datos en paralelo eb lugar de hacerlo en serie como las computadoras ordinarias. La supercomputadora en lugar de realizar una tarea a la vez, realiza muchas simultáneamente.
¿Porqué utilizan el procesamiento en paralelo?
La mayoría de nosotros normalmente realizamos tareas triviales con las computadoras: navegar páginas web, enviar y recibir correos electrónicos, documentos y tareas similares que utilizan muy poco de la capacidad de una PC típica. Pero si tratamos de hacer algo mas complejo, como por ejemplo cambiar los colores de una fotografía digital grande veremos que la máquina, ocasionalmente, tiene que trabajar mas duro para realizarlo, demorándose incluso hasta varios minutos. Si jugamos videojuegos en la computadora, tendremos la necesidad de contar con un procesador mas rápido y mas memoria RAM, o los juegos serán realmente lentos, llegando incluso al caso de nisiquiera poder correrlos. La solución: un procesador mas rápido y mas memoria RAM, seria la respuesta obvia, pero hay una limitación mas que comprender, y es el hecho de los procesadores generalmente sólo pueden realizar una cosa a la vez.
Ahora, supongamos que somos científicos encargados de los pronósticos del tiempo, o bien de la prueba de una nueva droga contra el cáncer, o quizás, modelar el clima para el año 2050. Problemas como esos empujan a las mejores computadoras del mundo hasta sus límites. La mejor manera de llevar adelante el análisis de los enormes volúmenes de información es el uso del procesamiento en paralelo: muchos procesadores, dividir el problema (situación a analizar) en varias partes, y poner cada procesador a trabajar en cada una de esas partes por separado y en forma simultánea.

Computadoras masivas en paralelo
Desafortunadamente el procesamiento en paralelo tiene una desventaja no menor que podemos quizás comprender mejor haciendo una analogía con un supermercado. Si decidimos dividir la compra con un grupo de amigos para repartirnos en diferentes cajas a la hora de pagar, se reducirá el tiempo, esto comparado con la situación de determinar previamente quien compra que productos y la reunión tras haber pagado todo. Intuitivamente podemos suponer que mientras mas procesadores tenga la supercomputadora, probablemente será mas difícil dividir los problemas y reemsamblarlos luego obteniendo el máximo rendimiento del procesamiento en paralelo. Mas aún, será necesario que exista algún tipo de sistema de administración centralizado que se encargue de dividir los problemas, asignar las tareas a cada procesador y luego reemsamblar los resultados.
Con el caso del pago de la compra en un supermercado no tenemos tantas dificultades. Pero imaginen si el carrito lleva miles de millones de productos y nuestro grupo de amigos es de 65.000 personas. Ahora si nos aproximamos un poco mas al tamaño de la información que deben procesar las supercomputadoras cuando se les asignan problemas como el pronóstico del tiempo de los próximos 50 años. El estado del tiempo en un país depende generalmente del estado del tiempo de otras regiones, determinando que para poder hacer el pronostico correspondiente al país será necesario conocer el pronostico de las demás regiones. Usualmente, los procesadores en paralelo de las supercomputadoras se comunican entre si mientras resuelven las partes del problema que le fueron asignadas. O bien un procesador deberá esperar los resultados de otro procesador para poder continuar con su tarea o terminarla.
¿Qué es un clúster?
Se puede construir una supercomputadora llenando gabinetes grandes con procesadores y haciendo que éstos cooperen entre si para resolver el complejo problema a través de un masivo procesamiento paralelo. Alternativamente, se pueden comprar muchas computadoras “off the shelf”, colocarlas en una misma habitación e interconectarlas formando una red LAN (red de área local, por sus siglas en inglés) para que funcione de una manera similar. Este tipo de supercomputadora se nomina “Cluster”. Google hace sus búsquedas en la web para los usuarios con clusters de computadores off-the-shelf regadas en los centros de datos de todo el mundo.

¿Qué software utilizan las supercomputadoras?
Seguramente se sorprendan, pero la mayoría de las supercomputadoras corren sistemas operativos ordinarios muy similares a los que utilizamos en nuestras propias computadoras hogareñas. Las supercomputadoras mas comunes utilizaban anteriormente el sistema operativo Unix, pero en la actualidad la tendencia es emplear Linux. Como estas máquinas trabajan con problemas generalmente científicos, los programas que utilizan a veces son escritos en lenguajes de programación tradicionales como por ejemplo Fortran y C++.
¿Qué pueden realizar las supercomputadoras?
Típicamente, las supercomputadoras han sido utilizadas para resolver complejos y matemáticamente intensos problemas científicos, incluyendo la simulación de pruebas de misiles nucleares, pronóstico del tiempo, cambio climático, pruebas de fortaleza de la encripción (seguridad informática), etc. En líneas generales, pueden ser utilizadas para absolutamente todo.
Quizás las dos supercomputadoras mas populares, por su grado de exposición mediática, sean Deep Blue y Watson, ambas diseñadas por IBM. Deep Blue fue construída en 1997 para jugar al ajedrez, llevando adelante varias partidas contra el ruso Gary Kasparov en las que buscaba en una enorme base de datos las potenciales movidas útiles en cada situación del juego. Watson, creada para jugar al juego Jeopardy, fue optimizada para analizar difíciles preguntas de “conocimiento general” redactadas en lenguaje humano.

¿Qué tan poderosas son?
Si miramos las especificaciones de las computadoras ordinarias, las de casa por ejemplo, encontraremos que el desempeño de las mismas se mide en MIPS (millones de instrucciones por segundo), que significa cuantos comandos fundamentales de programación (leer, escribirm almacenar, etc) puede manejar el procesador. Es muy fácil compara dos computadoras PC mediante la comparación del número MIPS que pueden manejar, o bien, puede típicamente comparase las velocidades en MHZ o GHZ.
Las supercomputadoras se califican de una manera diferente. Ya que son empleadas en cálculos científicos, ellas se miden de acuerdo a cuantos FLOPS (operaciones de punto flotante por segundo) pueden realizar, que es una medida mas significativa basada en lo que intentan realizar efectivamente los procesadores (el MIPS es la medida de cómo intenta realizarse el proceso). En la tabla vemos como ha ido creciendo el número de FLOPS a lo largo del tiempo.

TUPAC, la supercomputadora argentina
Ahora que comprendemos un poco mas de cómo trabajan las supercomputadoras, queda mas claro el empleo que planea dársele a esta supermáquina que permitirá realizar la simulación de procesos de fractura hidráulica en la industria petrolera que se emplean para la explotación hidrocarburífera de Vaca Muerta para YPF, y el desarrollo de modelos de predicción metereológica por parte del Servicio Metereológico Nacional.
También TUPAC tendrá la tarea de efectuar modelados estructurales y fluidodinámicos de vehículos espaciales como Tronador II, modelos fluidodinámico de aviones para la empresa FAdeA y modelos de radar y sonar para INVAP.
Eduardo Dvorkin, responsable de la puesta en marcha de la super computadora informó que la misma podrá ser utilizada por toda la comunidad científica nacional que, a través de las redes de Internet de alto rendimiento, podrá conectarse a este poderoso equipo para utilizarlo en problemas que requieran este tipo de procesamiento”.

