SISTEMAS DISTRIBUIDOS Y PARALELOS - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

SISTEMAS DISTRIBUIDOS Y PARALELOS

Description:

Interfase de pasaje de mensajes, propuesto como 'Est ndar' acad mico e ... long double. MPI_LONG_DOUBLE. double. MPI_DOUBLE. float. MPI_FLOAT. unsigned long int ... – PowerPoint PPT presentation

Number of Views:168
Avg rating:3.0/5.0
Slides: 38
Provided by: Marc328
Category:

less

Transcript and Presenter's Notes

Title: SISTEMAS DISTRIBUIDOS Y PARALELOS


1
SISTEMAS DISTRIBUIDOS Y PARALELOS
  • MPI Message Passing Interface
  • Dto. De Informática
  • UNSL

2

índice
  • Introducción
  • Procesos
  • Comunicación punto a punto
  • Ejemplos
  • Operaciones Colectivas
  • Ejemplos

3
Introducción a MPI
  • Interfase de pasaje de mensajes, propuesto como
    Estándar académico e industrial (Forum
    Internacional)
  • Diseñada para lograr alta performance, tanto en
    máquinas paralelas como en clusters de Pcs.
  • Orientada preferentemente a redes homogéneas

4
Qué incluye el estándar?
  • Comunicaciones Punto a Punto
  • Operaciones Colectivas
  • Agrupamientos de Procesos
  • Topologías de Comunicación
  • Soporte para Fortran y C

5
Qué no incluye el estándar?
  • Comunicaciones de Memoria Compartida
  • Soporte de SO para recepciones por interrupción
  • Ejecución remota de procesos
  • Soporte para threads
  • Soporte para control de tareas

6
PROCESOS
  • La unidad básica en MPI son los procesos.
  • Tienen espacios de memoria independientes.
  • Intercambio de información por pasaje de
    mensajes.
  • Introduce en concepto de comunicadores (grupo de
    procesos más contexto).
  • Cada proceso se le asigna un identificador
    interno propio de MPI (rank).

7
PVM vs. MPI
MPI creación estática modelo SPMD (MPMD) identi
ficadores correlativos 0 a P-1
  • PVM
  • creación dinámica
  • modelos MPMD
  • (SPMD)
  • identificadores no correlativos (tids)

MPI PVM PP - spawn()
8
PROCESOS
  • gt mpirun -machinefile ltmachine-file namegt
  • -np ltnumber of processesgt
  • ltprogram name and argumentsgt
  • Ejemplo
  • gtmpirun np 4 hello

Creación estática de procesos Modelo de
programación SPMD
9
PROCESOS (SPMD)
  • include mpi.h
  • main(int argc, char,argv)
  • int nproc, mytid
  • MPI_Init(argc,argv)
  • MPI_Comm_size(MPI_COMM_WORLD, nproc)
  • MPI_Comm_Rank(MPI_COMM_WORLD, mytid)
  • / cuerpo de programa /
  • MPI_Finalize()

Definición de Funciones MPI
Comunicador
0ltmytidltnproc
10
PROCESOS (Master/Slave)
  • include mpi.h
  • main(int argc, char,argv)
  • int nproc, mytid
  • MPI_Init(argc,argv)
  • MPI_Comm_size(MPI_COMM_WORLD, nproc)
  • MPI_Comm_Rank(MPI_COMM_WORLD, mytid)
  • if (mytid 0)
  • master( )
  • else
  • slave( )
  • MPI_Finalize()

MIMD Debe hacerse explícitamente
11
MPI Comunicadores
  • Un comunicador es una colección de procesos, los
    cuales se comunican a través del envío y
    recepción de mensajes.

12
MPI Comunicadores
  • Un comunicador es una colección de procesos, los
    cuales se comunican a través del envío y
    recepción de mensajes.
  • Un comunicador (básico) está formado por
  • Un grupo de procesos
  • Un contexto

Colección Ordenada de Procesos
  • Objeto Único definido por el sistema.
  • Dos comunicadores con el mismo grupo de procesos,
    tienen distintos contextos.
  • Útil en el chequeo de comunicaciones el mensaje
    recibido por un proceso perteneciente al
    comunicador debió ser enviado por un procesador
    del mismo comunicador.

13
Comunicaciones punto a punto
Los que establecen comunicación (Puntos) pueden
ser específicos (fuente y destino
conocido) Pueden ser Puntos cualesquiera
(MPI_ANY_SOURCE)
14
Comunicaciones
  • Conceptos
  • Buffer de la aplicación espacio de memoria que
    contiene datos a enviar o recibidos por el
    programa
  • Buffer del sistema espacio de memoria del
    sistema para almacenar mensajes. Un mensaje den
    el buffer de la aplicación debe ser copiado
    a/desde el buffer de sistema para las operaciones
    send/receive. Permite a la comunicación ser
    asincrónica

15
Comunicaciones punto a puntobásicas
Comunicaciones realizadas entre dos procesos
include "mpi.h int MPI_Send( void buf, int
count, MPI_Datatype datatype,
int dest, int tag, MPI_Comm comm )
include "mpi.h" int MPI_Recv( void buf, int
count, MPI_Datatype datatype, int source,
int tag, MPI_Comm comm, MPI_Status status )
16
Comunicaciones punto a puntobásicas
El parámetro status
En este parámetro se retorna información
adicional Es una estructura predefinida
MPI_Status status
Información El Tipo del mensaje recibido
status.MPI_TAG El número del emisor
status.MPI_SOURCE El código de error
status.MPI_TAG
17
Tipos de datos
18
Comunicaciones punto a punto (Ejemplo)
include "mpi.h main( argc, argv ) int argc
char argv char message20 int
myrank MPI_Status status MPI_Init(
argc, argv ) MPI_Comm_rank(
MPI_COMM_WORLD, myrank ) if (myrank 0)
/ código para proceso cero /
strcpy(message,"Hello, world")
MPI_Send(message, strlen(message), MPI_CHAR, 1,
99, MPI_COMM_WORLD) else /
código para el proceso 1/
MPI_Recv(message, 20, MPI_CHAR, 0, 99,
MPI_COMM_WORLD, status)
printf("recibido s\n", message)
MPI_Finalize()
Send/recv básicos
mpicc o hello hello.c mpirun np 2 hello
19
Comunicaciones punto a punto
Hay dos modelos Bloqueante No Bloqueante Hay
cuatro modos Básicos Ready Con Buffer Sincrónico
20
Comunicaciones punto a punto
EJERCICIOS PRELIMINARES Compilar y ejecutar el
programa Hello variando el número de procesos de
modo que n Procesos envíen el mensaje
Saludos desde el proceso al Proceso 0
para que este imprima "Hola, soy el proceso 0
(hay n procesos) y recibo (mensaje)
Ejemplo de output Hola, soy el proceso 0 (hay
4 procesos) y recibo Saludos desde el proceso
0 Hola, soy el proceso 0 (hay 4 procesos) y
recibo Saludos desde el proceso 2 Hola, soy el
proceso 0 (hay 4 procesos) y recibo Saludos
desde el proceso 1 Hola, soy el proceso 0 (hay 4
procesos) y recibo Saludos desde el proceso 3
21
Comunicaciones punto a punto
EJERCICIOS PRELIMINARES Modificar el programa
de tal forma que el proceso de rango i mande el
mensaje al proceso (i1)p.
Ejemplo de output Hola, soy el proceso 0 (hay
4 procesos) y recibo Saludos del proceso 3
Hola, soy el proceso 1 (hay 4 procesos) y
recibo Saludos del proceso 0 Hola, soy el
proceso 3 (hay 4 procesos) y recibo Saludos del
proceso 2 Hola, soy el proceso 2 (hay 4
procesos) y recibo Saludos del proceso 1
22
Comunicaciones Colectivas
Comunicaciones realizadas entre un grupo de
procesos. Son bloqueantes.
MPI ofrece una gran variedad de este tipo de
comunicaciones
MPI_Barrier - Sincronización mediante barrera
MPI_Bcast - Enviar datos a todos los
procesos MPI_Gather - Obtener datos de todos
los procesos MPI_Scatter - Repartir datos sobre
todos los procesos MPI_Reduce - Realizar una
operación (suma, máximo, ..) sobre todos los
procesos
23
Comunicaciones Colectivas
24
Comunicaciones Colectivas
25
MPI_Bcast Distribuir datos a todos los procesos
26
MPI_Bcast (Ejemplo) Distribuir datos a todos los
procesos
Qué hace el programa?
27
MPI_Reduce Recoge datos de todos los procesos
28
MPI_Reduce (Ejemplo)
Qué hace el programa?
29
MPI_Scatter Recoge datos de todos los procesos
30
MPI_BarrierSincronización de un grupo
Bloquea hasta que todos los procesos han
alcanzado esta llamada
31
MPI Comunicadores
Podemos crear nuestros propios comunicadores 1)
Creando un grupo de procesos 2) Asignando un
Contexto En MPI trabajamos con Grupos o
Comunicadores, nunca con Contextos.
32
Funciones para Comunicadores
  • Creación
  • MPI_Comm_create( ?Old_Comm, ?Group_Proc,
    ?New_Comm)
  • MPI_Comm_dup( ?Comm, ?New_Comm)
  • MPI_Comm_split( ?Old_Comm, ?split_key, ?New_Comm)
  • Eliminación
  • MPI_Comm_free( ??Comm)
  • Información
  • MPI_Comm_rank( ?Comm, ?Rank)
  • MPI_Comm_compare(?Comm1, ?Comm2, ?Result)

33
Funciones para Grupos
  • Creación
  • MPI_Comm_incl( ?Group, ?NP, ?Who, ?New_Group)
  • MPI_Comm_excl( ?Group, ?NP, ?Who, ?New_Group
  • MPI_Group_range_incl( ?Group, ?NP, ?Rango3,
    ?New_Group)
  • MPI_Group_range_excl(?Group, ?NP, ?Rango3,
    ?New_Group)
  • MPI_Group_difference( ?Group1, ?Group2,
    ?New_Group)
  • MPI_Group_intersection( ?Group1, ?Group2,
    ?New_Group)
  • MPI_Group_union( ?Group1, ?Group2, ?New_Group)

34
Funciones para Grupos
  • Eliminación
  • MPI_Comm_free( ?Group)
  • Información
  • MPI_Comm_group( ?Comm, ?Group)
  • MPI_Group_rank( ?Group, ?Rank)
  • MPI_Group_compare(?Group1, ?Group2, ?Result)
  • MPI_Group_translate_ranks(
  • ?Group1, ? NP, ? Ranks1, ? Group2, ?Ranks2)

35
Topologías
  • Un comunicador puede tener una topología
    asociada.
  • Permite asociar distintos esquemas de
    direccionamiento a un grupo.
  • Es una topología virtual.
  • Dos tipos de topología en MPI
  • Cartesiana o grilla
  • Grafos

36
Funciones para Topología Cartesiana
  • Creación
  • MPI_Cart_create(?Comm, ?NDim, ?Dim, ?Cir,
    ?Reorder, ?Cart_Comm)
  • Información
  • MPI_Cart_coords(?Comm, ?rank, ?Max_Dim,
    ?Coord)
  • MPI_Cartdim_get(?Comm, ?NDims)
  • MPI_Cart_rank(?Comm, ?Coord, ?Rank)
  • Existen otras de bajo nivel.

37
Funciones para Topología de Grafo
  • Creación
  • MPI_Graph_create(?Comm, ?Nnodes, ?index,
    ?edges, ?Reorder, ?Cart_Comm)
  • Información
  • MPI_Cart_coords(?Comm, ?rank, ?Max_Dim,
    ?Coord)
  • MPI_Graphdims_get(?Comm, ?NNodes, ?NEdges)
  • MPI_Graph_neighbors(?Comm, ?Rank, ?Max_neigh,
    ?Neigh)
  • MPI_Graph_neighbors_count(?Comm, ?Rank, ?NNeigh)
  • También existen otras de bajo nivel.
Write a Comment
User Comments (0)
About PowerShow.com