Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías...

35
Procesamiento Paralelo MPI - Tipos y Topologías 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/ 9 de junio de 2016

Transcript of Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías...

Page 1: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Procesamiento ParaleloMPI - Tipos y Topologías

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/

9 de junio de 2016

Page 2: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Tipos de datos derivados

Page 3: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Tipos de datos primitivos

Page 4: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Datos derivados

• Se pueden definir estructuras de datos basados en lostipos primitivos de MPI.

• Los tipos de datos primitivos son contiguos.• Con tipos de datos derivados podemos definir estructuras

de datos no-contiguas y se pueden tratar como contiguasde una forma conveniente.

Page 5: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Formas de crear datos derivados

• Contiguous• Vector• Indexed• Struct

Page 6: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_contiguous

• Provee un nuevo tipo que consiste en múltiples capas deun tipo existente.

• MPI_Type_contiguous (count,oldtype,&newtype)

Page 7: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_vector y MPI_Type_hvector

• Similar al anterior pero permite saltos (stride) regulares enlos desplazamientos.

• MPI_Type_vector y MPI_Type_hvector son idénticas con lasalvedad que en uno el salto se especifica en bytes.

• MPI_Type_vector (count, blocklength, stride,oldtype,&newtype)

Page 8: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_indexed y MPI_Type_hindexed

• Arreglo de tipos de datos primitivos.• MPI_Type_indexed y MPI_Type_hindexed son idénticas

con la salvedad que en uno el salto se especifica en bytes.• MPI_Type_indexed (count, blocklens[], offsets[],

old_type, &newtype)

Page 9: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_struct

• El nuevo tipo de datos se forma de acuerdo al mapacompuesto de datos primitivos.

• MPI_Type_struct (count, blocklens[], offsets[],old_types, &newtype)

Page 10: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_extent

• Retorna el tamaño en bytes de un tipo dado. Usado en lasfunciones que requieren tamaños de los tipos.

• MPI_Type_extent (datatype, &extent)

Page 11: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_commit

• Toma memoria para alojar al nuevo tipo de datos en elsistema. Requerido para todos los tipos de datosderivados.

• MPI_Type_commit( &datatype)

Page 12: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

MPI_Type_free

• Devuelve la memoria tomada para el nuevo tipo de datos.Mandatorio en todos los programas, especialmente dentrode bucles.

• MPI_Type_free (&datatype)

Page 13: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de datos contiguos

Page 14: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de datos contiguos

# inc lude " mpi . h "# inc lude < s t d i o . h># de f ine SIZE 4i n t main ( i n t argc , char ∗argv [ ] ){

i n t numtasks , rank , source =0 , tag =1 , i ;f l o a t a [ SIZE ] [ SIZE ] = { 1 . 0 , 2 .0 , 3 .0 , 4 .0 ,

5 .0 , 6 .0 , 7 .0 , 8 .0 ,9 .0 , 10.0 , 11.0 , 12.0 ,13.0 , 14.0 , 15.0 , 1 6 . 0 } ;

f l o a t b [ SIZE ] ;MPI_Status s t a t ;MPI_Datatype rowtype ;MPI_ In i t (& argc ,& argv ) ;MPI_Comm_rank (MPI_COMM_WORLD, &rank ) ;MPI_Comm_size (MPI_COMM_WORLD, &numtasks ) ;MPI_Type_contiguous ( SIZE , MPI_FLOAT, &rowtype ) ;MPI_Type_commit (& rowtype ) ;i f ( numtasks == SIZE ) {

i f ( rank == 0) {f o r ( i =0; i <numtasks ; i ++)

MPI_Send(&a [ i ] [ 0 ] , 1 , rowtype , i , tag , MPI_COMM_WORLD) ;}MPI_Recv ( b , SIZE , MPI_FLOAT, source , tag , MPI_COMM_WORLD, &s t a t ) ;p r i n t f ( " rank= %d b= %3.1 f %3.1 f %3.1 f %3.1 f \ n " ,

rank , b [ 0 ] , b [ 1 ] , b [ 2 ] , b [ 3 ] ) ;}e lse

p r i n t f ( " Must spec i f y %d processors . Terminat ing . \ n " , SIZE ) ;

MPI_Type_free (& rowtype ) ;MPI_Final ize ( ) ;r e t u r n 0 ;

}

Page 15: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de datos contiguos

rank= 0 b= 1.0 2.0 3.0 4.0rank= 1 b= 5.0 6.0 7.0 8.0rank= 2 b= 9.0 10.0 11.0 12.0rank= 3 b= 13.0 14.0 15.0 16.0

Page 16: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de vectores

Page 17: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de vectores

# inc lude " mpi . h "# inc lude < s t d i o . h># de f ine SIZE 4i n t main ( i n t argc , char ∗argv [ ] ){

i n t numtasks , rank , source =0 , tag =1 , i ;f l o a t a [ SIZE ] [ SIZE ] = { 1 . 0 , 2 .0 , 3 .0 , 4 .0 ,

5 .0 , 6 .0 , 7 .0 , 8 .0 ,9 .0 , 10.0 , 11.0 , 12.0 ,13.0 , 14.0 , 15.0 , 1 6 . 0 } ;

f l o a t b [ SIZE ] ;MPI_Status s t a t ;MPI_Datatype columntype ;MPI_ In i t (& argc ,& argv ) ;MPI_Comm_rank (MPI_COMM_WORLD, &rank ) ;MPI_Comm_size (MPI_COMM_WORLD, &numtasks ) ;MPI_Type_vector ( SIZE , 1 , SIZE , MPI_FLOAT, &columntype ) ;MPI_Type_commit (& columntype ) ;i f ( numtasks == SIZE ) {

i f ( rank == 0) {f o r ( i =0; i <numtasks ; i ++)

MPI_Send(&a [ 0 ] [ i ] , 1 , columntype , i , tag , MPI_COMM_WORLD) ;}MPI_Recv ( b , SIZE , MPI_FLOAT, source , tag , MPI_COMM_WORLD, &s t a t ) ;p r i n t f ( " rank= %d b= %3.1 f %3.1 f %3.1 f %3.1 f \ n " ,

rank , b [ 0 ] , b [ 1 ] , b [ 2 ] , b [ 3 ] ) ;}e lse

p r i n t f ( " Must spec i f y %d processors . Terminat ing . \ n " , SIZE ) ;MPI_Type_free (& columntype ) ;MPI_Final ize ( ) ;r e t u r n 0 ;

}

Page 18: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de vectores

rank= 0 b= 1.0 5.0 9.0 13.0rank= 1 b= 2.0 6.0 10.0 14.0rank= 2 b= 3.0 7.0 11.0 15.0rank= 3 b= 4.0 8.0 12.0 16.0

Page 19: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Grupos y comunicadores

Page 20: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Grupos y comunicadores

• Un grupo es un conjunto ordenado de nodos.• Cada nodo en un grupo es asociado a un ID entero en el

rango.• Si el grupo des de N elementos, el rango va desde 0 hasta

N-1.• En MPI el grupo se representa como un objeto. Se accede

a través de una referencia.• El grupo siempre es asociado con un objeto comunicador.

Page 21: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Mensajes con grupos y comunicadores

• Todos los mensajes MPI deben especificar uncomunicador.

• Por defecto, usamos MPI_COMM_WORLD.• Desde el punto de vista del programador, el grupo y el

comunicador son uno.• Las rutinas de grupo se usan para especificar que

procesos deben ser usados para construir uncomunicador.

Page 22: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Grupos y comunicadores

Page 23: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Propósitos de grupos y comunicadores

• Permite organizar tareas en grupos.• Permite comunicaciones colectivas en un subgrupo de

tareas.• Es la base para implementar topologías definidas por el

usuario.• Provee un mecanismo para realizar comunicaciones

seguras.

Page 24: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Consideraciones de programación para grupos ycomunicadores

• Los grupos y comunicadores son estructuras dinámicas ydeben ser creadas y destruidas en tiempo de ejecución.

• Los procesos pueden estar en más de un grupo.• Hay 40 directivas MPI relacionadas con grupos y

comunicadores.

Page 25: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Uso típico grupos y comunicadores

1 Extraer MPI_COMM_WORLD usando MPI_Comm_group2 Crear un sub-grupo usando MPI_Group_incl3 Crear un nuevo comunicador para el nuevo grupo usando

MPI_Comm_create4 Determinar el nuevo rango en el nuevo comunicador

usando MPI_Comm_rank5 Pasar mensajes usando MPI6 Cando se termina el trabajo, liberar recursos usando

MPI_Comm_free y MPI_Group_free

Page 26: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de grupos

# inc lude " mpi . h "# de f ine NPROCS 8i n t main ( i n t argc , char ∗argv [ ] ){

i n t rank , new_rank , sendbuf , recvbuf , numtasks ,ranks1 [ 4 ] = { 0 , 1 , 2 , 3 } , ranks2 [ 4 ] = { 4 , 5 , 6 , 7 } ;

MPI_Group or ig_group , new_group ;MPI_Comm new_comm; MPI_ In i t (& argc ,& argv ) ;MPI_Comm_rank (MPI_COMM_WORLD, &rank ) ;MPI_Comm_size (MPI_COMM_WORLD, &numtasks ) ;i f ( numtasks != NPROCS) {

p r i n t f ( " Must spec i f y MP_PROCS= %d . Terminat ing . \ n " ,NPROCS) ;MPI_Final ize ( ) ;e x i t ( 0 ) ;

}sendbuf = rank ;/∗ Ex t rac t the o r i g i n a l group handle ∗ /MPI_Comm_group (MPI_COMM_WORLD, &or ig_group ) ;/∗ Div ide tasks i n t o two d i s t i n c t groups based upon rank ∗ /i f ( rank < NPROCS/ 2 ) {

MPI_Group_incl ( or ig_group , NPROCS/2 , ranks1 , &new_group ) ;}e lse {

MPI_Group_incl ( or ig_group , NPROCS/2 , ranks2 , &new_group ) ;}/∗ Create new new communicator and then perform c o l l e c t i v e communications ∗ /MPI_Comm_create (MPI_COMM_WORLD, new_group , &new_comm ) ;MPI_Allreduce (&sendbuf , &recvbuf , 1 , MPI_INT , MPI_SUM, new_comm ) ;MPI_Group_rank ( new_group , &new_rank ) ;p r i n t f ( " rank= %d newrank= %d recvbuf= %d \ n " , rank , new_rank , recvbuf ) ;MPI_Final ize ( ) ;r e t u r n 0 ;

}

Page 27: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de grupos

rank= 4 newrank= 0 recvbuf= 22rank= 6 newrank= 2 recvbuf= 22rank= 7 newrank= 3 recvbuf= 22rank= 1 newrank= 1 recvbuf= 6rank= 3 newrank= 3 recvbuf= 6rank= 5 newrank= 1 recvbuf= 22rank= 0 newrank= 0 recvbuf= 6rank= 2 newrank= 2 recvbuf= 6

Page 28: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Topologías virtuales

Page 29: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Topologías virtuales

• En MPI se pueden mapear procesos a una formageométrica.

• Las dos principales topologías son grilla cartesiana ygrafos (Cartesian, Graph).

• Las topologías son virtuales, no hay relación con laestructura física de la máquina.

• Las topologías se construyen sobre grupos ycomunicadores.

• Deben ser programadas por el desarrollador.

Page 30: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ventajas

• Conveniencia.• Eficiencia en las comunicaciones.

Page 31: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Ejemplo de topologías virtuales

Page 32: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Contacto

Page 33: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

¡Muchas gracias!

¿[email protected]

Page 34: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

Referencias

Page 35: Procesamiento Paralelo - MPI - Tipos y Topologías Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía

• MPI Tutorial, Blaise Barney, Lawrence Livermore NationalLaboratoryhttps://computing.llnl.gov/tutorials/mpi/