El primer paso es conseguir el codigo fuente de mpich2 (Version 1.3.1) de la siguiente url :
http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.3.1/mpich2-1.3.1.tar.gz
El resultado de descomprimir el archivo : mpich2-1.3.1.tar.gz es una carpeta mpich2-1.3.1 , al ingresar a esta carpeta se puede observar los siguientes archivos
24K -rw-r–r–. 1 gpu gpu 21K Nov 2 2007 README.winbin.rtf
8.0K -rw-r–r–. 1 gpu gpu 7.9K Feb 27 2009 COPYRIGHT.rtf
4.0K -rw-r–r–. 1 gpu gpu 2.0K Feb 27 2009 COPYRIGHT
52K -rw-r–r–. 1 gpu gpu 51K Nov 15 2009 mpich2-doxygen.in
8.0K -rwxr-xr-x. 1 gpu gpu 4.7K May 28 2010 mpl.vcproj
12K -rw-r–r–. 1 gpu gpu 9.8K May 28 2010 mpi.vcproj
228K -rw-r–r–. 1 gpu gpu 228K May 28 2010 mpich2.vcproj
116K -rw-r–r–. 1 gpu gpu 114K May 28 2010 mpich2s.vcproj
548K -rw-r–r–. 1 gpu gpu 546K Sep 3 15:00 mpich2.sln
12K -rwxr-xr-x. 1 gpu gpu 9.5K Sep 9 15:36 makewindist.bat
16K -rw-r–r–. 1 gpu gpu 16K Oct 5 14:53 mpi.def
24K -rw-r–r–. 1 gpu gpu 22K Oct 5 14:53 mpich2.def
12K -rw-r–r–. 1 gpu gpu 9.3K Nov 6 10:02 Makefile.sm
236K -rw-r–r–. 1 gpu gpu 234K Nov 11 02:55 configure.in
328K -rwxr-xr-x. 1 gpu gpu 325K Nov 14 14:43 winconfigure.wsf
8.0K -rw-r–r–. 1 gpu gpu 4.1K Nov 14 14:43 RELEASE_NOTES
48K -rw-r–r–. 1 gpu gpu 46K Nov 16 10:20 CHANGES
4.0K drwxr-xr-x. 3 gpu gpu 4.0K Nov 17 11:48 contrib
4.0K drwxr-xr-x. 2 gpu gpu 4.0K Nov 17 11:48 confdb
1.3M -rwxr-xr-x. 1 gpu gpu 1.3M Nov 17 11:49 configure
40K -rw-r–r–. 1 gpu gpu 40K Nov 17 11:51 README
4.0K drwxr-xr-x. 7 gpu gpu 4.0K Nov 17 11:51 test
4.0K drwxr-xr-x. 15 gpu gpu 4.0K Nov 17 11:51 src
24K -rw-r–r–. 1 gpu gpu 21K Nov 17 11:51 Makefile.in
4.0K drwxr-xr-x. 8 gpu gpu 4.0K Nov 17 11:51 examples
4.0K drwxr-xr-x. 13 gpu gpu 4.0K Nov 17 11:51 doc
4.0K drwxr-xr-x. 4 gpu gpu 4.0K Nov 17 11:51 maint
4.0K drwxr-xr-x. 4 gpu gpu 4.0K Nov 17 11:56 man
4.0K drwxr-xr-x. 4 gpu gpu 4.0K Nov 17 11:56 www
Entre ellos el importante es el archivo configure , con el se compilara e instalara mpich en nuestro sistema .
Para instalar mpich se debe crear una carpeta : mkdir /usr/local/mpich2_install
Para comenzar la compilacion es necesario el siguiente comando :
[root@localhost mpich2-1.3.1]# ./configure –prefix=/usr/local/mpich2_install/ –enable-shared –with-pm=mpd
[root@localhost mpich2-1.3.1]# make
[root@localhost mpich2-1.3.1]# make install
Esto instala mpich2 en la carpeta /usr/local/mpich2_install .
drwxr-xr-x. 2 root root 4096 Dec 11 15:59 bin
drwxr-xr-x. 2 root root 4096 Dec 11 15:58 etc
drwxr-xr-x. 3 root root 4096 Dec 11 15:58 include
drwxr-xr-x. 3 root root 4096 Dec 11 15:59 lib
drwxr-xr-x. 2 root root 4096 Dec 11 15:59 sbin
drwxr-xr-x. 8 root root 4096 Dec 11 15:59 share
Lo siguiente es actulizar las variables $PATH y $LD_LIBRARY_PATH del usuario que desee desarrollar usando la libreria mpich2 . Esto se logra editando el archivo .bashrc que se encuentra en el $HOME de cada usuario , agregando las siguientes dos lineas :
export PATH=/usr/local/mpich2_install/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mpich2_install/lib:$LD_LIBRARY_PATH
Luego procedemos a guardas los cambios. Lo mas sano luego de esto es reiniciar la sesion .
Ahora podemos probar si es que las utilidades son encontradas en el nuevo $PATH , para esto es suficiente hacer un which mpicc .
El siguiente paso es configurar el manejador de procesos (opcion –with-mp al momento de hacer el ./configure) , para esto hay que crear un archivo llamado .mpd.conf en el $HOME -del usuario que desea lanzar trabajos mpi- con una » palabra secreta » . El contenido del archivo .mpd.cond seria algo parecido a esto MPD_SECRETWORD=cluster y darle los permisos necesarios (chmod 600 .mpd.conf) .
Para usar mpich2 en la maquina donde se han seguido estos pasos , solo es levantar el demonio mpd , con la siguiente instruccion :
[user@localhost ~]$ mpd &
Al hacer un ps aux | grep mpd se deberia obtener algo parecido a esto :
[user@localhost ~]$ ps uax | grep mpd
user 18117 0.2 1.1 184524 11576 pts/6 S 20:44 0:00 python2.6 /usr/local/mpich2_install/bin/mpd
user 18120 0.0 0.0 103200 836 pts/6 S+ 20:45 0:00 grep mpd
Con lo que ya tendriamos este nodo preparado para comenzar a programar usando mpich2 .
Otra manera de verificar que el entorno mpich2 esta listo para ser usado es con el comando mpdtrace -l , la salida deberia ser similar a la siguiente :
[user@localhost ~]$ mpdtrace -l
localhost.localdomain_55930 (127.0.0.1)
Ejemplo de mpich2 : Comunicacion Simple en C
/*simpleMPI.c*/
#include <stdio.h>
#include «mpi.h»
int main(argc,argv)
int argc;
char *argv[];
{
int myid;
char line[128];
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
fprintf ( stdout, «Imprimiendo en stdout…%d\n», myid );
fprintf ( stderr, «imprimiendo en stderr…%d\n», myid );
fgets ( line, 128, stdin );
fprintf ( stdout, «Desde stdin: %s», line );
MPI_Finalize();
return 0;
}
Para compilarlo : mpicc -o simpleMPI simpleMPI.c
Para correr el ejecutable usando 4 procesos : mpirun -np 4 ./simpleMPI
Filed under: Computac. Distribuida, Computer Science, CUDA | Leave a comment »