Instalación, configuración y prueba de MPICH2 (versión 1.0.8) en los Laboratorios de la EPS

Las implementaciones en MPI consisten en un conjunto de bibliotecas de rutinas que pueden ser utilizadas en programas escritos en los lenguajes de programación C, C++, Fortran y Ada. La ventaja de MPI sobre otras bibliotecas de paso de mensajes, es que los programas que utilizan la biblioteca son portables y rápidos. Existen múltiples implementaciones de MPI.

MPICH es una implementación de MPI libre y portable. MPICH es software libre y gratuito. Está disponible para la mayoría de distribuciones de Linux y también para MAC OS X y Microsoft Windows.

La parte final del nombre (CH), viene de “Chameleon” (Camaleón), la cual fue una biblioteca de programación paralela desarrollada por William Gropp, uno de los fundadores de MPICH.

MPICH tiene tres revisiones principales (en orden cronológico):

MPICH (ó MPICH1) implementaba el estándar MPI-1.1, 1.2 y posteriormente 1.3. En 2001 empezó a implementar también MPI-2

MPICH2 (hasta año 2012). Es de la que vamos a hablar, en concreto de la versión 1.0.8 (año 2006). Implementaba las anteriores más MPI-2.1 y MPI-2.2

MPICH3 ó ya, simplemente MPICH (sin número al final), desde Noviembre de 2012 (se sabe porque las versiones de los paquetes descargables son 3.0 o superiores). Implementa el estándar MPI-3 (aprobado en Septiembre de 2012). Añade características adicionales. Es compatible hacia atrás con casi todas las anteriores versiones de MPI (exceptuando ciertas características de C++ para el estándar MPI-1 que ya no son soportadas).

MPICH2 en los laboratorios de la EPS: mpich2-1.0.8

Esta versión se utiliza para las asignaturas de AIC e IC en los Laboratorios de la EPS. También tenemos instalada, en el laboratorio L01, la versión de MPICH1 1.2.7p1 que, por su antigüedad, no utiliza el gestor de procesos MPD y que, por tanto, funciona con sólo un subconjunto de los requisitos de configuración que tiene MPICH2.

Vamos a describir peculiaridades de configuración necesarias para que, una vez descargada la versión señalada, ésta pueda funcionar en cualquier entorno de red local.

mpich2-1.0.8 no es precisamente una versión nueva, utiliza el gestor de demonios MPD y, en la actualidad, disponemos de versiones más actuales de MPICH2 con otro sistema de gestión de procesos llamado Hydra que aquí no explicaremos por salirse del ámbito de este documento.

Software previo que es necesario instalar

Necesitamos dos elementos SW previos a la instalación de MPICH2 necesarios para que funcione:

1 – Instalar los programas cliente/servidor de rsh, rlogin y rexec en todos los equipos.

apt-get install rsh-client rsh-server

2 – Instalar superdemonio xinetd con configuración para rsh, rlogin y rexec correcta para la intercomunicación en la red local.

apt-get install xinetd

Ejemplo de configuración de xinetd para los servicios rexec, rlogin y rsh, respectivamente, en el Laboratorio L28, para la subred 172.20.41.96/27:

rexec

 

rlogin

 

rsh

 

Sobre la utilización de rsh versus ssh como protocolo de comunicación para MPI

Para la comunicación de los equipos podemos utilizar rsh o ssh como protocolo de shell, a nivel de aplicación.

En muchos tutoriales veremos que recomiendan el uso de ssh por cuestiones de seguridad. La capa SSL introduce por encima del nivel TCP, servicios de cifrado y autenticación de las comunicaciones que, de otro modo, no tendremos con rsh.

Si estamos en un entorno seguro con requerimientos de alta velocidad de proceso, podemos y debemos usar rsh por cuestiones de agilidad en las comunicaciones ya que la velocidad de proceso de MPICH2 no se verá penalizada por la carga adicional de cifrado y autenticación introducida por  ssh  y cuyas características, en este entorno, no necesitamos. Como entorno seguro, podemos considerar bien una red local privada a la que sabemos nadie va a poder tener acceso desde fuera, o bien una red no privada pero donde los datos de comunicación no son críticos y donde no es crítico el acceso de terceros a  los mensajes de comunicación entre equipos.

En cualquier otro entorno donde haya algún requisito de seguridad como cifrado o autenticación en las comunicaciones, se haría necesario entonces utilizar ssh.

En los laboratorios de la EPS, por los requerimientos de las asignaturas que usan este software (usabilidad, la agilidad en las comunicaciones y la reducción de los tiempos de proceso y sin datos críticos en la comunicación) utilizamos el protocolo rsh.

Instalación de mpich2-1.0.8

1 – Descargamos el fichero mpich2-1.0.8.tar.gz desde:

http://www.mpich.org/static/tarballs/1.0.8/mpich2-1.0.8.tar.gz

2 – Descomprimimos:

tar xvzfp mpich2-1.0.8.tar.gz

3 – Entramos en directorio para configurar (generar) ficheros Makefile, compilar e instalar:

cd mpich2-1.0.8

./configure  &&  make && make install

Si no hay ningún error, debe pasar de la configuración a la compilación y, de ésta, a la instalación.

4 – El SW y sus ejecutables se quedarán, por defecto, en el directorio /usr/local:

– Binarios en /usr/local/bin y /usr/local/sbin

– Configuraciones locales en /usr/local/etc

Aspectos de configuración

Configuración necesaria para funcionar en los laboratorios de la EPS (o en cualquier red local correctamente configurada):

1 – Fichero /etc/hosts.equiv

Debe listar los nombres de los equipos (hostname) que queremos interconectar entre sí mediante rsh, uno por línea:

figura1

2 – Fichero $HOME/mpd.hosts

Fichero que debe listar también los hosts que queremos incluir como posibles en el anillo MPI a través del gestor MPD. El orden de aparición en el fichero es importante, pues si hay 6 hosts listados en el fichero, pero creamos un anillo con 3 equipos, sólo los 3 primeros equipos del fichero serán incluidos en dicho anillo (es decir, el anillo se crea tomando nombres de hosts del fichero en orden estrictamente secuencial).

figura2

3 – Fichero $HOME/.mpd.conf

Fichero oculto situado en el directorio $HOME de usuario que contiene una variable/contraseña llamada MPD_SECRETWORD. Es imprescindible, al menos en este versión de MPICH2, para la comunicación entre equipos usando MPD y sus comandos (mpdboot, mpdtrace, mpdallexit, etc).

figura3

4 – Fichero $HOME/.bashrc

Línea a añadir a este fichero (al final del mismo), para asegurarnos que los ejecutables de mpich2-1.0.8 sean los invocados si no se utilizan rutas absolutas:

export PATH=$PATH:/usr/local/bin:/usr/local/sbin

Prueba de funcionamiento de MPICH2

Los comandos para probar que MPICH2 funciona entre varios equipos son:

mpdboot

Lanza el demonio gestor de procesos mpd, en los nodos especificados, creando el anillo MPI.

Lo lanzamos desde línea de comandos con dos opciones: una es para cuántos equipos (n), siendo n igual o menor que el número de hosts del fichero mpd.hosts, y la segunda, con qué tipo de protocolo de comunicación entre nodos (rsh ó ssh), según convenga de acuerdo a nuestros objetivos y configuraciones como ya comentamos anteriormente.

Si el comando devuelve (inmediatamente a su lanzamiento) el prompt del sistema, es buena señal (indicio de que todos los primeros n hosts del fichero referido tienen los servicios de xinetd correctamente funcionando y que mpd pudo lanzarse en todos ellos).

mpdboot

De todas formas, siempre podría comprobarse con el comando:   echo $?

(inmediatamente después de lanzar “mpdboot“), para comprobar que, si devuelve 0, en efecto, mpdboot fue correctamente lanzado.

mpdtrace

Para comprobar el estado del anillo MPI, utilizaremos el comando mpdtrace con la opción -l:

mpdtrace

Este comando, si todo funciona correctamente, debe listar todos los nombres de hosts donde se está ejecutando el demonio mpd (nótese que el PID local del proceso mpd se indica seguidamente al nombre de cada host).

mpdallexit

Para romper/deshacer el anillo MPI (finalizar la ejecución de todos los demonios mpd en todos los nodos del anillo), utilizaremos el comando mpdallexit:

mpdallexit

Si todo va bien, la salida del comando debe consistir en, simplemente, devolver el prompt del sistema.

Deja un comentario