Professional Documents
Culture Documents
FUGITIVO
ski, 1
23RF
H
oy en día, una gran cantidad de de la Universidad de Indiana. El sistema usuario que suministra muchos de los ser-
aplicaciones comerciales, espe- LAM/MPI existe desde hace 20 años y vicios requeridos por los programas MPI.
cialmente en las áreas de ingenie- está considerado como una herramienta Los principales componentes del
ría, minería de datos, investigación cientí- estable y madura. Según su sitio web, paquete LAM/MPI están bien integrados y
fico/médica o exploración petrolífera, se LAM/MPI se encuentra ahora en “modo diseñados como un framework de compo-
benefician de las bondades de la computa- mantenimiento”, llevándose la mayor nentes extensible con un pequeño número
ción paralelizada. En la mayoría de los parte de los nuevos desarrollos a la imple- de módulos. Estos módulos se pueden
casos, los programadores han de diseñar o mentación alternativa Open MPI de nueva seleccionar y configurar en tiempo de eje-
personalizar estas aplicaciones paralelas generación. cución. Al framework de componentes se
para poder aprovechar las ventajas de las De cualquier modo, LAM/MPI sigue le conoce por SSI (System Services Inter-
arquitecturas paralelas. MPI (Message-Pas- recibiendo parches críticos, además, la face).
sing Interface) consiste en un juego de amplia base de sistemas LAM/MPI por LAM/MPI aporta un alto rendimiento
funciones de API que pasan mensajes todo el mundo eleva la probabilidad de en distintas plataformas, que van desde
clusters mononúcleo estándar hasta gran-
Configurando C3 des máquinas SMP en redes de alta veloci-
Existen varias herramientas shell de ln -s /opt/c3-4/cpush
dad. Además del alto rendimiento, LAM/
código abierto distribuidas que propor- /usr/bin/cpush MPI incluye un número de funcionalida-
cionan funcionalidades de administra- El siguiente paso consiste en especificar
des de usabilidad que ayudan en el
ción de clusters, pero hemos decidido desarrollo de la aplicación MPI a gran
en el archivo /etc/c3.conf los nodos del
utilizar C3 [2], una herramienta de ges- escala.
clúster, como se muestra en el Listado 1
tión centralizada de clusters excelente,
(en cuyo ejemplo se presupone que
rápida y eficiente. La suite de C3 propor-
todos los nodos del clúster son capaces Listado 1: Ejemplo de
ciona una serie de herramientas para la
de resolver nombres de host mediante
gestión de los archivos y procesos del
sus archivos /etc/hosts). Y ya podemos
Archivo /etc.c3.conf
clúster.
probar la funcionalidad de las herra- 01 cluster local {
Se puede descargar el RPM de C3 desde
el sitio web del proyecto [3], que se ha mientas de C3. Por ejemplo, la herra- 02 alpha:alpha1 # Nombre
de instalar como root. El instalador mienta cexec ejecuta un comando en de host público y privado del
dejará el paquete en el directorio /opt/ cada nodo del clúster. El comando nodo maestro
c3-4 para la versión actual. Luego se
03 bravo[2-5] # Notación
añaden los siguientes enlaces simbóli- #/home/root> cexec df
compacta para especificar los
cos:
ln -s /opt/c3-4/cexec muestra el diseño del sistema de archi- nodos esclavos
/usr/bin/cexec vos de cada nodo cliente. 04 }
En este artículo veremos cómo comen- lugar de SAN. Un sistema de archivos en si esta funcionalidad de seguridad mejo-
zar con la programación paralela en LAM/ clúster, como GFS, GPFS o Veritas puede rada no hiciese falta, se podría considerar
MPI. proporcionar mejoras adicionales sobre el la posibilidad de desactivarla. El cortafue-
rendimiento; de todos modos, nótese que gos iptables también viene habilitado por
El Clúster casi el 95 por ciento de las implementacio- defecto. Si el clúster se encuentra en una
El clúster usado aquí consiste en un centro nes de computación en clúster funcionan red en la que se confía completamente,
dotado de cinco blades de Intel. Cada bien con un simple NAS o SAN. también se puede desactivar. De lo contra-
blade dispone de dos procesadores, dos Cada sistema blade debería contar con al rio, se debería habilitar el cortafuegos, con
tarjetas Ethernet, una tarjeta FC y 8GB de menos dos interfaces Ethernet. Se habría un acceso por SSH habilitado, en el nodo
memoria. Hemos usado Red Hat Linux de considerar incluso la posibilidad de maestro solamente.
Enterprise Edition v4 como sistema opera- tener tarjetas Ethernet adicionales en los Si el clúster contiene un gran número de
tivo para este ejemplo de HPC (High-Perfor- nodos cliente o maestro y hacer enlaces nodos, convendrá disponer también de
mance Computing). Ethernet (bonding) entre las interfaces de algún tipo de herramienta de administra-
Para las implementaciones de bajo coste la red pública o la privada para mejorar el ción para la gestión centralizada del clús-
se puede usar almacenamiento SCSI o rendimiento y la disponibilidad. ter. Aquí se usará C3, un juego de herra-
almacenamiento basado en SAN (sólo para En nuestra red, el direccionamiento de mientas de código abierto para la gestión
el nodo maestro), y hacerlo disponible las comunicaciones dentro del clúster hace de clusters (ver el cuadro titulado “Instala-
para el resto de nodos cliente a través de uso de un espacio de direcciones privado ción de C3”).
NFS. Otra posibilidad sería usar NAS en no enrrutable (como por ejemplo
10.100.10.xx/24). Los nodos esclavos usan Creando un Usuario para
Listado 2: /etc/lam/lamhosts sólo un puerto Ethernet de 1GB con una LAM
dirección en la red privada. La dirección Antes de iniciar la ejecución de LAM, crea-
01 bravo1.cluster.com
del nodo maestro (eth0) se usa como remos un usuario no-root que será el pro-
02 bravo2.cluster.com cpu=2
puerta de enlace para los nodos esclavos. pietario de los demonios de LAM. En el
03 bravo3.cluster.com cpu=2 SELinux viene habilitado de forma pre- nodo maestro, ejecutamos:
04 bravo4.cluster.com determinada en los sistemas RHEL 4, pero
/home/root> useradd -d lamuser
Tabla 1: Comandos de LAM /home/root> passwd lamuser U
(e introducimos la contraseña
Comando Propósito Sintaxis
para lamuser)
lamnodes Muestra toda la información relativa a los nodos Para mostrar CPU, hostname
Usamos cpush para sincronizar la informa-
del universo LAM. Una vez finalizado lamboot, y otra información del todos los
hostnames se hace transparente para LAM. En los nodos del universo LAM: ción de seguridad relativa a lamuser entre
este punto, el comando lamnodes se puede #lamnodes -N el nodo maestro y todos los nodos cliente:
ejecutar con las opciones N o C.
lamhalt Mata todos los procesos MPI que haya ejecután #lamhalt /home/root> cpush /etc/passwd
dose y apaga el universo LAM entero. cpush /etc/shadow
lamclean Elimina todos los programas en ejecución del #lamclean
cpush /etc/group
universo LAM pero no apaga el universo
propiamente dicho. Este comando es útil cuando cpush /etc/gshadow
una tarea paralela se cuelga en el entorno de
ejecución de LAM. Además necesitaremos configurar el
lamgrow Se usa para añadir un nodo al universo LAM #lamgrow? ssi boot ssh bravo6. acceso SSH sin contraseña para la cuenta
en ejecución cluster.com lamuser.
lamshrink Elimina un nodo específico del universo LAM. #lamshrink n2 (elimina el nodo
Este comando no puede tomar un nombre de
host como argumento, sólo nombres de nodos
n2 del universo LAM) Instalación de LAM/MPI
LAM del tipo nxx. Conceptualmente, el uso de LAM/MPI
Mpiexec Funcionalmente equivalente a lamexec, pero #mpiexec <opciones> para la computación paralela es muy sen-
con la ventaja añadida de ejecutar programas comando1:comando2 cillo. Primero hemos de iniciar el entorno
en plataformas heterogéneas, programas MPMD de ejecución (o demonio) de LAM en
y programas MPI a través de scripts. todos los nodos maestro y cliente antes de
compilar o ejecutar cualquier código para-
Listado 3: Salida de lamboot lelo. Luego, ya se pueden compilar los
01 LAM 7.0.6/MPI 2 C++/ROMIO - Indiana University
programas MPI y ejecutarlos en el
entorno paralelo proporcionado por el
02
demonio de LAM. Al terminar, se pueden
03 n0<1234> ssi:boot:base:linear: booting n0 (bravo1.cluster.com)
parar todos los demonios de LAM en los
04 n0<1234> ssi:boot:base:linear: booting n1 (bravo2.cluster.com)
nodos que toman parte en la computa-
05 n0<1234> ssi:boot:base:linear: booting n2 (bravo3.cluster.com)
ción.
06 n0<1234> ssi:boot:base:linear: booting n3 (bravo4.cluster.com)
Comenzamos instalando LAM/MPI en
07 n0<1234> ssi:boot:base:linear: finished
todos los nodos del clúster. En el sitio web
cd /tmp/lam
cpush lam-7.10.14.rpm
cexec rpm -i U
lam-7.10.14.rpm
Listado 4: cpi.c
01 —————————————————— 15 * el directorio de nivel 31
02 Ejemplo de programa MPI superior de la distribución de 32 /* Constante para la cantidad
”cpi.c” LAM/MPI. de valores de la estimación */
03 —————————————————— 16 * 33
04 17 * $HEADER$
34 #define NUM_ITERS 1000
18 *
05 /* 35
19 * $Id: cpi.c,v 1.4 2002/11/23
06 * Copyright (c) 2001-2002 The 36 /* Prototipo de la función que
04:06:58 jsquyres Exp $
Trustees of Indiana se usará más abajo. */
University. 20 *
37
07 * All rights reserved. 21 * Partes tomadas del ejemplo
38 static double f(double);
cpi.c de la distribución de
08 * Copyright (c) 1998-2001
MPICH. 39
University of Notre Dame.
22 * 40 int main(int argc, char
09 * All rights reserved.
23 * Programa de ejemplo que *argv[])
10 * Copyright (c) 1994-1998 The
calcula el valor de pi 41 {
Ohio State University.
integrando 42 int iter, rank, size, i;
11 * All rights reserved.
24 * f(x) = 4 / (1 + x^2) 43 double PI25DT =
12 * 25 * 3.141592653589793238462643;
13 * Este archivo es parte del 26 */ 44 double mypi, pi, h, sum, x;
paquete de software LAM/MPI.
27 45 double startwtime = 0.0,
Para obtener
28 #include <stdio.h> endwtime;
14 * información sobre la
licencia, consultar el archivo 29 #include <math.h> 46 int namelen;
LICENSE ubicado en 30 #include <mpi.h> 47 char
es un entero que indica el número de La herramienta recon (se puede ver un trador suele arrancarlo antes de compilar
CPUs disponibles para ser usadas por ejemplo de salida de este comando en la nada.
LAM en un nodo en particular. En caso Figura 1) verifica que el clúster es arranca- Una de las reglas básicas de LAM/MPI es
de existir, se utiliza un valor de 1. Este ble. Aunque recon no arranca el entorno que se usan los mismos compiladores que
valor no tiene por qué representar el de ejecución de LAM y definitivamente no se usaban para compilar y enlazar progra-
número físico de CPUs, sino que puede garantiza el éxito de lamboot, se trata de mas MPI de usuario. De todas formas, este
ser un valor menor que, mayor que, o una buena herramienta con la que testear requisito es transparente para el adminis-
igual al número de CPUs físicas de la la configuración realizada. trador, ya que cada universo LAM propor-
máquina. Su uso es meramente una Otra herramienta importante de LAM es ciona compiladores de envoltura específi-
notación para la opción -C del comando tping, que verifica la funcionalidad de un cos para la comisión de las tareas de compi-
mpirun de LAM/MPI, lo que significa universo LAM enviando mensajes de ping lación.
“inicia un proceso por CPU como se entre los demonios LAM que forman el Algunos ejemplos de este tipo de compi-
especifica en el archivo de esquema de entorno LAM. ladores son mpicc, mpic*+/mpiCC y
arranque”. tping suele tomar dos argumentos: el mpif77, que compilan programas LAM/
conjunto de nodos al que se hará ping (en MPI escritos en C, C++ y FORTRAN en
Inicio del Entorno de notación N) y el número de veces que entornos LAM/MPI.
Ejecución debe hacerlo. Si no se especifica el Con los siguientes comandos es posible
Una vez completo el archivo lamhosts, número de veces que se hará ping, tping compilar programas MPI C y FORTRAN,
se puede usar el comando lamboot para continuará haciéndolo hasta que se le respectivamente:
iniciar el entorno de ejecución de LAM pare (normalmente pulsando Ctrl+C). El
en todos los nodos del clúster: comando de la Figura 2 hace ping una /home/lamuser> mpicc foo1.c -o U
sola vez a todos los nodos del universo foo1
/home/lamuser> lamboot -v U LAM. /home/lamuser> mpif77 -O U
/etc/lam/lamhosts test1.f -o test1
Computación Paralela con Nótese además que se pueden pasar cua-
La salida del comando anterior se mues- LAM/MPI lesquiera opciones adicionales del compila-
tra en el Listado 3. Una vez estén funcionando el universo dor/enlazador a través del compilador de
En caso de haber algún problema con LAM y todos los nodos, ya se puede envoltorio (como -g o -O); que pasarán pos-
lamboot, la opción -d proporciona empezar la aventura en computación teriormente al compilador de trasfondo.
ingentes cantidades de información de paralela. Aunque es posible compilar pro- Los compiladores de envoltorio tan sólo
depuración. gramas MPI sin arrancar LAM, el adminis- añaden las opciones específicas para