Ordenadores con esteroides

Todos hemos visto imágenes de alguno, en una película, o en un reportaje sobre el CERN. Seres monstruosos, metidos en habitaciones asépticas, copias interminables de armarios con cables. Lo que quizá no es tan conocido es, ¿qué es por dentro un supercomputador?

bluegene

Se llama Blue Gene porque es más guay que tú

 

Estas joyas de la ingeniería son el máximo exponente de la dirección en la que camina últimamente la informática – cantidad sobre calidad. Con matices. Hemos visto como Intel y AMD han pasado de anunciar a bombo y platillo sucesivos procesadores con más y más gigas de velocidad para subirse al carro del yo tengo más núcleos que tú. Por qué, se preguntará el lector avispado. A fin de cuentas, como cualquier jefe sabe, es más eficiente tener a un señor trabajando cuatro horas en algo que utilizar dos señores durante dos horas. Da igual cuanto te esfuerces en que no lo hagan, los fulanos van a repetir parte de lo que hace el otro, van a perder en total el doble de tiempo en preparar su escritorio, y lo que es peor, más bien a menudo van a quedarse esperando a que su compañero termine de hacer algo de lo que dependen. No es distinto con un programa – tienen que preparar su estado y compartir datos de la misma manera. Vale. Intel nos está timando con sus multicores.

Como cualquier jefe sabe, es más eficiente tener a un señor trabajando cuatro horas en algo que utilizar dos señores durante dos horas

Casi. Sería así de no ser porque ese jefe también debería saber (no siempre pasa) que su regla deja de funcionar cuando pretendemos que un señor haga en dieciséis horas seguidas lo que dos hacen en ocho cada uno. Antes de terminar, le hierve la cabeza y prefiere pasar de movidas, irse a su casa y emborracharse. El culpable último del absentismo laboral en los procesadores es una cosa llamada Ley de Ohm – la energía eléctrica que usa el ordenador para representar los bits tiene que ir a algún lado cada vez que se cambia un 1 por un 0. El procesador se calienta, y lo hace en proporción a cuán rápido cambiemos ceros por unos. Bien, sí, para eso están el disipador y el ventilador. Ponle uno más grande, mira tú. Pero aquí la física vuelve a odiar al ser humano. Por exactamente el mismo motivo por el que el gin-tonic se te queda aguado mucho antes si el hielo está picado que si está en bloques. Algo más grande pierde superficie en proporción a su tamaño. Llega un momento en el que da igual lo grande que pongas el disipador, el procesador se tiene que tragar toda su energía y, al final, se derrite. Al señor de la empresa también le puedes poner cartulinas motivantes, que llega un momento que dice basta. Una fiesta.

No queda otra que repartir el trabajo. El aparato en el que lees esto probablemente tenga entre dos y ocho núcleos, es decir, trabajadores repartiéndose el pastel computacional. El concepto detrás de un supercomputador es más o menos el mismo con el que las empresas textiles responden a una alta demanda. Un supercomputador es algo así como una sweatshop de procesadores. No quiero insinuar nada, pero el record ahora mismo lo mantiene China. Se ve que saben lo que se hacen.

Quizá uno se pregunte ahora que para qué hacen falta 3 millones de núcleos trabajando juntos para algo, si el Crysis 3 va razonablemente bien en mi PC de sobremesa. El patrón más común es cualquier lugar en el que se necesite procesar un detalle muy grande en tiempo real. Por ejemplo, podríamos estar atendiendo a los millones de datos microscópicos de un objeto cualquiera, o a información procedente de todo el mundo. La respuesta concreta la tienen cuatro clases de personas: investigadores, meteorólogos, militares y grandes compañías. Los tres primeros han sido, hasta ahora, los principales usuarios. El CERN hace gala de una infraestructura computacional envidiable, entre cuyos objetivos está el de decidir inmediatamente si cada uno de los cuarenta millones de “experimentos” que el LHC realiza por segundo es interesante o ruido. En biología, resulta útil tener los resultados del comportamiento de los millones de átomos de una proteína antes de que el investigador haya muerto. Y también es considerablemente útil que la predicción del tiempo esté preparada antes del día que se está prediciendo. El ámbito militar, como le es tradicional, tiene un interés evidente en todo aquello que pueda hacer muchas cosas muy grandes muy rápido. Sobre todo si son más cosas, más grandes y más rápido que las de al lado.

bigdata

Si lo sigues hasta el final hay un pote con todos los datos de Facebook

Pero quizá algunas de las aplicaciones más interesantes estén naciendo en el sector privado, en lo que se llama Big Data. Aunque estrictamente el término podría aplicarse a los casos anteriores, se ha convertido en una buzzword (sí, ya, eso también es una buzzword) para referirse a los servicios que grandes de la informática como Oracle o Amazon ofrecen a otras empresas. A particulares también, claro, si uno tiene un cierto interés en gastarse sus ahorros en alquilar una porción de las granjas de ordenadores que ofertan. La lista de posibilidades es amplia. Analizar de manera continua patrones de consumo a nivel global para ofrecer publicidad y servicios adaptados. Responder instantáneamente a cuotas de pantalla o tráfico en la web. Controlar, modelar, y especular con el comportamiento de la Bolsa. Aglomerar datos de los usuarios para obtener más información sobre ellos que la que conocen sobre sí mismos. La potencia que ofrece la supercomputación en el mercado excede con mucho la capacidad de reacción con la que habitualmente un ser humano tomaría decisiones “informadas”. Y, como con toda tecnología, vale la pena pararse a pensar un rato que la carga ética no viene con ella, sino con su uso.

Programar estos Leviatanes es un desafío completamente distinto al que tradicionalmente venía siendo la programación. La mayor parte del tiempo ya no ha de ser invertida en pensar en cómo se hace una tarea, sino más bien en cómo se reparte la misma. Por supuesto, no pasa nada si de vez en cuando uno de los ocho núcleos de tu máquina tarda un milisegundo en calcular un dato necesario para los otros siete. No te vas a enterar. Este bloqueo momentáneo es algo que ocurre habitualmente en los programas – del mismo modo que ocurre en una empresa, cuando varias personas están pendientes de que el jefe termine la llamada para saber si tienen que darle prioridad al queso o a los yogures. Sin embargo, si uno de los tres millones de núcleos puede bloquear al resto, lo más seguro es que en todo momento alguno de ellos este bloqueando a los demás – con lo cual has gastado el precio de demasiados Maseratis en un trasto capaz de ejecutar sólo un procesador, apenas mejor que el que utilizas para leer esto.

Preparar un supercomputador requiere que el programador sea un jefe capaz de prever, antes de que tan siquiera empiece el trabajo, cuándo y con quién se tendrá que comunicar cada trabajador durante todo el proyecto entre manos

Pensar en cómo repartir tareas de manera no-bloqueante es sólo el primer problema. No sólo se trata de cuándo compartir datos entre los procesadores, sino dónde. A fin de cuentas, con un millón de núcleos, si pretendemos que todo el mundo se pueda comunicar con todo el mundo, necesitamos 1.000.000.000.000 de conexiones. No, en efecto, no se puede hacer. En la práctica, los procesadores se unen por grupos, lo que significa que a la hora de diseñar nuestro programa tenemos que tener en cuenta cómo vamos a repartir las tares espacialmente. En el mundo real no es especialmente chocante – si necesitas que dos personas colaboren, las metes en la misma oficina, y no a cada una en una ciudad. Sin embargo, las personas (habitualmente) tienen la habilidad de pensar por si mismas, y son capaces de darse cuenta de cuando necesitan hacer una visita a otro despacho u otra ciudad. Preparar un supercomputador requiere que el programador sea un jefe capaz de prever, antes de que tan siquiera empiece el trabajo, cuándo y con quién se tendrá que comunicar cada trabajador durante todo el proyecto entre manos.

Por supuesto, en un área en la que las revoluciones se siguen en períodos cada vez más cortos, haber nacido hace unas décadas clasifica a algo como viejo. Así que no podemos dejar sin mencionar la dirección en la que hoy marcha la supercomputación. Dejando atrás las habitaciones llenas de cables, la idea de computación distribuida se va implantando poco a poco. Desde el GRID del CERN, hasta los servicios ofrecidos por Amazon, la idea es tomárselo todavía con un poco más de calma… a cambio de utilizar todavía más elementos. Fundamentalente, se trata de dejar de conectar los nodos que componen el supercomputador de forma directa, y permitir que hablen entre ellos a través de la Red. La comunicación es evidentemente más lenta, pero da lugar a sistemas más escalables, es decir, en los que en cualquier momento se puede aumentar o disminuir el número de procesadores involucrados, en función de la demanda. Esencialmente, es aumentar la facilidad con la que nuestra empresa-modelo puede contratar y despedir a sus trabajadores.

La lista de dificultades que surgen es, indudablemente, incluso más larga. Sin embargo, esto no hace de la supercomputación más que un área en pleno desarrollo, llena de oportunidades por encontrar, sea en el ámbito de la investigación pura, como en el de la aplicación comercial.