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