Categorías: Noticias

[Sistemas Multiprocesador] Instalación y configuración de MPICH2

Instalación de los paquetes necesarios

Instalación de mpich2 y mpich2-doc

  • Usando el repositorio de ubuntu:

deb http://es.archive.ubuntu.com/ubuntu lucid main universe

e instalando los paquetes (mpich2 y mpich2-doc) a través de apt.

  • O descargándose los paquete a través del cualquier repositorio dentro del subdirectorio:

pool/universe/m/mpich2

Por ejemplo http://es.archive.ubuntu.com/ubuntu/pool/universe/m/mpich2/ instalándo con Gdebi posteriormente.

Instalación de openssh-server

Para controlar los ordenadores dentro del cluster se recomienda instalar un servidor SSH para cada uno de ellos, por ejemplo OpenSSH.

$ apt-get install openshh-server

Configurar los nombres de las máquinas

Para ello editaremos el fichero /etc/hosts (superusuario) en cada una de las máquinas que comprenden el grupo, poniendo la etiqueta master al equipo maestro. Importante comentar la línea que indica que el servidor local es 127.0.1.1, así, por ejemplo.

127.0.0.1 localhost
# 127.0.1.1 ordenadorMaestro
192.168.1.147 ordenadorMaestro master
192.168.1.146 ordenadorEsclavo1
192.168.1.145 ordenadorEsclavo2
192.168.1.144 ordenadorEsclavo3
192.168.1.143 ordenadorEsclavo4

Siendo este fichero similar en todos los equipos que componen el anillo.

Crear el archivo de configuración de MPI y de ejecución

Para todas las máquinas crearemos el fichero .mpd.conf en la raiz del usuario que vaya a lanzar el proceso:

echo MPD_SECRETWORD=”contraseña_común” >> .mpd.conf
chmod 600 .mpd.conf

En la máquina que vaya a lanzar el proceso, en este caso el maestro (master) se creará un archivo que contendrá el nombre de las máquinas que van a par
ticipar en la ejecución del mismo:

touch mpd.hostsnano mpd.hosts
ordenadorMaestro master
ordenadorEsclavo1
ordenadorEsclavo2
ordenadorEsclavo3
ordenadorEsclavo4

Iniciar el servicio MPD

Para ello usaremos en lugar del comando mpd, el comando mpdboot levantando de esta manera el demonio en todas las máquinas indicadas en el fichero anterior siempre que N sea igual al numero de estas, si es menor las irá cogiendo en orden descendente (dentro del fichero).

mpdboot -n 2 [-f fichero_de_hosts)

Para evitar que se nos solicite la contraseña cada que vez que creemos el anillo de máquinas podemos autenticarnos previamente con ssh RSA de la siguiente manera:

$ ssh-keygen -t rsa
$ ssh-copy-id usuario@ordenadorEsclavo1
$ ssh-add

Así, no tendremos que indicar los credenciales cada vez.

Verificación y corrección de errores

Se recomienda usar el comando mdptrace con la opción -l para verificar que todos los ordenadores seleccionados se encuentran dentro del anillo de ejecución.

De surgirnos algún error o tratar de verificar los realizado podemos usar el comando mpdcheck.

Lanzar la aplicación

Antes de lanzar la aplicación hemos de compilarla, CC = mpicc, y siguiendo esta analogía actuaremos de igual forma que el compilador gcc.

Hemos de transferir la aplicación a cada una de las máquinas que van a intervenir en la aplicación, en cuyo caso y al usar el protocolo de SHH:

scp aplicacion_compilada ordenadorEsclavo1:./

Es importante entender que no se puede trabajar en un grupo cuyos procesadores no trabajan con la misma arquitectura, en tal caso podemos transferir el ejecutable o el fuente y compilarlo independemente en cada máquina, cuyo resultado es análogo ya que todas usarán la misma arquitectura.

Ahora estamos preparados para lanzar la aplicación compilada, así:

mpdexec -n 10 ./aplicación

Si el parámetro N es mayor que el número de máquinas que intervienen se usarán varios cores dentro de cada ordenador, es decir, si tenemos dos máquinas y usamos -n 4 estaremos indicando que queremos dos nucleos para cada ordenador que participa.

NOTA: mpdexec y mpdrun son el mismo programa, siendo el segundo una copia del primero.

¿Alguna duda?

Alberto Hornero Luque

Contínuamente relacionado con el procesamiento de imágenes y el análisis numérico, se encuentra actualmente trabajando como Ingeniero Técnico en el laboratorio de Métodos Cuantitativos de Teledetección del CSIC. Administrador del portal Linux Hispano centra sus intereses en tecnologías abiertas, desarrollos en la nube y GNU/Linux, y hace poco fundó junto a Javier Carazo una startup, Codection. Puedes seguir sus updates en @ahornero y LinkedIn.

Ver comentarios

  • @joel: Perdona que hayamos tardado tanto en responderte, pero llevamos unos días hasta arriba como habrás notado con la baja actividad del portal.

    Te comento. MPI es un estándar y una implementación de una técnica de paso de mensajes para sincronizar procesos e intercambiar información en sistemas multiprocesador de memoria distribuida.

    Imagínate que tienes en tu casa tres equipos distintos. Podrías paralelizar el cálculo del mismo en ellos de forma que aprovecharas las tres máquinas simultáneamente para resolver el mismo problema.

    MPI te hace todo esto bastante transparente y tiene un nivel de abstracción bastante alto, no tanto como otras soluciones (CORBA que distribuye los objetos directamente), pero sí que mayor que la creación de sockets para este tipo de labores.

    Si quieres pregunta más que este tema es muy interesante.

  • @joel: Para concretar más, MPI es el estándar, MPICH y MPICH2 son implementaciones del mismo (versión 1 y 2, respectivamente).

  • hola el problema es que cuando ejecuto mpdboot -n 2 -f mpd.host

    me dice que mpdboot:command not found

    si tengo instalado mpich2 y mpich-doc
    y no se que hacer =/

Entradas recientes

DeepSeek

3 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

1 mes hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace