Perl mpi

424 views
328 views

Published on

Using MPI in Perl

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
424
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Perl mpi

  1. 1. MPI en Perl Ruym´n Reyes Castro a 27 de octubre de 2007Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 1 / 28
  2. 2. Resumen1 MPI2 MPI y Perl3 Conclusiones Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 2 / 28
  3. 3. Resumen1 MPI2 MPI y Perl3 Conclusiones Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 3 / 28
  4. 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
  5. 5. ¡Y para Perl!Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 5 / 28
  6. 6. ¡Y para Perl! (para python tambi´n...) eRuym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 5 / 28
  7. 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. 8. Esquema de un programa MPI Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 7 / 28
  9. 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. 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 recibirOtras muchas... Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 9 / 28
  11. 11. Tipos de datosFunciones 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. 12. Implementaciones de MPIExisten 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. 13. Implementaciones de MPIExisten varias: MPICH LAM-MPI Propietarias (ibm, bull...) Ex´ticas oUtilizaremos MPICH Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 11 / 28
  14. 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. 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. 16. Resumen1 MPI2 MPI y Perl3 Conclusiones Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 14 / 28
  17. 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. 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. 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 CHARConvertir tipos de perl a C conlleva sobrecarga Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 17 / 28
  20. 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. 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. 22. EjemploMPI SENDMPI 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. 23. Ejemplo src/mpi.pl Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 21 / 28
  24. 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. 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 aAlex 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. 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. 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. 28. EjemploMPI SENDMPI 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. 29. Ejemplo src/mpiSimple.pl Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 26 / 28
  30. 30. Resumen1 MPI2 MPI y Perl3 Conclusiones Ruym´n Reyes Castro () a MPI en Perl 27 de octubre de 2007 27 / 28
  31. 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. 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

×