Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier...
Transcript of Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier...
![Page 1: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/1.jpg)
Procesamiento ParaleloIntroducción a MPI
Javier Iparraguirre
Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca11 de Abril 461, Bahía Blanca, Argentina
[email protected]://www.frbb.utn.edu.ar/hpc/
8 de junio de 2016
![Page 2: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/2.jpg)
¿Que es MPI?
![Page 3: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/3.jpg)
Generalidades
• MPI = Message Passing Interface• MPI es una de las APIs más antiguas• Muy usada y portable• Demanda poco desde el punto de vista del hardware• Paralelización explícita
![Page 4: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/4.jpg)
Modelo de programación
![Page 5: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/5.jpg)
Historia
• 1994: MPI-1.0• 1998: MPI-2.0• 2012: MPI-3.0 fue aprobado como estándar
![Page 6: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/6.jpg)
Modos de funcionamiento
![Page 7: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/7.jpg)
Modos de funcionamiento
• Asincrónico• Comportamiento no-determinístico
• Sincronización suelta• Hay sincronización para realizar intercambio• Es viable una secuencia lógica
• SPMD Single Program Multiple Data• El mismo programa corre en todos los nodos• Simple de escalar• Puede haber sincronización suelta o completamente
sincrónico
![Page 8: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/8.jpg)
Bloqueo sin buffer
![Page 9: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/9.jpg)
Bloqueo con buffer
![Page 10: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/10.jpg)
Sin bloqueo sin buffer
![Page 11: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/11.jpg)
Cuadro de protocolos
![Page 12: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/12.jpg)
Programando
![Page 13: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/13.jpg)
Hola Mundo!
# inc lude < s t d i o . h># inc lude " mpi . h "
i n t main ( argc , argv )i n t argc ;char ∗∗argv ;{
i n t rank , s ize ;MPI_ In i t ( &argc , &argv ) ;MPI_Comm_size ( MPI_COMM_WORLD, &s ize ) ;MPI_Comm_rank ( MPI_COMM_WORLD, &rank ) ;p r i n t f ( " He l lo wor ld from process %d of %d \ n " ,
rank , s ize ) ;MPI_Final ize ( ) ;r e t u r n 0 ;
}
![Page 14: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/14.jpg)
Salida
Hel lo wor ld from process 0 of 4He l lo wor ld from process 2 of 4He l lo wor ld from process 3 of 4He l lo wor ld from process 1 of 4
![Page 15: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/15.jpg)
Funciones
• 125 funciones• 6 son las mas usadas
![Page 16: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/16.jpg)
Comunicaciones MPI
![Page 17: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/17.jpg)
Tipos de datos
![Page 18: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/18.jpg)
Ejemplos
![Page 19: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/19.jpg)
Ejemplo 1
# inc lude < s t d i o . h># inc lude " mpi . h "
i n t main ( argc , argv )i n t argc ;char ∗∗argv ;{
i n t rank , s ize ;MPI_ In i t ( &argc , &argv ) ;MPI_Comm_size ( MPI_COMM_WORLD, &s ize ) ;MPI_Comm_rank ( MPI_COMM_WORLD, &rank ) ;p r i n t f ( " He l lo wor ld from process %d of %d \ n " ,
rank , s ize ) ;MPI_Final ize ( ) ;r e t u r n 0 ;
}
![Page 20: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/20.jpg)
Salida ejemplo 1
% mpicc −o he l l owo r l d he l l owo r l d . c% mpirun −np 4 he l l owo r l dHe l lo wor ld from process 0 of 4He l lo wor ld from process 3 of 4He l lo wor ld from process 1 of 4He l lo wor ld from process 2 of 4%
![Page 21: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/21.jpg)
Ejemplo 2
# inc lude < s t d i o . h># inc lude " mpi . h "
i n t main ( argc , argv )i n t argc ;char ∗∗argv ;{
i n t rank , value ;MPI_ In i t ( &argc , &argv ) ;
MPI_Comm_rank ( MPI_COMM_WORLD, &rank ) ;do {
i f ( rank == 0)scanf ( " %d " , &value ) ;
MPI_Bcast ( &value , 1 , MPI_INT , 0 , MPI_COMM_WORLD ) ;
p r i n t f ( " Process %d got %d \ n " , rank , value ) ;} wh i le ( value >= 0 ) ;
MPI_Final ize ( ) ;r e t u r n 0 ;
}
![Page 22: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/22.jpg)
Salida ejemplo 2
% mpicc −o bcast bcast . c% mpirun −np 4 bcast10Process 0 got 1022Process 0 got 22−1Process 0 got −1Process 1 got 10Process 1 got 22Process 1 got −1Process 2 got 10Process 2 got 22Process 2 got −1Process 3 got 10Process 3 got 22Process 3 got −1
![Page 23: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/23.jpg)
Ejemplo 3
# inc lude < s t d i o . h># inc lude " mpi . h "
i n t main ( argc , argv )i n t argc ;char ∗∗argv ;{
i n t rank , value , s ize ;MPI_Status s ta tus ;
MPI_ In i t ( &argc , &argv ) ;
MPI_Comm_rank ( MPI_COMM_WORLD, &rank ) ;MPI_Comm_size ( MPI_COMM_WORLD, &s ize ) ;do {
i f ( rank == 0) {scanf ( " %d " , &value ) ;MPI_Send ( &value , 1 , MPI_INT , rank + 1 , 0 , MPI_COMM_WORLD ) ;
}e lse {
MPI_Recv ( &value , 1 , MPI_INT , rank − 1 , 0 , MPI_COMM_WORLD,&s ta tus ) ;
i f ( rank < s ize − 1)MPI_Send ( &value , 1 , MPI_INT , rank + 1 , 0 , MPI_COMM_WORLD ) ;
}p r i n t f ( " Process %d got %d \ n " , rank , value ) ;
} wh i le ( value >= 0 ) ;
MPI_Final ize ( ) ;r e t u r n 0 ;
}
![Page 24: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/24.jpg)
Salida ejemplo 3
% mpicc −o r i n g r i n g . c% mpirun −np 4 r i n g10Process 0 got 1022Process 0 got 22−1Process 0 got −1Process 3 got 10Process 3 got 22Process 3 got −1Process 2 got 10Process 2 got 22Process 2 got −1Process 1 got 10Process 1 got 22Process 1 got −1%
![Page 25: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/25.jpg)
Instalando en máquina personal
![Page 26: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/26.jpg)
OpenMPI en Ubuntu
aptitude install openmpi-bin openmpi-doc libopenmpi-dev
![Page 27: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/27.jpg)
Compilando
mpicc −o b i n a r i o 01−example . c
![Page 28: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/28.jpg)
Ejecutando
mpirun −np 8 b i n a r i o
![Page 29: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/29.jpg)
Ejecutando en un cluster
![Page 30: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/30.jpg)
Cluster remoto
• Se dispone de un cluster remoto.• Se define la lista de nodos en un archivo (my_hostfile)
![Page 31: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/31.jpg)
Corriendo remoto: lista archivos
compile . shmain . cmy_hos t f i l erun . sh
![Page 32: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/32.jpg)
Corriendo remoto: fuente
# inc lude <mpi . h># inc lude < s t d i o . h>i n t main ( i n t argc , char ∗argv [ ] ) {
i n t myrank , s ize ;MPI_ In i t (& argc , &argv ) ;MPI_Comm_rank (MPI_COMM_WORLD, &myrank ) ;MPI_Comm_size (MPI_COMM_WORLD, &s ize ) ;p r i n t f ( " Hola desde e l proceso %d de %d \ n " ,
myrank , s ize ) ;MPI_Final ize ( ) ;r e t u r n 0 ;
}
![Page 33: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/33.jpg)
Corriendo remoto: compilando
mpicc −o b i n a r i o main . c
![Page 34: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/34.jpg)
Corriendo remoto: nodos en my_hostfile
c5n04 s l o t s =2c5n05 s l o t s =2c5n06 s l o t s =2c5n07 s l o t s =2c5n08 s l o t s =2
![Page 35: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/35.jpg)
Corriendo remoto: ejecutando
mpirun −h o s t f i l e my_hos t f i l e −np 4 b i n a r i o
![Page 36: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/36.jpg)
Corriendo remoto: salida
Hola desde e l proceso 0 de 4Hola desde e l proceso 1 de 4Hola desde e l proceso 2 de 4Hola desde e l proceso 3 de 4
![Page 38: Procesamiento Paralelo - Introducción a MPI Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de](https://reader034.fdocument.pub/reader034/viewer/2022042601/5f6293dd635dd600c739a959/html5/thumbnails/38.jpg)
Referencias
• G. Ananth, G. Anshul, K. George, and K. Vipin.Introduction to parallel computing, 2003.
• MPI Tutorial, Blaise Barney, Lawrence Livermore NationalLaboratoryhttps://computing.llnl.gov/tutorials/mpi/
• ANL MPI Tutotial http://www.mcs.anl.gov/research/projects/mpi/tutorial/