Cómputo paralelo usando MPI: Simulaciones de N- cuerpos en la física
description
Transcript of Cómputo paralelo usando MPI: Simulaciones de N- cuerpos en la física
UAEH 1
Cómputo paralelo usando MPI: Simulaciones de N-cuerpos en la física
M.A. Rodríguez-MezaInstituto Nacional de Investigaciones Nucleares
Correo electrónico: [email protected]://www.astro.inin.mx/mar
Paralelo vs serial18/08/09
2
Concepto de secuencia• Dia – noche• nos levantamos – desayunamos – vamos a trabajar – comemos –
regresamos a trabajar – nos vamos al antro - ...• Hablamos secuencialmente
• En cualquier parte de la naturaleza y en la vida humana, las actividades se desarrollan y expresan a si mismas a través del principio secuencial.
• Es natural, por lo tanto, que los algorítmos y programas de cómputo se hayan formulado de acuerdo al concepto de secuencia. De hecho el concepto de algorítmo, antes del nacimiento de las computadoras fue definido como una secuencia finita de operaciones.
3
¿Dónde comenzo todo?
• Era del hielo:
• Edad de piedra
• Edad de bronce
• El oscurantismo: Bill Gates y Microsoft
• La manzana, pero no de Newton
• El renacimiento: Linux y GNU
€
3.1415* 2.7723453 /234.4567 sin(3.1415 /4)
Serial Vs. Paralelo: ¿Qué vemos a nuestro alrededor?
QPlease
COUNTER
COUNTER 1
COUNTER 2
• Las colas
• Restaurant
5
Pero ... eso es sólo una parte de la historia
• La actividad humana y la ley natural no sólo son secuenciales sino altamente paralelas. La acción no es sólo secuencial sino que hay acción en todas partes.
• El paralelismo es tan importante como lo secuencial.
• Los individuos son secuenciales pero los individuos son parte de organizaciones o de colectividades, actuando en paralelo.
• Lo mismo es cierto en la naturaleza
• Las leyes de la naturaleza muchas veces se expresan como campos físicos, funciones definidas en todos lados a un tiempo dado.
• Por lo tanto, una descripción completa de la actividad humana y de la acción en la naturaleza requiere de los dos conceptos, paralelismo y secuencialidad.
6
El concepto básico de la programación en paralelo
• El proceso: una secuencia de operaciones que pueden ser realizadas por procesador individual.
• Intercambio de información entre procesos paralelos.• Sincronización entre procesos.
t
x
7
El arte de la programación de procesos paralelos
Procesos:– Proceso secuencial– Proceso paralelo
Clústers:Memoria compartidaMemoria distribuida
Rank Sort Computation:
UNSORTED
LIST RANK
15 4
10 3
39 7
8 2
22 6
4 0
19 5
6 1
8
Patrones o categorias– Paralelismo de datos. Un número grande de datos es sujeto a un proceso idéntico o similar. (RC-Catalogo de
galaxias)
– Partición de los datos. El espacio de datos es particionado naturalmente en regiones adjacentes, cada una de las cuales es operada en paralelo por un procesador diferente.
– Algorítmo relajado. Cada proceso paralelo cálcula de una manera auto-suficiente sin sincronización o comunicación entre procesadores. El ordenamiento por rango en paralelo es un ejemplo de un algorítmo relajado.
– Iteración sincrónica. Cada procesador realiza el mismo cálculo iterativo en una porción diferente de los datos. Sin embargo, el procesador debe ser sincronizado al final de cada iteración.
– Replicated workers. Un pool central de tareas similares es mantenida. Hay un número grandes de trabajadores que sacan tareas del pool, llevan a cabo el cálculo requerido, y posiblemente agreguen una nueva tarea al pool. Todo el cálculo termina cuando el pool se vacia.
– Pipelined computation. Los procesos son arreglados en alguna estructura regular tal como un anillo o malla bidimensional. Los datos entonces fluyen a través de toda la estructura del proceso, con cada proceso realizando cierta fase del cálculo total.
9
Degradation sources
• Memory contention.• Excessive sequential code.• Process creation time.• Communication delay.• Synchronization delay.• Load imbalance.
10
Problema de N-cuerpos
11
Paralelizando la evolución de un sistema de N-cuerpos
• Ring topology
PROCESS 1 PROCESS 2 PROCESS 3 PROCESS 4 PROCESS 5 TO 1
A A B B C C D D E E
A E B A C B D C E D
A D B E C A C B E C
A C B D C E D A E B
A B B C C D D E E A
12
Protocolo Message-Passing Interface (MPI)
• pnbody:– Funciones
1. MPI_Bcast2. MPI_Finalize3. MPI_Barrier4. MPI_Allreduce5. MPI_Allgather6. MPI_Sendrecv7. MPI_Reduce8. MPI_Send9. MPI_Recv10. MPI_Ssend11. MPI_Abort12. MPI_Gather13. MPI_Init14. MPI_Comm_Rank15. MPI_Comm_size
pnbody: Parámetros
1. ThisTask2. NTask3. Ptask
Tipos1. MPI_Status