INTRODUCCION A M (ESSAGE) P (ASSING) I (NTERFACE) Paradigma de Transferencia de Mensajes Cada procesador corre un programa Todas las variables son privadas.

Slides:



Advertisements
Presentaciones similares
LENGUAJES PARALELOS Chang y Smith (1990) clasificación:
Advertisements

UNIX COMP 240.
Sistema operativo Componentes de un sistema operativo
Programando con OpenMP*
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
INTRODUCCIÓN A JAVA.
Maquina Virtual La máquina virtual de Java o JVM es un entorno de ejecución para aplicaciones de Java, cuya finalidad es la de adaptar los programas Java.
INTRODUCCIÓN ESTADO DE LA TÉCNICA PROCESAMIENTO DISTRIBUIDO CON MPI PROCESAMIETNO DISTRIBUIDO DE IMÁGENES GENÉRICO CON VTK PROCESAMIENTO DISTRIBUIDO DE.
Funciones. Programación, Algoritmos y Estructuras de Datos.
TIPOS DE SERVIDORES 4/2/2017 3:29 PM
Teo. 5: Paradigma "Message Passing"
Funciones en lenguaje C
Funciones y procedimientos
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Semana 5 Subprogramas..
Tres Algoritmos Paralelos para Multiplicación Matriz Vector
Pase de Mensaje MPI Elaborado: Betzaida Romero. Agenda  Historia y Evolución  Que es MPI  Conceptos  Ventajas  Desventajas  Ejemplo  Conclusiones.
Introducción a la Computación Paralela Germán Larrazábal Departamento Computación, FACYT, Universidad de Carabobo, Venezuela
2. ASYNCRONOUS TRANSFER MODE 2.1Características generales 2.2 Modelo de referencia del protocolo 2.3 Categorías de servicio ATM.
Estructura de un programa en C
Introducción a la Programación. Lenguaje de Máquina.
MPISistemas Distribuidos1 MPI Un estándar de paso de mensajes para Clusters y Workstations Communications of the ACM, July 1996 J.J. Dongarra, S.W. Otto,
Programación de Memoria Compartida
Programación de Memoria Compartida
Modelos de Pase de Mensajes
Asignación de Espacio No Contiguo
Programación en MPI Capítulo 4. 4–2 NOT Gate 4–3 AND Gate.
Sistemas de Comunicación Magistral Nro. 8 Capa 4: Transporte Las funciones principales de la capa de transporte son transportar y regular el flujo de información.
Sistemas Operativos II MC. Daniel Fajardo Delgado INSTITUTO TECNOLÓGICO DE CD. GUZMÁN 30 de Mayo de 2004.
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
Comunicadores Colectivos BARRIER Esta es una de las primeras que ya vimos. Bloquea todos los procesos hasta que todos los procesos del Comm la llaman.
Introducción a MPI Clase 3 Marcelo Rozenberg (agradecimiento: Ruben Weht Titulo.
MPI: Message Passing Interface Vera Ortíz Thimoty Duéñez Saúl Moncada Ma. Cristina Otero Carolina teja.
Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos
(agradecimiento: Ruben Weht
El Cedazo de Eratosthenes Capítulo 5. Metas Analizar métodos de asignar bloques (“block allocation schemes”) Entender la función MPI_Bcast Estudiar métodos.
Sistemas Operativos II MC. Daniel Fajardo Delgado INSTITUTO TECNOLÓGICO DE CD. GUZMÁN 22 de Mayo de 2004.
Conceptos de protocolos de red
FUNDAMENTOS TECNOLÓGICOS DE INFORMACIÓN Ing. Tanya Recalde Chiluiza.
Naime Cecilia del Toro Alvarez
Funciones principales!
Modelo OSI Para redes………
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
Un Sistema Operativo (SO) es el software básico de una computadora que provee una interfaz entre el resto de programas del ordenador, los dispositivos.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
MEMORIA DINÁMICA.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
ANALISIS Y DISEÑO DE SISTEMAS II “DIAGRAMAS DE DESPLIEGUE ” INTEGRANTES: COPA PALMA CARLOS REYNALDO MAMANI PACO EDWIN ALVARO SIRPA LAURA HECTOR ELOY.
INTRODUCCIONHISTORIAQUE ES UN PLCELEMENTOS VENTAJAS TIPOSCONCLUSIONESREFERENCIAS.
Accesibilidad web. ¿Qué es la accesibilidad web? Hablar de Accesibilidad Web es hablar de un acceso universal a la Web, independientemente del tipo de.
Prof. Manuel B. Sánchez. La parte ingenieril de un proceso de desarrollo de software, comprende realizar un diseño del sistema antes de empezar a escribir.
Digitalización de la información. La digitalización consiste en la transformación de la información analógica, propia de la naturaleza en información digital.
GENERICIDAD Es una propiedad que permite definir una clase o función sin especificar el tipo de datos de uno o mas de sus parámetros (Módulos Parametrizados).
DCE: Entorno de Computación Distribuida Profesor: Daniel Acuña Expositores: Francisco Almarza Gustavo Espinoza.
Unidades funcionales de un ordenador 1. ¿Qué es un ordenador? Máquina que recibe unos datos, los procesa y ofrece los resultados de ese procesamiento.
This y static. This Normalmente, dentro del cuerpo de un método de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo,
Clase 1.  Un programador es aquella persona que escribe, depura y mantiene el código fuente de un programa informático, es decir, del conjunto de instrucciones.
Hola????????. Modelo OSI La clave aquí es, para que una comunicación por red sea exitosa, como la llamada en conferencia, demanda varias actividades cuidadosamente.
Desventajas Poco eficiente: lectura y escritura en disco es lenta Necesita otro mecanismo de sincronización para acceder a los datos Son los procesos.
METODOS DE PROGRAMACION I Ing. Vania Flores Pinto.
Yaritza Ortega Astrid Zúñiga Vishal Patel
Asignaturas: Informática/Electiva I. Definición de Sistema operativo Conceptos Básicos Funciones de los Sistemas Operativos Clasificación Componentes.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERCIDAD NACIONAL DE CHIMBORAZO FACULTAD: CIENCIAS DE LA EDUCACIÓN HUMANAS Y TECNOLÓGICAS ESCUELA: EDUCACIÓN BÁSICA PRIMER SEMESTRE “A” TRABAJO DE:
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 7 – Funciones y Procedimientos.
GRUPO N°1 – SISTEMAS OPERATIVOS DISTRIBUIDOS LLAMADA A PROCEDIMIENTO REMOTO.
1.- Tecnologías LAN 2.- Protocolo de Interconexión de redes 3.- Protocolo de Internet IP 4.- Protocolo de mensaje de control (ICMP)
Introducción a la Ingeniería del Software 1 El Diseño de Software Caracteristicas: Proceso Creativo Requiere de experiencia e ingenio Necesita del aprendizaje.
Message Passing Interface
Transcripción de la presentación:

INTRODUCCION A M (ESSAGE) P (ASSING) I (NTERFACE) Paradigma de Transferencia de Mensajes Cada procesador corre un programa Todas las variables son privadas La comunicación se realiza a través de subrutinas especiales Trans-mensajes

¿Qué es MPI?  Es una implementación de un estándar del modelo de paso de mensajes  Atiende a una estructura SPMD (Single Program/Multiple Data)  Imágenes del programa en cada máquina  Datos locales a cada maquina  Todos los procesadores trabajan con el mismo programa, pero los datos pueden ser diferentes.  Como asignar tareas diversas con datos diversos?  Los datos se comparten por medio del paso de mensajes  Consiste en una serie de librerías C

MPI (Message Passing Interface)  Una colección de rutinas adecuadas para facilitar la comunicación (intercambio de datos y sincronización de tareas) entre distintos procesadores. MPI : 1994 / MPI 2 : 1997 Existen bibliotecas para C y Fortran (C++ y F90). Características:  Es estándar (por consenso, no por normativa)  Portable  Flexible (~ 125 rutinas) y expandible  Simple (con las 6 rutinas básicas se puede hacer mucho!) ¿Qué es MPI?

Características de MPI  Principalmente dirigido a proveer portabilidad del código fuente. No esta totalmente alcanzado todavía  Ofrece gran funcionalidad  Diferentes tipos de comunicaciones  Soporta gran cantidad de tipo de datos  Soporta datos definidos por el usuario  Manejo de diferentes topologías  MPI se escribió con algunos puntos un poco perdidos  En teoría las aplicaciones MPI se pueden compilar con cualquier implementación MPI existente, pero es posible que el comportamiento sea ligeramente diferente  Necesidad de recursos que no estén garantizados por la implementación MPI  NO ES PORTABLE TOTALMENTE

Portabilidad de los programas  Aspectos a considerar debido a la variedad de implementaciones MPI  Suponer buffering. No asumir que el envío de datos es tipo buffer  Suponer sincronización de barrera para llamadas colectivas. En MPI, la comunicación colectiva es bloqueante, pero el programa no debe depender del tipo de sincronización (en este caso barrera)  Ambigüedades en la comunicación. Los mensajes enviados son los que se espera recibir

Local Area Multiprocesor (LAM)  Entorno y sistema de desarrollo para procesamiento en paralelo que trabaja sobre redes formadas por procesadores independientes  Utiliza programación estándar de paso de mensajes (MPI)  LAM proporciona al usuario una librería API para el paso de mensajes entre diferentes nodos que colaboran para la realización de una aplicación paralela  Funciona en una gran cantidad de plataformas UNIX y permite trabajar con diferentes tipos de maquinas mezclados

 Las diferentes máquinas pueden conectarse a través de una red de área local o a través de Internet  Características:  Completa implementación del estándar MPI  Existen diversas herramientas de desarrollo  Posibilidad de mezclar diferentes tipos de maquinas en una misma red  Es posible activar o desactivar nodos dentro de la red  Si un nodo cae se detecta y es posible recuperarlo cuando vuelva a funcionar  Existen librerías adicionales MPI para la programación LAM Local Area Multiprocesor (LAM)

MPICH y MPICH2 MPICH2 es una implementación (bastante) portable de alta performance del standart MPI (-1 y -2) Principales logros: 1) provee una implementación MPI soportada en una gran variedad de plataformas HETEROGENEAS. Con gran variedad de redes (10Gigabits, Infiniband, Myrinet, Quadrics ) y tiene algunas cosas interesantes para su mejor funcionamiento en sistemas propietarios como BlueGene, Cray, etc 2) Es fácil de utilizar en otros entornos derivados lo que permite ampliar sus capacidades enormemente. Por ejemplo crear nuestra librería, o Petsc, o scalapack

Como funcionan?  Se debe compilar con las librerias adecuadas. mpicc -o s.exe sistema.c -lm  Se debe ejecutar con las instrucciones adecuadas. En general en maquinas grandes, ese problema no es nuestro problema source /opt/Modules/3.2.6/init/bash module add mvapich2 Mpirun/mpiexec --comm=pmi -np $NP S.exe

Como funciona MPI? En FORTRAN será vía el llamado a subrutinas: call MPI_ROUTINE (ARGUMENTOS, IERROR) En C el uso será de la forma: MPI_Xxxxxx(argumentos) El primer paso será invocar a la biblioteca adecuada (C: mpi.h, F: mpif.h) p.e.: #include “mpi.h” Todo programa MPI tiene que ser inicializado y finalizado (para liberar correctamente los recursos).

Versión Fortran PROGRAM simple include ’mpif.h’ integer errcode ! Inicializar MPI call MPI_INIT (errcode) ! Parte Principal del Prog... ! Terminar MPI call MPI_FINALIZE (errcode) end Versión C #include “mpi.h” /* Headers */ main(int argc, char **argv) { /* Inicializar MPI */ MPI_Init (&argc, &argv); /* Parte principal del Prog..... */ /* Terminar MPI */ MPI_Finalize (); exit (0); } Un programa MPI: el esquema básico Prog.Basico

Como funciona MPI? Los siguientes pasos son definir un comunicador, indicar el número total de procesadores en el sistema y el rango de cada uno dentro del conjunto. El comunicador típico es MPI_COMM_WORLD (definido en mpi.h/mpif.h): son todos los nodos requeridos al sistema. (Pueden definirse otros comunicadores si es necesario) Comunicador

Comunicadores  A cada proceso se le asigna un numero (rank) consecutivo empezando desde 0  Un mismo procesador puede pertenecer a varios comunicadores diferentes, y su ‘rank’ sera diferente en cada uno de ellos  MPI_COMM_WORLD es un comunicador que engloba a todos los procesos  Los mensajes se marcan con una etiqueta o tag que sirve para distinguir entre diferentes tipos

Comunicadores  Para recibir un mensaje no siempre es necesario especificar el ‘rank’ de la fuente aunque si lo es para enviarlo  ‘context’ sirve para evitar conflictos entre el codigo de diferentes programadores. Se añade automaticamente  MPI_COMM_SELF es un comunicador que solo engloba a un solo miembro  MPI_COMM_PARENT engloba los grupos de un proceso y de su proceso padre

 Inicializar, dirigir y finalizar comunicación  Iniciar y finalizar comunicación  Identificar número de procesos, qué proceso corre en cada procesador y crear subgrupos de procesadores  MPI_Init, MPI_Finalice  Comunicación punto a punto  MPI_Send, MPI_Recv  Comunicación colectiva  MPI_Bcast, MPI_Scatter, MPI_Gather, MPI_Reduce  Creación de tipos de datos  MPI_Type_struct Clases de llamadas MPI

 Un procesador envía y otro recibe  Comunicación elemental en MPI  Dos modos de comunicación  Bloqueante: La rutina de enviar o recibir no termina hasta que la operación se ha completado. Asegura que los datos llegan al receptor sin error.  No bloqueante: La función envía o recibe inmediatamente. El procesador puede hacer otras tareas durante el envío  Cuatro procedimientos para transmitir mensajes  standard – no hay garantía de que el recv se inicio  synchronous – se completa cuando el recv comenzó.  buffered – Se completa cuando el dato se copio al buffer local. (No implica que se recibió bien)  ready – El usuario dice cuando se completo la recepción Los recv son mas sencillos: Se completan cuando el data esta listo para usarse Comunicación punto a punto

MPI_Send (void *buf, int count, MPI Datatype dtype, int dest, int tag, MPI_Comm comm); MPI_Recv (void *buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_status *status);  buf: localización en memoria de los datos  count: Número de datos del tipo indicado enviados o recibidos  dtype: tipo de datos enviados o recibidos  dest/source: procesador destino/fuente  tag: etiqueta de comunicación  comm: comunicador de envío o recepción  status: código de retorno de la operación de recepción Comunicación punto a punto

 Comunicaciones de un procesador a varios y de varios procesadores a uno  Se reduce la posibilidad de error  Una llamada a una rutina colectiva reemplaza a varias llamadas a rutinas punto a punto  Código fuente más fácil de leer  Simplifica depuración y mantenimiento  Normalmente, la rutina colectiva es más rápida  Está más optimizada que su equivalente expresada por medio de rutinas punto a punto Comunicación colectiva

 Operación broadcast: Un único proceso envía copia de los mismos datos a todos los procesos de un grupo MPI_Bcast (void *buf, int count, MPI_Datatype dtype, int root, MPI_Comm comm);  buf: localización en memoria de los datos  count: Número de datos del tipo indicado enviados  dtype: tipo de datos enviados  root: procesador fuente  comm: comunicador de envío Comunicación colectiva

 Operación reduction: Un único proceso recoge datos de todos los procesos de un grupo y los combina según una operación aritmética MPI_Reduce (void *sendbuf, void *recvbuf, int count, MPI_Datatype dtype, MPI_Op op, int root, MPI_Comm com);  sendbuf: localización en memoria de los datos  recvbuf: buffer donde se combinan los datos recibidos  count: número de datos del tipo indicado recibidos  dtype: tipo de datos recibidos  op: operación aritmética que se aplica a los datos recibidos  root: procesador destino  com: comunicador de recepción Comunicación colectiva

 Operación scatter: Los datos de un procesador se dividen en N bloques (N nº de procesos), y se envían a cada proceso según orden de rank MPI_Scatter (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);  Operación gather: Paso inverso, se agrupan los datos de todos los procesos y se envían a uno solo MPI_Gather (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); Comunicación colectiva

“Hola Mundo” en C con MPI #include “mpi.h” #include int main(int argc, char **argv) { int rank, size; MPI_Init (&argc, &argv); MPI_Comm_rank (MPI_COMM_WORLD, &rank); MPI_Comm_size (MPI_COMM_WORLD, &size); printf( “Hola Mundo! Soy el proceso %d de %d\n”, rank,size); MPI_Finalize (); exit (0); } Hola Mundo C

#define CONMPI #ifdef CONMPI #include "mpi.h" #endif main(int argc, char *argv[]) { int nprocs=1,rank=0; #ifdef CONMPI MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&nprocs); MPI_Comm_rank(MPI_COMM_WORLD,&rank); // printf("proceso %i de %i \n",rank,nprocs); #endif DEFINES

#ifdef CONMPI //Broadcasteo la info MPI_Bcast(&k,uno, MPI_DOUBLE,cero,MPI_COMM_WORLD); MPI_Bcast(&v,uno, MPI_DOUBLE,cero, MPI_COMM_WORLD);. #endif DEFINES

#ifdef CONMPI if(rank==cero) { Temptot=(double*)malloc(sizeof(double)*nprocs*Neq); curtot=(double*)malloc(sizeof(double)*nprocs*Neq); #endif /*Abro archivos donde guardo los datos (en p=cero)*/ fp1=fopen("Mag.dat","a+"); fp2=fopen("Prom.dat","a+"); #ifdef CONMPI } #endif DEFINES

#ifdef CONMPI if(rank==cero) { start=MPI_Wtime(); #else start=clock(); #endif #ifdef CONMPI } #endif DEFINES

Barrier: MPI_Barrier(MPI_COMM_WORLD); #ifdef CONMPI if(rank==cero) { end=MPI_Wtime(); #else end=clock(); #endif FINALIZE #ifdef CONMPI MPI_Finalize(); #endif Mido tiempos, imprimo en rank cero, libero memoria en rank cero y finalizo

Mediciones de eficiencia y escalabilidad  Speed Up Tiempo Paralelo/(Tiempo Serie) teórico: recta! Eficiencia P*Tiempo Paralelo/(Tiempo Serial) teórico: Unidad

Mediciones

Referencias  Bibliografia en la pagina de la materia  The MPI Forum, 