Hoy en día, los superordenadores son constelaciones de placas de procesadores con tejidos de interconexión de muy alta velocidad.
El coste de construir superordenadores puede ser bajo: yo he construido lo que podría describirse como un superordenador utilizando un montón de placas de procesadores con procesadores ARM de cuatro núcleos a 1,6 GHz y una interconexión de gigas. Mi coste total es de un par de miles de dólares. Al ir mucho más grande, pronto descubro que mis costes de interconexión empequeñecen los de la CPU…
Lo mismo ocurre a mayor escala – incluso si está utilizando blades con múltiples procesadores Xeon, su interconexión ahora tiene que ser de 10 o 100 gigas Infiniband, y pronto descubre que el coste de un par de miles por blade en los adaptadores de host se traga en la construcción de tejidos Clos lo suficientemente profundos a partir de conmutadores que no tienen suficientes puertos…
Entonces se llega a los verdaderos asesinos – la energía, y el tiempo de actividad.
La energía en los supercomputadores es una cosa, hasta el punto de que la medida más útil es ahora en «teraflops por megavatio». La energía -incluyendo la climatización para la refrigeración, la distribución de energía, la reserva de energía, etc.- es el gran coste que absorbe el alma que implica el funcionamiento de un centro de supercomputación.
El tiempo de funcionamiento, también es un tema – si se da un gran número de núcleos (digamos, no sé, 100.000 núcleos o más) y problemas muy complejos, las probabilidades de tener un fallo en el núcleo de la CPU o un fallo en la memoria o algún otro fallo que haga explotar uno de los nodos en su constelación de computación están casi garantizadas para tener que lidiar con eso, en tiempo real. Por lo tanto, no se puede escribir un software que asuma ingenuamente que todo está bien todo el tiempo, y no se puede contar con el sistema operativo para saber si las cosas están bien o no, porque no hay un «sistema operativo» para la constelación en su conjunto, sólo para las cuchillas individuales …
Si usted está tratando de hacer un superordenador para su propio uso, se dará cuenta de que no es demasiado difícil, para alguna definición de «superordenador». ¿Si estás tratando de hacer uno para vender a otros? ¿O para atacar problemas a nivel de estado-nación? Eso es algo totalmente diferente…