120 likes | 289 Views
M.A. Rodr íguez -Meza Instituto Nacional de Investigaciones Nucleares. Cómputo paralelo usando MPI: Simulaciones de N- cuerpos en la física. Correo electr ónico : mar@nuclear.inin.mx http:// www.astro.inin.mx /mar. Paralelo vs serial. Concepto de secuencia. Dia – noche
E N D
M.A. Rodríguez-Meza InstitutoNacional de InvestigacionesNucleares Cómputoparalelousando MPI: Simulaciones de N-cuerpos en la física Correoelectrónico: mar@nuclear.inin.mx http://www.astro.inin.mx/mar Paralelovs serial UAEH
Concepto de secuencia • Dia – noche • noslevantamos – desayunamos – vamos a trabajar – comemos – regresamos a trabajar – nosvamos al antro - ... • Hablamossecuencialmente • En cualquier parte de la naturalezay en la vidahumana, lasactividades se desarrollanyexpresan a simismas a través del principio secuencial. • Es natural, por lo tanto, que los algorítmosyprogramas de cómputo se hayanformulado de acuerdo al concepto de secuencia. De hecho el concepto de algorítmo, antes del nacimiento de lascomputadorasfuedefinidocomounasecuenciafinita de operaciones.
¿Dóndecomenzotodo? • 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
Q Please Serial Vs. Paralelo: ¿Quévemos a nuestroalrededor? • Las colas • Restaurant COUNTER 2 COUNTER COUNTER 1
Pero ... esoessólouna parte de la historia • La actividadhumanay la ley natural no sólo son secuencialessinoaltamenteparalelas. La acción no essólosecuencialsinoque hay acción en todaspartes. • El paralelismoes tan importantecomo lo secuencial. • Los individuos son secuencialespero los individuos son parte de organizacioneso de colectividades, actuando en paralelo. • Lo mismoescierto en la naturaleza • Las leyes de la naturalezamuchasveces se expresancomocamposfísicos, funcionesdefinidas en todoslados a un tiempo dado. • Por lo tanto, unadescripcióncompleta de la actividadhumanay de la acción en la naturalezarequiere de los dos conceptos, paralelismoysecuencialidad.
El conceptobásico de la programación en paralelo • El proceso: unasecuencia de operacionesquepueden ser realizadasporprocesador individual. • Intercambio de información entre procesosparalelos. • Sincronización entre procesos. t x
El arte de la programación de procesos paralelos • Procesos: • Procesosecuencial • Procesoparalelo • Rank Sort Computation: UNSORTED LIST RANK 15 4 10 3 39 7 8 2 22 6 4 0 19 5 6 1 • Clústers: • Memoriacompartida • Memoriadistribuida
Patronesocategorias • Paralelismo de datos. Un númerogrande de datosessujeto a un procesoidénticoo similar. (RC-Catalogo de galaxias) • Partición de los datos. El espacio de datosesparticionadonaturalmente en regionesadjacentes, cadauna de lascualesesoperada en paralelopor un procesadordiferente. • Algorítmorelajado.Cadaprocesoparalelocálcula de unamanera auto-suficiente sin sincronizaciónocomunicación entre procesadores. El ordenamientoporrango en paraleloes un ejemplo de un algorítmorelajado. • Iteraciónsincrónica.Cadaprocesadorrealiza el mismocálculoiterativo en unaporcióndiferente de los datos. Sin embargo, el procesadordebe ser sincronizado al final de cadaiteración. • Replicated workers. Un pool central de tareassimilaresesmantenida. Hay un númerograndes de trabajadoresquesacantareas del pool, llevan a cabo el cálculorequerido, yposiblementeagreguenunanuevatarea al pool. Todo el cálculoterminacuando el pool se vacia. • Pipelined computation. Los procesos son arreglados en algunaestructura regular talcomo un anilloomallabidimensional. Los datosentoncesfluyen a través de toda la estructura del proceso, con cadaprocesorealizandociertafase del cálculo total.
Degradation sources • Memory contention. • Excessive sequential code. • Process creation time. • Communication delay. • Synchronization delay. • Load imbalance.
Paralelizando la evolución de un sistema de N-cuerpos • Ring topology
Protocolo Message-Passing Interface (MPI) • pnbody: • Funciones • MPI_Bcast • MPI_Finalize • MPI_Barrier • MPI_Allreduce • MPI_Allgather • MPI_Sendrecv • MPI_Reduce • MPI_Send • MPI_Recv • MPI_Ssend • MPI_Abort • MPI_Gather • MPI_Init • MPI_Comm_Rank • MPI_Comm_size • pnbody: • Parámetros • ThisTask • NTask • Ptask • Tipos • MPI_Status