Está en la página 1de 59

Introduccion al Computo Paralelo y MPI

Chi Domnguez Jes us Javier


Cinvestav, Zacatenco
Noviembre 7 de 2013, Mexico D.F.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Introduccion al Computo Paralelo
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia (gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia (gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia (gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia (gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia (gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia
(gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Que es el procesamiento paralelo?
Procesamiento simultaneo de m ultiples tareas sobre m ultiples
procesadores.
Programacion paralela (Divide-and-Conquer).
Por que el procesamiento paralelo?
Los requerimientos computacionales cada vez son mayores.
Solucion costo-eciencia (gracias a los multiprocesadores)
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Los sistemas computacionales estan clasicados en las siguientes 4
categoras:
Single Instruction Single Data (SISD).
Single Instruction Multiple Data (SIMD).
Multiple Instruction Single Data (MISD).
Multiple Instruction Multiple Data (MIMD).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Los sistemas computacionales estan clasicados en las siguientes 4
categoras:
Single Instruction Single Data (SISD).
Single Instruction Multiple Data (SIMD).
Multiple Instruction Single Data (MISD).
Multiple Instruction Multiple Data (MIMD).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Los sistemas computacionales estan clasicados en las siguientes 4
categoras:
Single Instruction Single Data (SISD).
Single Instruction Multiple Data (SIMD).
Multiple Instruction Single Data (MISD).
Multiple Instruction Multiple Data (MIMD).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Los sistemas computacionales estan clasicados en las siguientes 4
categoras:
Single Instruction Single Data (SISD).
Single Instruction Multiple Data (SIMD).
Multiple Instruction Single Data (MISD).
Multiple Instruction Multiple Data (MIMD).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Los sistemas computacionales estan clasicados en las siguientes 4
categoras:
Single Instruction Single Data (SISD).
Single Instruction Multiple Data (SIMD).
Multiple Instruction Single Data (MISD).
Multiple Instruction Multiple Data (MIMD).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional SISD es una maquina monoprocesador
capaz de ejecutar una sola instruccion la cual opera sobre un solo
ujo datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional SISD es una maquina monoprocesador
capaz de ejecutar una sola instruccion la cual opera sobre un solo
ujo datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional SIMD es una maquina multiprocesador
capaz de ejecutar la misma instruccion en todos los procesos, pero
operando diferentes ujos de datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional SIMD es una maquina multiprocesador
capaz de ejecutar la misma instruccion en todos los procesos, pero
operando diferentes ujos de datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional MISD es una maquina multiprocesador
capaz de ejecutar diferentes instrucciones en todos los procesos,
pero operando el mismo ujo de datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional MISD es una maquina multiprocesador
capaz de ejecutar diferentes instrucciones en todos los procesos,
pero operando el mismo ujo de datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional MIMD es una maquina multiprocesador
capaz de ejecutar m ultiples instrucciones la cual opera sobre
m ultiples conjuntos de datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un sistema computacional MIMD es una maquina multiprocesador
capaz de ejecutar m ultiples instrucciones la cual opera sobre
m ultiples conjuntos de datos.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Existen dos categoras de de este sistema: El Shared Memory
MIMD (Conectadas a una sola Memoria Global) y el Distributed
Memory MIMD (Cada proceso tiene su propia memoria local).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Clusters.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un cluster es un tipo de sistema de procesamiento paralelo o
distribuido, que consiste en un conjunto de ordenadores
independientes interconectados trabajando juntos como un unico
recurso informatico integrado.
El tipo mas com un de cluster es el cluster Beowulf , que es un
cluster implementado con m ultiples ordenadores comerciales
identicos conectados a una red de area local TCP/IP Ethernet. La
tecnologa Beowulf fue desarrollada originalmente por Thomas
Sterling y Donald Becker
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un cluster es un tipo de sistema de procesamiento paralelo o
distribuido, que consiste en un conjunto de ordenadores
independientes interconectados trabajando juntos como un unico
recurso informatico integrado.
El tipo mas com un de cluster es el cluster Beowulf , que es un
cluster implementado con m ultiples ordenadores comerciales
identicos conectados a una red de area local TCP/IP Ethernet. La
tecnologa Beowulf fue desarrollada originalmente por Thomas
Sterling y Donald Becker
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Un cluster es un tipo de sistema de procesamiento paralelo o
distribuido, que consiste en un conjunto de ordenadores
independientes interconectados trabajando juntos como un unico
recurso informatico integrado.
El tipo mas com un de cluster es el cluster Beowulf , que es un
cluster implementado con m ultiples ordenadores comerciales
identicos conectados a una red de area local TCP/IP Ethernet. La
tecnologa Beowulf fue desarrollada originalmente por Thomas
Sterling y Donald Becker
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Message Passing Interface (MPI).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Message Passing Interface (MPI), es una interfaz estandarizada
para la realizacion de aplicaciones paralelas basadas en paso de
mensajes.
El paso de mensajes es una tecnica empleada en programacion
concurrente para aportar sincronizacion entre procesos y permitir
la exclusion mutua, de manera similar a como se hace con los
semaforos.
El estandar nal por el MPI fue presentado en la conferencia de
Supercomputo en noviembre de 1993, constituyendose as el foro
para el MPI (www.mpi-forum.org).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Message Passing Interface (MPI), es una interfaz estandarizada
para la realizacion de aplicaciones paralelas basadas en paso de
mensajes.
El paso de mensajes es una tecnica empleada en programacion
concurrente para aportar sincronizacion entre procesos y permitir
la exclusion mutua, de manera similar a como se hace con los
semaforos.
El estandar nal por el MPI fue presentado en la conferencia de
Supercomputo en noviembre de 1993, constituyendose as el foro
para el MPI (www.mpi-forum.org).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Message Passing Interface (MPI), es una interfaz estandarizada
para la realizacion de aplicaciones paralelas basadas en paso de
mensajes.
El paso de mensajes es una tecnica empleada en programacion
concurrente para aportar sincronizacion entre procesos y permitir
la exclusion mutua, de manera similar a como se hace con los
semaforos.
El estandar nal por el MPI fue presentado en la conferencia de
Supercomputo en noviembre de 1993, constituyendose as el foro
para el MPI (www.mpi-forum.org).
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI se dene un comunicador como una coleccion de procesos,
los cuales pueden enviar mensajes el uno al otro; el comunicador
basico se denomina MPI COMM WORLD y se dene mediante
un macro del lenguaje C.
Las llamadas de MPI se dividen en cuatro clases:
1
Llamadas utilizadas para inicializar, administrar y nalizar
comunicaciones.
2
Llamadas utilizadas para transferir datos entre un par de
procesos.
3
Llamadas para transferir datos entre varios procesos.
4
Llamadas utilizadas para crear tipos de datos denidos por el
usuario.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI se dene un comunicador como una coleccion de procesos,
los cuales pueden enviar mensajes el uno al otro; el comunicador
basico se denomina MPI COMM WORLD y se dene mediante
un macro del lenguaje C.
Las llamadas de MPI se dividen en cuatro clases:
1
Llamadas utilizadas para inicializar, administrar y nalizar
comunicaciones.
2
Llamadas utilizadas para transferir datos entre un par de
procesos.
3
Llamadas para transferir datos entre varios procesos.
4
Llamadas utilizadas para crear tipos de datos denidos por el
usuario.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI se dene un comunicador como una coleccion de procesos,
los cuales pueden enviar mensajes el uno al otro; el comunicador
basico se denomina MPI COMM WORLD y se dene mediante
un macro del lenguaje C.
Las llamadas de MPI se dividen en cuatro clases:
1
Llamadas utilizadas para inicializar, administrar y nalizar
comunicaciones.
2
Llamadas utilizadas para transferir datos entre un par de
procesos.
3
Llamadas para transferir datos entre varios procesos.
4
Llamadas utilizadas para crear tipos de datos denidos por el
usuario.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI se dene un comunicador como una coleccion de procesos,
los cuales pueden enviar mensajes el uno al otro; el comunicador
basico se denomina MPI COMM WORLD y se dene mediante
un macro del lenguaje C.
Las llamadas de MPI se dividen en cuatro clases:
1
Llamadas utilizadas para inicializar, administrar y nalizar
comunicaciones.
2
Llamadas utilizadas para transferir datos entre un par de
procesos.
3
Llamadas para transferir datos entre varios procesos.
4
Llamadas utilizadas para crear tipos de datos denidos por el
usuario.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI se dene un comunicador como una coleccion de procesos,
los cuales pueden enviar mensajes el uno al otro; el comunicador
basico se denomina MPI COMM WORLD y se dene mediante
un macro del lenguaje C.
Las llamadas de MPI se dividen en cuatro clases:
1
Llamadas utilizadas para inicializar, administrar y nalizar
comunicaciones.
2
Llamadas utilizadas para transferir datos entre un par de
procesos.
3
Llamadas para transferir datos entre varios procesos.
4
Llamadas utilizadas para crear tipos de datos denidos por el
usuario.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI se dene un comunicador como una coleccion de procesos,
los cuales pueden enviar mensajes el uno al otro; el comunicador
basico se denomina MPI COMM WORLD y se dene mediante
un macro del lenguaje C.
Las llamadas de MPI se dividen en cuatro clases:
1
Llamadas utilizadas para inicializar, administrar y nalizar
comunicaciones.
2
Llamadas utilizadas para transferir datos entre un par de
procesos.
3
Llamadas para transferir datos entre varios procesos.
4
Llamadas utilizadas para crear tipos de datos denidos por el
usuario.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
En MPI , un mensaje esta conformado por:
El cuerpo del mensaje.
Buer.
Tipo de dato.
Count.
Envoltura del mensaje.
La fuente.
El destino.
El comunicador.
Una etiqueta.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
El MPI dispone de 4 funciones primordiales que se utilizan en todo
programa con MPI. Estas funciones son:
MPI Init permite inicializar una sesion MPI. Esta funcion
debe ser utilizada antes de llamar a cualquier otra funcion de
MPI.
MPI Finalize permite terminar una sesion MPI. Esta funcion
debe ser la ultima llamada a MPI que un programa realice.
Permite liberar la memoria usada por MPI.
MPI Comm size permite determinar el nmero total de
procesos que pertenecen a un comunicador.
MPI Comm rank permite determinar el identicador (rank)
del proceso actual.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
El MPI dispone de 4 funciones primordiales que se utilizan en todo
programa con MPI. Estas funciones son:
MPI Init permite inicializar una sesion MPI. Esta funcion
debe ser utilizada antes de llamar a cualquier otra funcion de
MPI.
MPI Finalize permite terminar una sesion MPI. Esta funcion
debe ser la ultima llamada a MPI que un programa realice.
Permite liberar la memoria usada por MPI.
MPI Comm size permite determinar el nmero total de
procesos que pertenecen a un comunicador.
MPI Comm rank permite determinar el identicador (rank)
del proceso actual.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
El MPI dispone de 4 funciones primordiales que se utilizan en todo
programa con MPI. Estas funciones son:
MPI Init permite inicializar una sesion MPI. Esta funcion
debe ser utilizada antes de llamar a cualquier otra funcion de
MPI.
MPI Finalize permite terminar una sesion MPI. Esta funcion
debe ser la ultima llamada a MPI que un programa realice.
Permite liberar la memoria usada por MPI.
MPI Comm size permite determinar el nmero total de
procesos que pertenecen a un comunicador.
MPI Comm rank permite determinar el identicador (rank)
del proceso actual.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
El MPI dispone de 4 funciones primordiales que se utilizan en todo
programa con MPI. Estas funciones son:
MPI Init permite inicializar una sesion MPI. Esta funcion
debe ser utilizada antes de llamar a cualquier otra funcion de
MPI.
MPI Finalize permite terminar una sesion MPI. Esta funcion
debe ser la ultima llamada a MPI que un programa realice.
Permite liberar la memoria usada por MPI.
MPI Comm size permite determinar el nmero total de
procesos que pertenecen a un comunicador.
MPI Comm rank permite determinar el identicador (rank)
del proceso actual.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
El MPI dispone de 4 funciones primordiales que se utilizan en todo
programa con MPI. Estas funciones son:
MPI Init permite inicializar una sesion MPI. Esta funcion
debe ser utilizada antes de llamar a cualquier otra funcion de
MPI.
MPI Finalize permite terminar una sesion MPI. Esta funcion
debe ser la ultima llamada a MPI que un programa realice.
Permite liberar la memoria usada por MPI.
MPI Comm size permite determinar el nmero total de
procesos que pertenecen a un comunicador.
MPI Comm rank permite determinar el identicador (rank)
del proceso actual.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
La transferencia de datos entre dos procesos se consigue mediante
las llamadas MPI Send y MPI Recv. Ambas funciones son
bloqueantes, es decir que el proceso que realiza la llamada se
bloquea hasta que la operacion de comunicacion se complete.
Las versiones no bloqueantes de estas, son MPI Isend y
MPI Irecv, respectivamente.
Estas llamadas inician la operacion de transferencia pero su
nalizacion debe ser realizada de forma explcita mediante
llamadas como MPI Test y MPI Wait
Chi Domnguez Jes us Javier Computo Paralelo, MPI
La transferencia de datos entre dos procesos se consigue mediante
las llamadas MPI Send y MPI Recv. Ambas funciones son
bloqueantes, es decir que el proceso que realiza la llamada se
bloquea hasta que la operacion de comunicacion se complete.
Las versiones no bloqueantes de estas, son MPI Isend y
MPI Irecv, respectivamente.
Estas llamadas inician la operacion de transferencia pero su
nalizacion debe ser realizada de forma explcita mediante
llamadas como MPI Test y MPI Wait
Chi Domnguez Jes us Javier Computo Paralelo, MPI
La transferencia de datos entre dos procesos se consigue mediante
las llamadas MPI Send y MPI Recv. Ambas funciones son
bloqueantes, es decir que el proceso que realiza la llamada se
bloquea hasta que la operacion de comunicacion se complete.
Las versiones no bloqueantes de estas, son MPI Isend y
MPI Irecv, respectivamente.
Estas llamadas inician la operacion de transferencia pero su
nalizacion debe ser realizada de forma explcita mediante
llamadas como MPI Test y MPI Wait
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Para nalizar con esta breve indroduccion al Computo Paralelo y
MPI , se muestra un codigo bastante sencillo.
Chi Domnguez Jes us Javier Computo Paralelo, MPI
/* C Example */
#include <mpi.h>
#include <stdio.h>
int main (int argc, char* argv[])
{
int rank, size;
/* starts MPI */
MPI_Init (&argc, &argv);
/* get current process id */
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
/* get number of processes */
MPI_Comm_size (MPI_COMM_WORLD, &size);
printf( "Hello world from process %d of %d\n",
rank, size );
MPI_Finalize();
return 0;
}
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Gracias por su atencion!
Chi Domnguez Jes us Javier Computo Paralelo, MPI
Fuentes Bibliogracas:
1. Introduction to Parallel Computing, Second Edition. By
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar -
Addison Wesley, 2003.
2. G. Wilson. Parallel Programming for Scientists and Engineers.
MIT Press, Cambridge, MA, 1995.
3. I. Foster and S. Truecke. Parallel Programming with PCN.
Technical Report ANL-91/32, Argonne National Laboratory,
Argonne, December 1991.
4. I. Foster. Designing and Building Parallel Programs. Addison
Wesley, 1996, available at http:www.mcs.anl.gov/dbpp
5. Programming on Parallel Machines. Norm Matlo, University
of California, Davis.
http://heather.cs.ucdavis.edu/matlo/ParProcBook.pdf
Chi Domnguez Jes us Javier Computo Paralelo, MPI

También podría gustarte