Antecedentes:
Problema:
Solución:
Introducción
A partir de los sesenta el estudio de la ingeniería sísmica ha tenido gran importancia en el análisis de las
estructuras físicas con el objetivo de prevenir cualquier catástrofe mediante el levantamiento de obras que
resistan aceptablemente los sismos.
Con estos fines, actualmente la ingeniaría sísmica integra muchas disciplinas, entre ellas: la sismología, la
dinámica de estructuras y de suelos, el diseño estructural, las propiedades dinámicas lineales y no lineales, el
comportamiento de los materiales, y entre otras la informática. Sin embargo el conocimiento total del tema,
muy posiblemente esta fuera del alcance de los profesionales involucrados en esta área, pero, la
especialización en temas concretos nos da la pauta a la solución de determinados problemas prácticos,
ampliándonos a muchas posibilidades de investigación. Por ello, la Universidad Técnica Particular de Loja
que a lo largo de su vida institucional, ha ejecutado innumerables proyectos enmarcados en la docencia,
investigación y extensión, contribuyendo al desarrollo general de carácter científico, hoy emprende en la
promoción de nuevas formas de diseño, análisis y levantamiento estructural con criterios sísmicos mediante la
utilización de herramientas informáticas.
En la Solución del Cluster de Alto Rendimiento soluciona todos los problemas presentados en una simulación
secuencial, ya que se paraleliza las tareas permitiendo emplear un determinado número de computadoras
como si fuera uno solo (Super-Computador).
Descripción de la Solución
El Cluster de Alto Rendimiento fue desarrollado desde una visión innovadora utilizando un conjunto de
herramientas técnicas. Todo empezó con la búsqueda del mejor ambiente para implementar el Cluster.
Hay que tener en cuenta que OpenSees emplea algunas herramientas (MPICH2, TCL/TK, PETSC) para su
funcionamiento en sistemas UNIX. La selección de la plataforma estuvo sujeta a estas herramientas. Luego de
una serie de pruebas se opto por Ubuntu 9.04 como sistema base para todo el Cluster.
Una vez seleccionada el sistema base se procedió a compilar a OpenSeesMP sobre una arquitectura de 32 bits
en un equipo clon con 4 núcleos, esto con el fin de comparar los tiempos de respuesta. Luego de haber
realizado y corregir algunos problemas de la compilación de OpenSeesMP se procedió a implementar el
cluster con MPICH2. Para poder realizar una réplica de las herramientas compiladas en el nodo maestro se
empleo un servidor NFS el cuál se monta automáticamente en cada uno de los nodos al momento de
inicializarlas.
Es indespensable emplear una comunicación segura y autenticación automática entre los nodos para facilitar
la administración del Cluster. Esto se logra creando una sola cuenta de usuario (mpiu) y empleando llaves de
comunicación RSA.
El paso final es monitorear a los nodos y servidor del Cluster, para realizar esto se instalo y configuro
GANGLIA.
Desarrollo de la Solución
Con el fin de desarrollar e implementar el Cluster de Alto Rendimiento para los Laboratorios Virtuales, se ha
tomado como base:
• MPICH2
• Tcl/Tk
• PETSC
• g++
• gfortran
• gcc
• MYSQL
• Librerias BLAS/LAPACK
HARDAWARE:
Los equipos tienen la misma arquitectura, y las mismas características de componente. Esto ha dado
facilidades al momento de compartir configuraciones y archivo.
SISTEMA OPERATIVO:
La plataforma seleccionada para implementar el Cluster HP fue Ubuntu Juanty Jackalope 9.04, se opto por
esta versión por la velocidad del nuevo sistema de archivos ext4 y por todas las facilidades que brinda para la
configuración de las herramientas necesarias para la compilación de OpenSeesMP.
LENGUAJES DE PROGRAMACIÓN:
De acuerdo a la herramienta MPICH2, los lenguajes de programación son: Tcl, C (Gcc - gnu) y Fortran.
HERRAMIENTAS DE MONITOREO:
Una de las partes importantes es el monitoreo del estado de los nodos que conforman el Cluster. Para esta fase
se útilizo GANGLIA para realizar un monitoreo en tiempo real.
user@ub1:~# sudo -i
2. Escribir las siguientes instruccion (esta se aplicara tanto al maestro como en los nodos)
127.0.0.1 localhost
192.168.10.1 ub1 #Nodo Maestro
192.168.10.2 ub2
192.168.10.3 ub3
192.168.10.4 ub4
192.168.10.5 ub5
192.168.10.6 ub6
192.168.10.7 ub7
192.168.10.9 ub9
Para no tener que realizar esto cada vez que se reinicie uno de los nodos, vamos a
configurar el archivo /etc/fstab para que se monte
root@ub1:~# su - mpiu
Ya que nos hemos cambiado al usuario entonces generamos la llave
mpiu@ub1:~$ cd .ssh
La llave generada se copia con la siguiente instruccion:
Para saber si el ssh esta corriendo en los nodos esclavos se ejecuta la siguiente instruccion:
Si no solicita contraseña esta listo para comunicarse entre los nodos sin que nos pida
password. Si luego de haber hecho nos sigue pidiendo password entonces debemos checar
si el ssh esta corriendo en el maestro para eso nos vamos a:
System/Administration/Services, aqui nos tiene que aparecer ssh.
root@ub1:/cluster/instaladores# cd mpich2-1.2.1
Ya que nos hemos cambiado al directorio, procederemos a configurar, compilar e instalar
mpich2 en el directorio /mirror/mpich2, para ello vamos a ejecutar las siguientes
instrucciones:
root@ub1:~# su - mpiu
mpiu@ub1:~$ sudo gedit .bashrc
export PATH=/mirror/mpich2/bin:$PATH
export LD_LIBRARY_PATH="/mirror/mpich2/lib:$LD_LIBRARY_PATH"
Hecho esto, reiniciamos la maquina (nodo maestro) para que se ejecuten los cambios
realizados.
Ahora los que se va hacer es ejecutar los siguiente comandos en el nodo maestro y se
obtiene la ruta eso quiere decir que MPICH esta funcionando.
En el cluster.nodes se agregara los nodos que participaran en el cluster, para realizar esto se
debe ejecutar las siguientes instrucciones:
ub1
ub2
ub3
ub4
ub5
ub6
ub7
ub8
ub9
ub10
Despues creas o editas un archivo .mpd.conf en el mismo directorio, par ello se ejecuta las
siguientes instrucciones:
Con estas instrucciones escribes la palabra secreta para el archivo y le asignas privilegios.
Estos dos pasos solo se realiza en el nodo maestro.
Donde 10 es el numero de nodos que posee el Cluster. Si todo va bien hasta aqui, con la
siguiente instruccion podremos observar los nodos que estan funcionando en el cluster.
mpiu@ub1:~$ mpdtrace
ub1
ub2
...
ub10
COMPILACION DE OPENSEES-MP
Todos los paquetes que se listan a continuacion son necesarios para la compilacion:
OPENSEES.- Pagina de descarga:
http://opensees.berkeley.edu/OpenSees/developer/download.php Enlace: (stable.tar.gz
Version Estable 2.1.0)
Los directorios donde se generarán las librerías y binarios de OpenSees son bin y lib. Para
crear estos directorios escribimos las siguientes instrucciones en el nodo maestro.
root@ub1:~# mkdir /cluster
root@ub1:~# cd /cluster
root@ub1:/cluster# mkdir bin lib
Adicional a esto vamos a crear los directorio donde se alojaran las librerias de Tcl, Tk y
PETSC en la carpeta /mirror
root@ub1:/cluster# mkdir /mirror/tcl-tk /mirror/petsc-2.2.1
Antes de realizar la compilación de los paquete debemos instalar las siguientes librerias que
son necesarios para una correcta compilación:
root@ub1:/cluster/instaladores# cd /cluster/instaladores/tcl8.5.7/unix
root@ub1:/cluster/instaladores/tcl8.5.7/unix# ./configure
--prefix=/mirror/tcl-tk --enable-threads --enable-shared --enable-symbols
root@ub1:/cluster/instaladores/tcl8.5.7/unix# make
root@ub1:/cluster/instaladores/tcl8.5.7/unix# make test
root@ub1:/cluster/instaladores/tcl8.5.7/unix# make install
root@ub1:/cluster/instaladores/tcl8.5.7/unix# cd
/cluster/instaladores/tk8.5.7/unix
root@ub1:/cluster/instaladores/tk8.5.7/unix# ./configure --with-
tcl=/mirror/tcl-tk/lib --prefix=/mirror/tcl-tk
root@ub1:/cluster/instaladores/tk8.5.7/unix# make
root@ub1:/cluster/instaladores/tk8.5.7/unix# make test
root@ub1:/cluster/instaladores/tk8.5.7/unix# make install
V.- COMPILACION E INSTALACION DE PETSC
root@ub1:/cluster/instaladores/tk8.5.7/unix# cd
/cluster/instaladores/petsc-2.2.1
root@ub1:/cluster/instaladores/petsc-2.2.1# export PETSC_DIR=$PWD
root@ub1:/cluster/instaladores/petsc-2.2.1# export PETSC_ARCH=linux-gnu
root@ub1:/cluster/instaladores/petsc-2.2.1# ./config/configure.py --with-
cc=gcc --with-cxx=0 --with-mpi-dir=/opt/mpich2 --with-blas-
lib=/usr/lib/libblas.a --with-lapack-lib=/usr/lib/liblapack.a
root@ub1:/cluster/instaladores/petsc-2.2.1# make all
root@ub1:/cluster/instaladores/petsc-2.2.1# make test
Las dos ultimas lineas permite eliminar todos los archivos generados en la compilación de
OpensSeesMP. Para volver a obtener una nueva versión ejecutamos nuevamente el
comando "make".
Son necesarios algunos permisos para que el usuario "mpiu" pueda ejecutar el
OpenSeesMP. Con la siguiente instrucción logramos que el usuario mpiu tenga control de
los nuevos archivos que se agregarón a la carpeta /mirror
Accedemos a la cuenta de mpiu y comprobamos que los nodos estén levantados y listos
para funcionar.
root@ub1:~# su - mpiu
mpiu@ub1:~$ mpdtrace
ub1
ub2
...
ub10
En el caso de no lograr ver los nodos que están conectados debemos emplear el comando
"mpdboot" que se indico en la parte de configuración del cluster.
Instalado las dependencias de ganglia continuaremos con la compilación del paquete que se
desacargo.
root@ub1:/cluster/instaladores# tar zxvf ganglia*
root@ub1:/cluster/instaladores# cd ganglia*
root@ub1:/cluster/instaladores/ganglia-3.1.7# ./configure --with-gmetad
root@ub1:/cluster/instaladores/ganglia-3.1.7# make
root@ub1:/cluster/instaladores/ganglia-3.1.7# make install
Ahora procederemos a copiar el sitio web que se genero al compilar ganglia al directorio por
defecto del servidor web Apache en una nueva carpeta que la nombraremos ganglia.
Gmond ya fue compilado en el nodo maestro, y para hacer mas rapido la instalación y
configuración de gmond en los nodos se empleara un script.
Para generar el script vamos a crear un archivo con el nombre “setup_gmond”en /mirror
root@ub1:~# su - mpiu
root@ub1:~# cd /mirror
root@ub1:~# sudo vi setup_gmond
for i in ub2 ub3 ub4 ub5 ub6 ub7 ub8 ub9 ub10; do
ssh $i hostname
ssh $i sudo apt-get install librrds-perl librrd2-dev libapr1-dev
libconfuse-dev libexpat1-dev python-dev
scp /usr/sbin/gmond $i:/usr/sbin/gmond
ssh $i mkdir -p /etc/ganglia/
scp /etc/ganglia/gmond.conf $i:/etc/ganglia/
scp /etc/init.d/gmond $i:/etc/init.d/
scp /usr/lib/libganglia-3.1.2.so.0 $i:/usr/lib/
scp -r /usr/lib/ganglia $i:/usr/lib/
ssh $i gmond
ssh $i update-rc.d gmond defaults
done
Para no tener problemas al momento de ejecutar el script, vamos a dar algunos permisos al
usuario mpiu en cada uno de los nodos. Estos permisos los damos como usuario root.
Y luego desde el nodo maestro ejecutamos el script empleando las siguientes instrucciones:
root@ub1:~# cd /mirror
root@ub1:/mirror# chmod 777 setup_gmond
root@ub1:/mirror# chown mpiu:root setup_gmond
root@ub1:/mirror# sudo mpiu
mpiu@ub1:/mirror$ ./setup_gmond