PDF de programación - Programación con MPI

Imágen de pdf Programación con MPI

Programación con MPIgráfica de visualizaciones

Publicado el 18 de Agosto del 2020
577 visualizaciones desde el 18 de Agosto del 2020
4,3 MB
90 paginas
Creado hace 12a (08/02/2012)
Curso de de Promoción
Curso
Programación en el
Programación

Promoción Educativa
Educativa

en el Supercomputador

Supercomputador Ben Ben Arabi
Arabi

Programación con MPI
con MPI
Programación

Javier Cuenca

Universidad de Murcia

Indice de la
Indice

de la sesión
sesión

Introducción

Comunicaciones punto a punto

Comunicaciones colectivas

Agrupación de datos

Comunicadores y topologías

MPI-2

Uso de MPI en el supercomputador BenArabi

Ejercicios prácticos

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

22

Indice de la
Indice

de la sesión
sesión

Introducción.

Nociones básicas
Ejemplo inicial
Directivas

Constructores

Claúsulas de alcance de datos

Funciones de librería

Variables de entorno

Ejemplos

Tareas en OpenMP 3.0

Uso de OpenMP en el supercomputador Ben Arabi

Ejercicios prácticos

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

33

Introducción
Introducción

Previamente PVM: Parallel Virtual Machine

MPI: Message Passing Interface

Una especificación para paso de mensajes

La primera librería de paso de mensajes estándar y portable

Por consenso MPI Forum. Participantes de unas 40 organizaciones

Acabado y publicado en mayo 1994. Actualizado en junio 1995

MPI-2, HeteroMPI, FT-MPI

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

44

Introducción..
Introducción
¿¿QuéQué ofrece
ofrece??

Estandarización

Portabilidad: multiprocesadores, multicomputadores, redes, heterogéneos, ...

Buenas prestaciones, ..., si están disponibles para el sistema

Amplia funcionalidad

Implementaciones libres (mpich, lam, ...)

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

55

Introducción..
Introducción
Procesos
Procesos

Programa MPI: conjunto de procesos autónomos

Cada proceso puede ejecutar codigo diferente

Procesos comunican vía primitivas MPI

Proceso: secuencial o multithreads

MPI no proveé mecanismos para situar procesos en procesadores. Eso es misión de
cada implementación en cada plataforma

MPI 2.0:







Es posible la creación/borrado de procesos dinámicamente durante ejecución
Es posible el acceso a memoria remota
Es posible la entrada/salida paralela

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

66

Introducción..
Introducción
Ejemplo: : hello.c
hello.c
Ejemplo

#include <stdio.h>
#include <string.h>
#include "mpi.h"
main(int argc, char*argv[]) {

int name, p, source, dest, tag = 0;
char message[100];
MPI_Status status;

MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&name);
MPI_Comm_size(MPI_COMM_WORLD,&p);

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

77

Introducción..
Introducción
Ejemplo: : hello.c
hello.c
Ejemplo

#include <stdio.h>
#include <string.h>
#include "mpi.h"
main(int argc, char*argv[]) {

if (name != 0)
{

int name, p, source, dest, tag = 0;
char message[100];
MPI_Status status;

printf("Processor %d of %d\n",name, p);
sprintf(message,"greetings from process %d!", name);
dest = 0;
MPI_Send(message, strlen(message)+1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);

MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&name);
MPI_Comm_size(MPI_COMM_WORLD,&p);

}
else
{

printf("processor 0, p = %d \n",p);
for(source=1; source < p; source++)
{

MPI_Recv(message,100, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status);
printf("%s\n",message);

}

}
MPI_Finalize();

}

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

88

Introducción..
Introducción
Ejemplo FORTRAN
Ejemplo

FORTRAN: : fortran_hello
fortran_hello

CHARACTER*20 msg
INTEGER myrank, ierr, status(MPI_STATUS_SIZE)
INTEGER tag = 99



CALL MPI_COMM_RANK( MPI_COMM_WORLD, myrank, ierr)

IF (myrank .EQ. 0) THEN

msg = “Hello there”
CALL MPI_SEND( msg, 11, MPI_CHARACTER, 1, tag, MPI_COMM_WORLD, ierr)

ELSE IF (myrank .EQ. 1) THEN

CALL MPI_RECV( msg, 20, MPI_CHARACTER, 0, tag, MPI_COMM_WORLD, status,

ierr)

END IF

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

99

Introducción..
Introducción
Ejemplo de de usouso
Ejemplo

Fichero cabecera:
#include <mpi.h>

Formato de las funciones:
error=MPI_nombre(parámetros ...)

Inicialización:
int

MPI_Init ( int

*argc , char **argv )

Comunicador: Conjunto de procesos en que se hacen comunicaciones
MPI_COMM_WORD , el mundo de los procesos MPI

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1010

Introducción..
Introducción
Ejemplo de de usouso
Ejemplo

Identificación de procesos:
MPI_Comm_rank ( MPI_Comm comm , int

*rank)

Procesos en el comunicador:
MPI_Comm_size ( MPI_Comm comm , int

*size)

Finalización:
int

MPI_Finalize ( )

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1111

Introducción..
Introducción
Ejemplo de de usouso
Ejemplo

 MENSAJE: Formado por un cierto número de elementos de un tipo MPI
 Tipos MPI Básicos:

MPI_CHAR
MPI_SHORT
MPI_INT
MPI_LONG
MPI_UNSIGNED_CHAR
MPI_UNSIGNED_SHOT
MPI_UNSIGNED
MPI_UNSIGNED_LONG
MPI_FLOAT
MPI_DOUBLE
MPI_LONG_DOUBLE
MPI_BYTE
MPI_PACKED

signed char
signed short int
signed int
signed long int
unsigned
unsigned
unsigned int
unsigned
float
double
long double

char
short int

long int

 Tipos MPI Derivados: los construye el programador

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1212

Introducción..
Introducción
FORTRAN. . Ejemplo
FORTRAN

Ejemplo de de usouso

 Tipos MPI Básicos

 MPI_INTEGER
 MPI_REAL
 MPI_DOUBLE_PRECISION
 MPI_COMPLEX
 MPI_LOGICAL
 MPI_CHARACTER
 MPI_BYTE

 MPI_PACKED

INTEGER
REAL
DOUBLE PRECISION
COMPLEX
LOGICAL
CHARACTER(1)

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1313

Introducción..
Introducción
Ejemplo de de usouso
Ejemplo

 Envío:

int MPI_Send ( void *buffer , int contador , MPI_Datatype

tipo , int destino , int tag , MPI_Comm

comunicador )

 Recepción:

int MPI_Recv ( void *buffer , int contador , MPI_Datatype

tipo , int origen , int tag , MPI_Comm
MPI_Status

*estado)

comunicador ,

MPI_ANY_TAG
MPI_ANY_SOURCE

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1414

Indice de la
Indice

de la sesión
sesión

Introducción

Comunicaciones punto a punto

Comunicaciones colectivas

Agrupación de datos

Comunicadores y topologías

MPI-2

Uso de MPI en el supercomputador BenArabi

Ejercicios prácticos

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1515

Comunicaciones punto
Comunicaciones
Tipos de de comunicaciones
Tipos

punto a a punto
punto..
comunicaciones sincronas
sincronas

Envío:

Envío síncrono: MPI_Ssend
Acaba cuando la recepción empieza

Envío con buffer: MPI_Bsend
Acaba siempre, independiente del receptor

Envío estándar: MPI_Send
Síncrono o con buffer

Envío “ready”: MPI_Rsend
Acaba independiente de que acabe la recepción

Recepción: MPI_Recv
Acaba cuando se ha recibido un mensaje.

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1616

Comunicaciones punto
Comunicaciones
Comunicación asíncrona
Comunicación

punto a a punto
punto. .
asíncrona ((nonblocking
nonblocking))

MPI_Isend(buf, count, datatype, dest, tag, comm, request)

MPI_Irecv(buf, count, datatype, source, tag, comm, request)

Parámetro request para saber si la operación ha acabado

MPI_Wait( )
vuelve si la operación se ha completado. Espera hasta que se completa

MPI_Test( )
devuelve un flag diciendo si la operación se ha completado

Facultad de Informática. Universidad de Murcia
Facultad de Informática. Universidad de Murcia

Programación en el Supercomputador Ben Arabí
dor Ben Arabí
Programación en el Supercomputa

1717

Comunicaciones punto
Comunicacio
  • Links de descarga
http://lwp-l.com/pdf18092

Comentarios de: Programación con MPI (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad