ShakTI HPGC: Core
El core es el núcleo principal del sistema. El objetivo principal de ShakTI es mantener única y exclusivamente los recursos necesarios para la ejecución de tareas. El encargado de administrar todos los nodos y decidir si se deben o no apagar es el núcleo. El núcleo está compuesto por dos ejecutables. shakti_mom es el programa servidor y debe estar funcionando en el nodo maestro mientras que shakti_son debe estar ejecutándose en los nodos esclavos.
ShakTI HPGC: Estructura
La planificación del desarrollo de ShakTI HPGC era de prioridad 1 en el comienzo del proyecto. La necesidad de obtener una supercomputación más inteligente es un hecho candente. Es necesario optimizar al máximo los recursos y además el consumo energético que se pueda generar.
En la planificación del proyecto se decidió que la estructura más escalable y flexible sería la que se explica en el siguiente esquema.
LAMP
El uso de Servicios Web está orientado a la interacción de ShakTI con otras plataformas como por ejemplo Android. Existe un nicho de posibilidades con los nuevos Sistemas Operativos móviles y la supercomputación que todavía no está explotado. Para ello me puse manos a la obra en el desarrollo de una aplicación Android que diera el estado del cluster en tiempo real.
El primer paso es la instalación de un servidor LAMP el cual albergará los servicios web. A continuación se deta[...]
Torque && Maui
En primer lugar deberemos instalar las librerías de desarrollo. De esta forma podremos compilar las fuentes del gestor de colas Torque y del planificador de tareas Maui.
# yum -y groupinstall 'Development Tools'
# pdsh "yum -y groupinstall 'Development Tools'"
# yum -y install openssl-devel
# pdsh "yum -y install openssl-devel"
Incluir en el PATH el directorio compartido para poder utilizar los ficheros binarios instalados en el directori[...]
GCC && MPICH2
El desarrollo de ShakTI se realiza en una máquina con Ubuntu 11.10 que utiliza la versión 4.6.1. Existe cierta incompatibilidad de símbolos con la versión utilizada por Scientific Linux 6.2. Para soluciona el problema se tuvo que compilar GCC 4.6.1 en el cluster. En este caso, será la versión 4.7.0 la que se compilará debido a su eminente liberación.
Aunque la arquitectura de los procesadores del cluster es de 64 bits, se instalará el paquete glibc-devel para arquite[...]
Network File System && Network Information Service
Network File System (NFS) es un sistema de ficheros distribuidos. Con NFS podemos tener montado un directorio y que este pueda ser accesible desde cualquier nodo del cluster. NFS nos permitirá dos cosas:
- Que todos los homes de usuarios del cluster puedan ver sus ficheros desde cada nodo.
- Compartir un directorio entre todos los nodos que será donde se instalen programas como mpich2.
Comprobaremos con YUM tenemos instalado [...]
Parallel Distributed SHell && Wake-On-Lan
Pdsh es una herramienta orientada a entornos de alto rendimiento que permite la ejecución de comandos en sistemas paralelos. Gracias a esta herramienta podemos realizar operaciones en todos los nodos del cluster con un solo comando. Instalaremos Pdsh para hacer menos monótona la instalación de los paquetes necesarios.
Una de las opciones de Pdsh es la comunicación entre los nodos mediante ssh. Necesitamos crear una clave pública para realizar conexiones[...]
Configuración de la red del cluster
Una vez instalados los nodos procedemos a la configuración de la red interna del cluster. El siguiente esquema explica de forma gráfica la estructura que tendrá la red.
Es muy importante que la configuración de cada nodo se aplique en el tiempo de arranque de la máquina. De esta forma nos aseguramos que se configure automáticamente en tiempo de inicio y no tengamos que estar pendiente de [...]
Instalación de Scientific Linux 6.2 en los nodos de cómputo
Un cluster orientado a High Performance Computing tiene como principal objetivo ofrecer a las personas una gran capacidad de cómputo.
Especificaciones del clusterEl cluster se compone de 7 nodos conectados mediante un switch FastEthernet. Debido a una ampliación posterior, existen dos tipos de nodos instalados en el cluster.
SuperMicro X6DHR-8G/X6DHR-8GS (5)- 2 Procesadores DualCore Intel(R) Xeon(TM) x86_64 CPU 3.00GHz.
- 1 GB de memoria RAM DDR 333 MHz.
- [...]
Preparación del entorno
Para el desarrollo de ShakTI se ha utilizado un clúster virtual llamado LaRoja. El clúster estaba compuesto por tres máquinas virtuales llamadas ‘casillas’, ’iniesta’ y ‘xavi’. Los recursos han sido cedidos por el Centro de Extremeño de iNvestigación e Innovación en Supercomputación.
El entorno de desarrollo utilizado ha sido eclipse con el plugin de subclipse para subir las modificaciones directamente al SVN de la forja proporcionada por Re[...]