Top Banner
Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina [email protected] http://www.frbb.utn.edu.ar/hpc/ 8 de junio de 2016
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

Jul 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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

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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 37: 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

¡Muchas gracias!

¿[email protected]

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

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/