En el fondo, un superordenador no es más que un montón de ordenadores menores conectados entre sí por cables muy rápidos. Cada ordenador individual se llama nodo, y cada cable un enlace. Un superordenador muy sencillo podría ser simplemente tu ordenador de sobremesa y tu portátil conectados por un cable ethernet. Sin embargo, esto no es muy útil, por lo que centraré el resto de esta respuesta en cómo construir un superordenador útil.
En primer lugar, tendrá que averiguar para qué quiere utilizarlo: ¿son cálculos científicos y simulaciones que ejecutan muchos de los mismos cálculos a la vez? ¿O cálculos continuos, casi en tiempo real, que se publican en la web? ¿O simplemente quiere acelerar un videojuego? Todo esto afecta a qué hardware comprar y qué software instalar, por lo que es muy importante que entienda bien el alcance de su problema desde el principio.
Después de esto, tendrá que comprar el hardware. En todos los casos, usted querrá una CPU con una alta velocidad de reloj - de lo contrario conseguir varios nodos no tiene sentido. Si el uso que quieres darle es de mucha comunicación de nodo a nodo, entonces querrás enlaces rápidos. Una opción es gigabit o 10-gigabit ethernet - tendrás que comprar cables y tarjetas de red que sean compatibles con estas velocidades. La fibra óptica es otra opción. Intente conectar la estructura física de la red de la misma manera que la utilizará su aplicación. ¿Será dividiendo el problema en elementos finitos y haciendo que cada nodo se comunique sólo con su vecino? ¿O es un problema de map-reduce que tiene muchos nodos esclavos que se comunican sólo con un eje central?
Si su aplicación va a almacenar una gran cantidad de cálculos intermedios, también querrá una gran cantidad de RAM por nodo. Si va a generar muchos datos, querrá un servidor de archivos capaz de almacenar toda su salida. Si su aplicación tiene que funcionar durante días sin interrupción, considere la posibilidad de adquirir un sistema de alimentación ininterrumpida (SAI) para los componentes críticos. Muchas aplicaciones de larga duración utilizan puntos de control, es decir, la posibilidad de que guarden su estado a mitad de la ejecución, para reanudarla en caso de interrupción o cierre programado. Si planea hacer uso de esto, será más rápido si instala suficiente almacenamiento permanente en cada nodo separado.
Si su aplicación realiza muchos cálculos pequeños y separados de forma simultánea, entonces es un buen candidato para el uso de la GPU de propósito general (GPGPU) - vea más abajo un ejemplo del software necesario. Si planea hacer esto, asegúrese de instalar tarjetas gráficas potentes que sean compatibles con su plataforma GPGPU prevista.
La última consideración de hardware es la energía y la refrigeración. Los superordenadores consumen mucha energía y generan mucho calor. Si es relativamente pequeño, puede utilizar el aire acondicionado de su casa, pero tenga en cuenta que esto aumentará significativamente su factura de electricidad. Asegúrate de que la potencia máxima de tu casa y de la toma de corriente que vayas a utilizar, así como la capacidad de los fusibles, sean suficientes para soportar el sistema que piensas utilizar. Desconfíe de conectar todo a una barra de alimentación: están pensadas para lámparas y tostadoras, no para superordenadores.
Ahora que tiene todo el hardware preparado, necesitamos configurarlo para que funcione como un superordenador. Lo primero que hay que determinar es el sistema operativo. Linux es el estándar de la industria, normalmente una variedad de Red Hat como CentOS, aunque los nuevos usuarios de HPC suelen encontrar Ubuntu más accesible. Querrás instalar una plataforma de interfaz de paso de mensajes (MPI), siendo la más popular OpenMPI. Esto permite que las aplicaciones se comuniquen entre los diferentes nodos. Si tiene una GPU potente, también querrá instalar la plataforma CUDA de NVIDIA, que permite a las aplicaciones utilizar la GPU para realizar cálculos de propósito general.
Las aplicaciones de cálculo científico están escritas en su mayoría en FORTRAN y C, por lo que conviene instalar compiladores y un entorno de ejecución adecuado para estos lenguajes, así como las librerías numéricas que puedan utilizar las aplicaciones deseadas. No puedo enfatizar lo suficiente la importancia de las buenas librerías HPC - están ampliamente ajustadas para obtener el mejor rendimiento para lo que hacen, por lo que le ahorrará tiempo y ganará velocidad en comparación con la escritura de su propio código para las funciones que se realizan comúnmente.
¡Eso es un montón de consideraciones! Si planea hacer algún tipo de computación seria, puede sumar un coste formidable. Desde el punto de vista económico, a la mayoría de los posibles propietarios de superordenadores les conviene utilizar un sistema externo como Amazon Cloud Compute para su trabajo. Las excepciones son:
- Si quiere construirlo por construirlo - un objetivo loable, ¡adelante!
- Si planea operarlo a plena capacidad durante un largo periodo de tiempo - de esta manera el coste operativo ahorrado puede compensar el coste de capital de la compra del equipo.
- Si necesita una tasa de transferencia de datos muy rápida entre su casa y el ordenador
A menos que la opción 1 se aplique a usted, mire bien su presupuesto, y las alternativas, antes de comprometerse a construir el suyo propio. Buena suerte