El documento describe la interfaz MPI (Message Passing Interface) y cómo puede usarse en Perl. Explica brevemente qué es MPI, sus características principales y su modelo de programación. Luego introduce dos módulos de Perl, Parallel::MPI y Parallel::MPI::Simple, que permiten usar MPI en Perl de forma fiel al estándar o de forma más sencilla respectivamente. Finalmente, concluye que estos módulos son útiles para pruebas y experimentos aunque su rendimiento puede ser bajo debido a conversiones de tipos.
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
Perl mpi
1. MPI en Perl
Ruym´n Reyes Castro
a
27 de octubre de 2007
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 1 / 28
2. Resumen
1 MPI
2 MPI y Perl
3 Conclusiones
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 2 / 28
3. Resumen
1 MPI
2 MPI y Perl
3 Conclusiones
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 3 / 28
4. ¿Qu´ es MPI?
e
Message Passing Interface
Es una especificaci´n para desarrolladores (no es realmente una
o
librer´
ıa)
Objetivos
pr´ctico
a
portable
eficiente
flexible
Interfaces para C/C++ , Fortran
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 4 / 28
6. ¡Y para Perl!
(para python tambi´n...)
e
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 5 / 28
7. Modelo de programaci´n
o
Pensado para memoria distribu´ıda
Implementado en diversos modelos (Distribu´ compartida,
ıda,
h´
ıbrida)
El paralelismo es impl´
ıcito
El n´mero de tareas ejecutadas es est´tico
u a
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 6 / 28
8. Esquema de un programa MPI
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 7 / 28
9. C´digo MPI b´sico
o a
#i n c l u d e ” mpi . h”
#i n c l u d e < s t d i o . h>
int main ( int argc , char ∗ argv [ ] ) {
int numtasks , rank , rc ;
rc = MPI_Init(&argc ,& argv ) ;
MPI_Comm_size ( MPI_COMM_WORLD ,& numtasks ) ;
MPI_Comm_rank ( MPI_COMM_WORLD ,& rank ) ;
printf ( " Number of tasks = %d My rank= %dn" , numtasks , rank )
MPI_Finalize ( ) ;
}
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 8 / 28
10. Algunas funciones...
MPI Comm size : N´mero de procesos lanzados
u
MPI Comm rank : N´mero del proceso actual
u
MPI Send y MPI Recv : Enviar y recibir
Otras muchas...
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 9 / 28
11. Tipos de datos
Funciones trabajan sobre tipo dato concreto
MPI CHAR Car´cter
a
MPI INT Entero
MPI DOUBLE Flotante de doble precisi´n o
MPI PACKED Datos empaquetados
...
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 10 / 28
12. Implementaciones de MPI
Existen varias:
MPICH
LAM-MPI
Propietarias (ibm, bull...)
Ex´ticas
o
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 11 / 28
13. Implementaciones de MPI
Existen varias:
MPICH
LAM-MPI
Propietarias (ibm, bull...)
Ex´ticas
o
Utilizaremos MPICH
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 11 / 28
14. Instalaci´n de MPICH
o
Proceso delicado
especial atenci´n a compiladores
o
Ignorar paquetes de distribuciones
./configure --with-device=ch p4
--prefix=/scratch/mpich/ --enable-sharedlib -rsh=ssh
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 12 / 28
15. Ejecuci´n con mpich
o
mpirun -np numprocs programa
Cada copia se lanza a trav´s de rsh*
e
Se comunican utilizando el device que se haya especificado
Archivo machinefile informa de PCs
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 13 / 28
16. Resumen
1 MPI
2 MPI y Perl
3 Conclusiones
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 14 / 28
17. ¿Por qu´?
e
Multiplataforma
Relativamente sencillo
Forma sencilla de probar algoritmos
No nos preocupamos de los tipos de datos
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 15 / 28
18. M´dulos disponibles
o
Parallel::MPI Interfaz usando XS de la librer´ de mpich
ıa
Parallel::MPI::Simple Implementaci´n de la interfaz con
o
ciertas libertades
PDL::Parallel::MPI Para trabajar con objetos PDL
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 16 / 28
19. Parallel::MPI
Utiliza el lenguaje de interfaz XS
Problema: Mapear tipos de perl a C
Constantes predefinidas
Tipos de datos para mensajes
MPI INT
MPI FLOAT
MPI DOUBLE
MPI CHAR
Convertir tipos de perl a C conlleva sobrecarga
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 17 / 28
20. Instalaci´n
o
No usar Cpan
Fijar MPIDIR en Makefile.PL
CC y LD con mpicc
No olvidar make test
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 18 / 28
21. Ejecuci´n
o
Dar permisos de ejecuci´n al script
o
No se le pueden pasar variables de entorno (PERL5LIB)
/usr/bin/perl -w -I rutaModulo
mpirun -np numprocs perl
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 19 / 28
22. Ejemplo
MPI SEND
MPI Send $send, length($send),
MPI CHAR, 0, $tag, MPI COMM WORLD
Referencia al dato
Especificar longitud y tipo
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 20 / 28
23. Ejemplo
src/mpi.pl
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 21 / 28
24. Parallel::MPI::Simple
Interfaz con MPI al estio perl
Creada por Alex Gough (6 m´dulos, varios art´
o ıculos)
Evita el uso de tipos de datos
No sigue el est´ndar
a
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 22 / 28
25. Parallel::MPI::Simple
Interfaz con MPI al estio perl
Creada por Alex Gough (6 m´dulos, varios art´
o ıculos)
Evita el uso de tipos de datos
No sigue el est´ndar
a
Alex Gough trabaja en una estaci´n aislada en el ´rtico
o a
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 22 / 28
26. Instalaci´n
o
No usar cpan
CCFLAGS=’-fPIC’
CC=’mpicc’ (No es suficiente?)
Editar Makefile final a mano (sucio)
Probar el test
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 23 / 28
27. Ejecuci´n
o
Dar permisos de ejecuci´n al script
o
No se le pueden pasar variables de entorno (PERL5LIB)
/usr/bin/perl -w -I rutaModulo
mpirun -np numprocs perl
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 24 / 28
28. Ejemplo
MPI SEND
MPI Send($send, 0, 0, MPI COMM WORLD );
No hay referencia al dato
No se especifica ni el tipo ni la longitud
M´s sencillo
a
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 25 / 28
29. Ejemplo
src/mpiSimple.pl
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 26 / 28
30. Resumen
1 MPI
2 MPI y Perl
3 Conclusiones
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 27 / 28
31. Conclusiones
Parallel::MPI fiel al est´ndar, f´cil de portar
a a
Parallel::MPI::Simple fiel a Perl, f´cil de escribir
a
Los m´dulos son buenos para pruebas y experimentos
o
Tienen bajo rendimiento (conversiones)
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 28 / 28
32. Gracias por su atenci´n
o
Ruym´n Reyes Castro
a
rreyes@ull.es
Ruym´n Reyes Castro ()
a MPI en Perl 27 de octubre de 2007 29 / 28