Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Xavier Andrade V.
Introducción
1
Sistemas Paralelos
2
Sistemas de Memoria Compartida
3
Sistemas de Memoria Distribuida
4
Programación en Paralelo
5
OpenMP
6
Memoria Compartida y Threads
7
Paso de Mensajes
8
MPI
9
Introducción a MPI
10
Caracterı́sticas de MPI
11
Programación Básica en MPI
12
Estructura de un Programa MPI
13
Referencia: Inicialización y Finalización de MPI
C++
14
Comunicadores
15
Referencia: Comunicadores y sus Funciones Básicas
C++
16
Funciones Básicas de Comunicación
17
Referencia: Funciones Básicas de Comunicación en C
18
Referencia: Funciones Básicas de Comunicación en C++
19
Referencia: Funciones Básicas de Comunicación, Argumentos
20
Tipos de Datos
21
Referencia: Tipos de Datos
22
Código Básico en C
#include <mpi.h>
#include <stdio.h>
int main(int argc,char **argv){
int rank,size;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank==1){
double data=3.14;
MPI_Send(&data,1,MPI_DOUBLE,0,27,MPI_COMM_WORLD);
}
if(rank==0){
double data;
MPI_Recv(&data,1,MPI_DOUBLE,1,MPI_ANY_TAG,
MPI_COMM_WORLD,MPI_STATUS_IGNORE);
printf("El rango 0 dice %g\n",data);
}
MPI_Finalize();
return 0;
}
23
Código Básico en C++
#include <mpi.h>
#include <iostream>
using namespace std;
if(rank==1){
double data=3.14;
MPI::COMM_WORLD.Send(&data,1,MPI::DOUBLE,0,27);
}
if(rank==0){
double data;
MPI::COMM_WORLD.Recv(&data,1,MPI::DOUBLE,1,MPI::ANY_TAG);
cout << "El rango 0 dice " << data << endl;
}
MPI::Finalize();
return 0;
}
24
Comportamiento del Envı́o de Mensajes
25
Deadlocks
26
Comunicación Colectiva
27
Comunicación Colectiva: MPI Barrier
28
Comunicación Colectiva: MPI Bcast
29
Comunicación Colectiva: MPI Gather y MPI Scatter
30
Esquema de comunicación de MPI Scatter
nodo 0
nodo 1
nodo 2
nodo 3
31
Referencia: MPI Scatter y MPI Gather en C
32
Referencia: MPI::Scatter y MPI::Gather en C++
33
Comunicación Colectiva: MPI Reduce
34
Tipos de Operaciones Para MPI Reduce
35
Programación Avanzada
36
Tipos de Datos Compuestos
37
Formas Avanzadas de Comunicación Punto a Punto
38
Envı́os y Recibos No Bloqueantes
39
Comunicadores
40
Topologı́as Virtuales
41
Tipos de Topologı́as Virtuales
Cartesianas:
Grafos
42
Recursos
LAM-MPI: http://www.lam-mpi.org/
MPICH: http://www-unix.mcs.anl.gov/mpi/mpich/
http://www.netlib.org/utk/papers/mpi-book/mpi-book.html
43