Preguntas  de Uso Frecuente

  1.  Se puede ejecutar LAM como root?
  2.  Qué cuernos significa "butear LAM"?
  3.  Existen otros tutores accesibles para iniciarse en  LAM/MPI?
  4.  Qué condiciones deben existir para que LAM buteé  correctamente?
  5.  Cómo se puede añadir ejecutables LAM en mi PATH?
  6.  Si tengo más de un NIC?
  7.  Que es la herramienta recon y como usarla?
  8.  recon funciona, pero lamboot falla, por qué?
  9.  Qué es y para qué sirve el archivo .rhosts?
  10.  Se puede usar "+" en mi archivo .rhosts?
  11.  Se puede usar SSH en lugar de RSH?
  12.  Como evito que SSH pregunte mi contraseña?
  13.  recon/lamboot dicen que no encuentran ejecutables LAM  en el nodo remoto, qué  está pasando?
  14.  Usa LAM puertos estáticos?
  15.  Puedo hacer que lamboot sea anfitrión fuera de mi  cortafuegos (firewall)?
  16.  lamboot parece colgarse, por qué?
  17.  Se puede distribuir múltiples lamboot sobre un única  máquina?
  18.  Como se usa lamboot en una máquina múltiple-procesador?


1. Se puede ejecutar LAM como root?
No... Esta es una pésima idea. LAM está explícitamente deshabilitado para que se ejecute como root salvo recon, que permite al administrador testear la funcionabilidad del sistema. Las razones son obvias y elocuentes.


2. Qué cuernos significa "butear LAM"?
El entorno LAM/MPI debe ser levantado o buteado antes de que cualquier cliente o aplicación MPI puede correr. LAM usa un demonio sobre cada nodo para control de procesos, control de meta entorno, y en algunos casos, paso de mensajes. "Butear LAM" se refiere al acto de lanzar ese demonio sobre cada nodo. El comando lamboot es el usado para este fin. Una vez que no se requiera más del ambiente LAM se puede usar el comando lamhat para detener los procesos demonios sobre cada nodo. Después de esto no se podrá ejecutar ningún LAM ejecutable hasta que no sea nuevamente lanzado.


3. Existen otros tutores accesibles para iniciarse en LAM/MPI?
Sí, pero no tengo los enlaces....

4.
Qué condiciones deben existir para que LAM buteé correctamente?

Para que LAM buteé correctamente se debe satisfacer todas estas condiciones
4. Cómo se puede añadir ejecutables LAM en mi PATH?
LAM debe poder hallar los ejecutables en su PATH de cualquier forma. Esto condiciona a que debe tener una adecuada configuración del archivo asociado con el shell. Dependiendo del shell estos archivos son:

Shell
Archivos
sh
.profile tanto para modo interactivo como no  interactivo.
csh
.cshrc seguido por .login modo interactivo ó  .cshrc modo no interactivo
tcsh
.tcshrc seguido por .login modo interactivo  ó .tcshrc solo modo no interactivo
bash
.bash_profile modo interactivo ó .bashrc  modo no interactivo
 
Nota:
El modo no interactivo está asociado a las operaciones sobre nodos remotos, ó también, a las acciones de los script.

5.
Si tengo más de un NIC?

Las dos configuraciones más comunes para poner apunto un cluster de computadoras en paralelo son:
 En cada uno de los casos, existe al menos un nodo que tiene dos direcciones IP. Entonces como se reselve este inconveniente?
La respuesta es usar la dirección IP que refiere al NIC que se desea usar para las comunicaciones TCP/IP entre nodos. LAM usará el NIC asociado con la dirección definida en la configuración de buteo. Por ejemplo en el primer caso, el nodo maestro puede estar representado en el archivo de buteo con la dirección IP de su NIC sobre la red privada, mientras que los esclavos sólo tendrán la dirección IP del maestro. En el segundo caso, deberá aprecer en el archivo de buteo las direcciones IP asociada a cada NIC que será usada para la comunicación TCP/IP.
Cabe destacar que LAM trabaja muy bien en el primer caso, en cambio en el segundo LAM solo resolverá, si fuese necesario, los nombres sobre el nodo donde lamboot está ejecutándose, pues LAM solo usa direcciones IP.

6. Que es la herramienta recon y como usarla?
recon se usa para verificar que usuario tiene correctamente configurado el mecanismo de buteo. Es decir, verifica que todos los nodos puedan arrancar para una dada configuración de buteo. Esto no garantiza que lamboot funcionará apropiadamente, pues puede fallar por otras razones.

7. recon funciona, pero lamboot falla, por qué?
Porque recon solo verifica que los nodos arranquen para una dada configuración, pero puede existir otras causas para que falle lamboot. Por ejemplo, lamboot falla cuando uno de los hostname en la configuración se refiere a la dirección IP 127.0.0.1. Si bien esto es correcto cuando solo existe un solo nodo sobre una única máquina, en un universo de varias máquinas ninguno de los otros nodos puede resolver dicha IP. Por eso en un cluster todos las máquinas deben referir a direciones exportables tanto a una red privada ó global dependiendo el caso.

8. Qué es y para qué sirve el archivo .rhosts?
Si uno usase el comando rsh para lanzar procesos sobre un nodo remoto, uno probablemente requiera tener el archivo $HOME/.rhosts
Este archivo lo habilita a ejecutar comandos remotos sobre nodos remotos sin que se le solicite la contraseña. Los permisos de este archivo son 644. Este debe estar sobre el directorio home de todos los nodos que usarán LAM.
Cada línea en dicho archivo apunta a una máquina e indica el usario que puede lanzar LAM. Por ejemplo , si el usuario pepito desea lanzar programas desde la máquina pepitomachine para la máquina alfa, beta y gammam, entonces debe existir un archivo .rhosts sobre cada una de las máquinas remotas con al menos la siguiente línea

pepitomachine pepito

El primer campo indica el nombre de la máquina donde la tarea se origina, el segundo el nombre del usuario que puede originar tareas en la máquina hesped. Por motivos de seguridad es conveniente usar el nombre completo de la máquina origen, o cuando se deba resolver el nombre, es decir:

pepitomachine.lugar.com pepito

Si no se encuentra una línea que refiera a la máquina, rsh exigirá la contraseña, como LAM exigen que no se solicite claves, lamboot fallará.

9. Se puede usar "+" en mi archivo .rhosts?
NO! Esto es un terrible agujero de seguridad

10.
Se puede usar SSH en lugar de RSH?

SI! Se puede cambiar el agente de acción remota para lanzar el demonio que usa LAM en cada nodo. Mientras rsh es por defecto, este puede cambiarse por otro agente como ser ssh. Si se usa este agente es menester usar la bandera "-x" para evitar reevio sobre el puerto 6000, los cuales puede generar mensages de error provocados por xauth.
Se puede especificar el uso de ssh durante el momento de compilado con

./configure --with-rsh="ssh -x"

En las versiones superiores a  la 6.5.7 se puede sobreescribir el agente remoto con la variable de entorno LAMRSH antes de ejecutar lamboot y recon ó colocarla en el archivo de configuración correspondiente. Por ejemplo para el bash

export LAMRSH="ssh -x"
recon lamhost

11. Se puede usar SSH en lugar de RSH?
Primero hay que generar el par clave DSA público/privado con ssh-keygen

ssh-keygen -t dsa

aceptando los valores por defecto se generaran dos archivos en $HOME/.ssh uno es id_dsa clave privada y otro id_dsa.pub clave pública, si es menester puede ingresar una contraseña maestra.
Segundo copie el archivo en $HOME/.ssh/id_dsa.pub generado por ssh-keygen de la siguient forma

cd $HOME/.ssh
cp id_dsa.pub authorized_keys

Cuidado no cambiar el nombre
authorized_keys por otro.
Tercero ssh es muy quisquilloso con los permisos. Asegúrese que los permisos de $HOME/.ssh sea 755 que sean estos, para los archivos contenios en él

-rw-r--r--    1 hcaste   hcaste        602 dic 18  2002 authorized_keys
-rw-rw-r--    1 hcaste&nbbsp;  hcaste        109 dic 18  2002 environment
-rw-------    1 hcaste&nbbsp;  hcaste        736 dic 18  2002 id_dsa
-rw-r--r--    1 hcaste&nbbsp;  hcaste        602 dic 18  2002 id_dsa.pub
-rw-r--r--    1 hcaste&nbbsp;  hcaste       4526 oct  2 10:11 known_hosts


El archivo environment contine el $PATH por defecto que usará el shell levantado por el agente. Por ejemplo:


HOME=/home/hcaste
PATH=/home/hcaste/bin:/home/hcaste/local/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:

Tercero para activar el agente de autenticación ejecute

eval `ssh-agent`

Una vea que el agente está corriendo debe comunicarle su contraseña maestra a traves del comando

ssh-add $HOME/.ssh/id_dsa


Cuarto se debe tener el mismo $HOME/.ssh en sus directórios home remotos para que no sea pedida la contraseña. Por lo tanto debe copiar los archivos por algún mecanismo alternativo.

12. recon/lamboot dicen que no encuentran ejecutables LAM en el nodo remoto, qué está pasando?
Esto puede deberse a que no está definido en el $PATH del shell levantado por el agente. Otra solución es duplicar el ejecutable en el mismo directório que en la máquina local.

13. Usa LAM puertos estáticos?
No. El comando lamboot  asigna socket en cada nodo del sistema de forma dinámica asi como los puertos permitidos para clientes, los mayores al 1024.

14. Puedo hacer que lamboot sea anfitrión fuera de mi cortafuegos (firewall)?
Como LAM no usa puertos estáticos, no es posible predecir que puertos usará, luego no es aconsejable usarlo entre máquinas que compartan un cortafuegos.

15. lamboot parece colgarse, por qué?
Para saber las causas probables, ejecute recon y lamboot con la opción -d, por otro lado los mensajes de error en cada nodo estarán en /var/log o en el adecuado a su configuración.

16. Se puede distribuir múltiples lamboot sobre un única máquina?


17. Como se usa lamboot en una máquina múltiple-procesador?
Basta con indiar en el archivo de configuración correspondiente la opción cpu=N donde N es el número de procesadores existentes. Por ejemplo:

clara user=hcaste
oscura user=hcaste cpu=2


Tutor: Primeros pasos en LAM


Butear LAM

Primeramente el usuario debe crear un archivo que indique el listado de máquinas nodos del cluster. Por ejemplo

hcaste@clara:~/local/etc$ cat lamhosts

oscura.intranet.ar user=hacste
clara.intranet.ar user=hcaste

Cada máquina debe
dar un identificador (nodo-id) empezando por 0 para la primera máquina de la lista, 1 para la segunda etc. La herramienta recon verifica que el cluster es buteable.


hcaste@clara:~/local/etc$ recon -v lamhosts
recon: -- testing n0 (clara)
recon: -- testing n1 (oscura)

Lu
ego es posible lanzar LAM sobre cada máquina del cluster


hcaste@clara:~/local/etc$ lamboot -v lamhosts
LAM 6.5.8/MPI 2 C++/ROMIO - Indiana University
Executing hboot on n0 (clara - 1 CPU)...
Executing hboot on n1 (oscura - 1 CPU)...
topology done     

El comando
tping permite verificar que el cluster está corriendo correctamente


hcaste@clara:~/local/etc$ tping -c1 N

  1 byte from 1 remote node and 1 local node: 0.004 secs
1 message, 1 byte (0.001K), 0.004 secs (0.551K/sec)
roundtrip min/avg/max: 0.004/0.004/0.004


Compilar programas MPI
La distribución de LAM tiene una serie de programas diseñados para facilitar la compilación de código fuente escrito en C/C++ y FORTRAN. Por ejemplo para compilar el siguiente código fuente

#include<stdio.h>
#include<mpi.h>
int main(int argc, char *argv[])
{
    int nproc, rango;
    MPI_Init(&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rango);
    MPI_Comm_size(MPI_COMM_WORLD, &nproc);
    printf("Hola Horacio\n Yo soy %d de %d\n",rango,nproc);
    MPI_Finalize();
    return 0;
}

basta con ejecutar

mpicc hola.c -o hola

Si fuese un programa FORTRAN debe ser

mpif77 hola.f -o hola

Ejecutando programas MPI
Para poder hacer correr el programa compilado hola en el cluster es preciso que el mismo esté duplicado en las máquinas del cluster. Se lo ejecuta por medio del comando mpirun pues este llama a los auxiliares de entorno.

hcaste@clara:~/varios/mpi$ mpirun -v -np 2 hola
29363 hola running on n0 (o)
877 hola running on n1
Hola Horacio
Yo soy 0 de 2
Hola Horacio
Yo soy 1 de 2

Monitorear aplicaciones MPI
La completa sincronización de todos los procesos y mensajes puede ser visualizadas en cualquier momento por:

hcaste@clara:~/varios/mpi$ mpitask
TASK (G/L)           FUNCTION      PEER|ROOT  TAG    COMM   COUNT   DATATYPE

Se puede visualizar el número de mensajes entre procesos con:

hcaste@clara:~/varios/mpi$ mpimsg
SRC (G/L)      DEST (G/L)     TAG     COMM     COUNT    DATATYPE    MSG

Limpiar LAM
Todo proceso puede ser matado y todo paso de mensaje limpiado sin rebutear el LAM simplemente hay que ejecutar

hcaste@clara:~/varios/mpi$ lamclean -v
killing processes, done     
closing files, done     
sweeping traces, done     
cleaning up registered objects, done     
sweeping messages, done     

Luego un nuevo mpirun puede ejecutarse.

Detención del demonio LAM
La herramienta lamhalt remueve toda traza de la sesión LAM sobre la red y mata a los demonios.

hcaste@clara:~/varios/mpi$ lamhalt

En el caso de una falla catastrófica, algunos nodos se han caído, lamhalt se cuelga y no realiza correctamente las operaciones. En este caso la herramienta wipe realiza un proceso de remueve más selectivo.

hcaste@clara:~/local/etc$ wipe -v lamhosts
LAM 6.5.8/MPI 2 C++/ROMIO - Indiana University
Executing tkill on n0 (clara)...
Executing tkill on n1 (oscura)...

Fin.

1