ProParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,

Slides:



Advertisements
Presentaciones similares
GESTION DE MEMORIA.
Advertisements

Control de Enlace De Datos
El modelo de Von Neumann
Computadores de alta velocidad (la lista top500).
ENCUESTA A NEFRÓLOGOS URUGUAYOS SOBRE TRATAMIENTO DE ANEMIA RENAL
Concurrencia Exclusión mutua y sincronización
Tabla de Contenido Concurrencia.
TEMA 1 Introducción a la Programación Concurrente
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
LENGUAJES PARALELOS Chang y Smith (1990) clasificación:
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
7.- Urbanismo OCTUBRE 2011 Plan de Acción Comercial Paiporta.
09/02/2014Curso Bases de Datos1 Ejemplos Álgebra Relacional.
Programando con OpenMP*
Informática Básica Escuela Universitaria Politécnica Ingeniería Técnica en Obras Públicas Construcciones Civiles - Transportes y Servicios Urbanos - Hidrología.
PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación
ARISO 2 Escola Tècnica Superior dEnginyeria de Telecomunicació de Barcelona (Universitat Politècnica de Catalunya)
ENCUESTAS.
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
METODOLOGÍA DE REMUNERACIÓN DE LOS PLANES DE REDUCCIÓN DE PÉRDIDAS
Algoritmos paralelos Lab. 1: Introducción
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.
Ejercicios De Algoritmos
Resolución de Problemas y Algoritmos Lenguaje Pascal Entrada y Salida
Modelo de Superficies Matemáticas
Cómputo paralelo usando MPI: Simulaciones de N-cuerpos en la física
Excepciones Las excepciones son señales (en forma de objeto) que se generan en ejecución en casos de errores, para que puedan ser gestionadas en el programa.
INFORMATICA I Funciones CLASE 13.
proPar Curso 13/14 4 2, 3, 2 2, 2 5 Computadores Paralelos
proPar Curso 13/14 4 2, 3, 2 2, 2 5 Computadores Paralelos
Metodología de un proyecto de e-learning
Concurrencia en JAVA JAVA es un lenguaje que tiene soporte de concurrencia, mediante Threads. Un thread es un proceso “liviano” (lightweight process) que.
UPV-EHU / ATC Arquitecturas Paralelas Sincronización de procesos en sistemas SMP - Introducción - Exclusión mutua - Sincronización mediante eventos.
Ejercicios Fogueo.
Acciones y funciones Concepto
Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Ejercicios Fogueo. Ejercicio Fogueo for 1 ¿Qué muestra el siguiente código? for(int count=0; count
Algoritmos de Ordenación Paralelos
PRIMITIVAS DE SALIDA Curso de graficación I.
Análisis y Diseño de Algoritmos
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Tres Algoritmos Paralelos para Multiplicación Matriz Vector
Unidad III Administración de procesos
Programación Paralela Esquemas de Programación Paralela 1 PROGRAMACIÓN PARALELA Esquemas de programación paralela REFERENCIAS Wilkinson, Allen Gibbons,
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Analisis de Rendimiento.
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
INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
Conceptos, Tecnologías e Investigación en Procesamiento Paralelo Mauricio Marín (Universidad de Magallanes, Chile) Centro de Investigaciones de la Web.
Comunicación entre Procesos por pase de mensajes Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822 Prof. Yudith.
Programación de Memoria Compartida
Tipos de Paralelismo Paralelismo de datos: cada procesador ejecuta la misma tarea sobre diferentes conjuntos o subregiones de datos Paralelismo de tareas:
Modelos de Pase de Mensajes
Análisis de algoritmos
ProParCurso 14/15 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,
ProParCurso 14/15 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,
Arquitecturas Paralelas
Procesamiento ParaleloCurso 14/15 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva,
ProParPresentaciónCurso 14/15 Departamento: Informática Aplicada => Sistemas Informáticos (Bloque IV - Planta 4ª) Profesores: Pablo Carazo D4417
(agradecimiento: Ruben Weht
Agenda  Introducción  Relevamientos de tecnologías Objetivos de la fase de relevamiento de tecnologías Principales tecnologías disponibles -OpenMosix,
ProParCurso 14/15 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,
Algoritmos paralelos Lab. 4: MPI intermedio Glen Rodríguez.
ALGORITMOS PARALELOS DE MULTIPLICACIÓN DE MATRICES
Computadoras de Alto Rendimiento (HPC)
Agenda  Historia  Características  Mecanismos de concurrencia  Ejemplos  Desventajas  Accesibilidad  Conclusiones  Bibliografía.
 510/todos-los-detectives-se-llaman- flanagan_ _776.jpg 
proPar Curso 18/ , 3, 2 2, 4 3 Computadores Paralelos
Transcripción de la presentación:

proParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás, Pipeline, Síncrona, Equilibrado de carga y Terminación 4Programación basada en memoria común 5Algoritmos y aplicaciones Ordenación, … 4 4 2, 3, 2 2, 2 5 4

proParTemariosíncrona-2 5Computación Síncrona 1Sincronización (Barrera y su implementación) Contador Árbol Mariposa Butterfly Problemática de interbloqueo 2Cálculos sincronizados (PRAM) Modelo Hardware / Software Algunos ejemplos simples 3Ejemplo adaptado a CLUSTER Problema de la distribución del calor

proParSincronización BARRERAsíncrona-3 Muchas aplicaciones presentan sincronismo MPI_Comm_size (MPI_COMM_WORLD, &numProcesos); // Computar todos paso 1 MPI_Barrier (MPI_COMM_WORLD); // Computar todos paso 2 6 int pvm_barrier( char *group, int count ) PVM (75% según Fox, … 1994)

proParSincronización BARRERAsíncrona-4

proParSincronización BARRERAsíncrona-5 Princeton Application Repository for Shared-Memory Computers

proParBARRERA (Contador)síncrona-6 Idea: Un contador cuenta los procesos que llegan a la barrera //barrier(4) P2P2 P1P1 P3P3 P0P Pg ¿Dónde reside? Proceso gestor de grupos send(Pg, 4) recv(Pg) 3 X send(Pg, 4) recv(Pg) 2 X send(Pg, 4) recv(Pg) 1 X send(Pg, 4) recv(Pg) 0 ¿Código de Pg? Latencia O(n)

proParBARRERA (Árbol)síncrona-7 Idea: Fases de sincronismo parcial por parejas (Sean 8 Pi) P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 Llegada a la Barrera Salida de la Barrera ¿Código de cada Pi? Latencia (2 log n)

proParBARRERA (Árbol)síncrona-8 void barrera (int yo, int dist) { if (((yo/dist)%2) == 0) { recibir (yo+dist, &msj); if (dist<N/2) barrera (yo, dist*2); enviar (yo+dist, &msj); } else { enviar (yo-dist, &msj); recibir (yo-dist, &msj); } //barrera (yo, 1); ¿ Sin recursividad ?

proParBARRERA (Árbol)síncrona-9

proParBARRERA (Butterfly)síncrona-10 Idea: Barreras parciales por parejas (Enlaces Full Duplex) P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 Latencia (log n) ¿Código de cada Pi?

proParBARRERA (Butterfly)síncrona-11 void barrera (void) { for (dist=1; dist<N; dist*=2) if ( (yo%(dist*2)) < dist) { enviar (yo+dist, &msj); recibir (yo+dist, &msj); } else { recibir (yo-dist, &msj); enviar (yo-dist, &msj); } ? P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P dist grupos 2 4 8

proParBARRERA (Problemática de Interbloqueo)síncrona-12 Ojo en situaciones tipo Butterfly: P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P i P i enviar (P i+1, &msj); enviar (P i, &msj); recibir(P i+1, &msj); recibir(P i, &msj); ¡ Potencial interbloqueo ! P i P i enviar (P i+1, &msj); recibir(P i, &msj); recibir(P i+1, &msj); enviar (P i, &msj); Escritura cuidadosa enviarRecibir

proParBARRERA (Problemática de Interbloqueo)síncrona-13 MPI_Sendrecv envRec(P i+1, &msjIda, &msjVuelta); envRec(P i, &msjIda, &msjVuelta); ¡ 12 parámetros ! MPI_Sendrecv_replace envRecR(P i+1, &msj); envRecR(P i, &msj); P i-1 PiPi P i+1 envRecR(P i-2,…);envRecR(P i-1,…)envRecR(P i, …); envRecR(P i, …);envRecR(P i+1,…);envRecR(P i+2,…); ¡ Ojo !

proParCálculos sincronizados (PRAM)síncrona-14 Modelo Hardware (SIMD) Programa P0P0 P1P1 PnPn Reloj Instrucciones Memoria Común Los Pi trabajan síncronamente Los Pi activos ejecutan misma instrucción sobre distintos datos La instrucción: move, add, función La propia inst. dice qué Pi activo No se pasa a siguiente instrucción hasta que todos acaban EREWLectura y escritura Excluyente CREWLectura Concurrente y escritura Excluyente ERCWLectura Excluyente y escritura Concurrente CRCWLectura y escritura Concurrente

proParCálculos sincronizados (PRAM)síncrona-15 Modelo Software (operador: forall) forall (i=j to k [by delta]) {operaciones ejecutadas por P i [P 0..P n ]} s=0; for (i=0; i<10; i++) s = s + v[i]; forall (i=0; i<4; i++) t[i] = s + v[i]; forall (i=2; i<4; i++) Q(i); forall (i=0; i<4; i++) s = s + v[i]; fuera del forall secuencial P 0 P 0, P 1, P 2 y P 3 P 2 y P 3 Sólo válido si CRCW

proParCálculos sincronizados (PRAM)síncrona-16 Algunos ejemplos simples (Difusión de un dato): ¿ D = 5, N Pi quieren leerlo y máquina EREW ( N = 2 i ) ? 5 P 0 P 1 P n-1 int A[N]; 5 Replicar D 555 forall (i=0;i<N;i++) if (D==0)... for (i=0;i<N;i++) A[i] = D; forall (i=0;i<N;i++) if (A[i]==0)... Muy lento O(N) Puedo hacerlo en paralelo

proParCálculos sincronizados (PRAM)síncrona-17 Idea: Usar más Pi según se van teniendo copias nuevas en A 5 P0P0 inicio 55 P0P0 paso 0 5 P1P1 555 P0P0 paso 1 5 P1P1 P2P2 P3P3 555 P0P0 paso 2 (con N=8) 5 P1P1 P2P2 P3P P4P4 P5P5 P6P6 P7P7 A[0] = D;// Inicio for (i=0;i< ? ;i++)// Pasos forall (j= ? ;j< ? ;j++)// Difusión A[ ? ] = A[ ? ];// paralela logN 2i2i 2 i+1 j-2 i j Complejidad (log N)

proParCálculos sincronizados (PRAM)síncrona-18 Algunos ejemplos simples (Suma de un vector):Restricción: |V| = 2 i <= N V 0 V 1 V 2 V 3 V 4 V 5 V 6 V 7 V 01 V 23 V 45 V 67 V 03 V 47 V 07 Idea: Usar un vector auxiliar (A) ¿ Código paralelo ? V A P0P0 P7P A P1P1 P3P3 P5P5 P7P A P3P3 P7P7 36 A P7P7

proParCálculos sincronizados (PRAM)síncrona-19 Algunos ejemplos simples (Suma de un vector):Restricción: |V| = 2 i <= N V A P0P0 P7P A P1P1 P3P3 P5P5 P7P A P3P3 P7P7 36 A P7P7 forall (i=0;i<N;i++) A[i] = V[i]; for (i=1;i<=logN;i++) forall (j=2 i -1; j<N; j+=2 i ) A[j]=A[j]+A[j-2 i-1 ]; ¿ Código definitivo ?

proParCálculos sincronizados (PRAM)síncrona-20 ¿Cómo simular el forall con modelo de paso de mensajes? forall (P 0..P n ) Q(i); //forall (P 0..P n ) Bcast(… 0, grupo); Q(i); Barrier(grupo); PiPi ?

proParProblema de la distribución del calorsíncrona-21 Barra con temperatura en los extremos (1D): ¿Temperatura interior? 20º100º ¿Calor o Tibieza? ¿Modelo de difusión del calor? TaTbTc Tb se ve influido por Ta y Tc Tb (Ta + Tc) / N N-1 ¿Cuándo terminar?: NumIteraciones cotaError <

proParProblema de la distribución del calorsíncrona-22 #define N #define P 100 int main (int argc, char *argv[]) { int i, t; float x[P], y[P]; x[0] = y[0] = 20.0; x[P-1] = y[P-1] = 100.0; for (i=1; i<P-1; i++) x[i] = 0.0; for (t=1; t<=N; t+=2) { for (i=1; i<P-1; i++) y[i] = 0.5 * (x[i-1]+x[i+1]); for (i=1; i<P-1; i++) x[i] = 0.5 * (y[i-1]+y[i+1]); } // imprimir los valores de temperaturas exit (0); }

proParProblema de la distribución del calorsíncrona iteraciones iteraciones

proParProblema de la distribución del calorsíncrona-24 Placa con temperatura en los bordes (2D): ¿Temperatura interior?

proParProblema de la distribución del calorsíncrona-25 Placa con temperatura en los bordes (2D): ¿Temperatura interior? 200 x 200 puntos cambiosColor < iteraciones 457:883 (seg:mseg)

proParProblema de la distribución del calorsíncrona-26 Zona con temperatura en los bordes (2D): ¿Puedo pasar? ¿Código paralelo? Aguanto hasta 71º Aguanto hasta 71,5º Aguanto hasta 71,25º ¿Seguro? Cambios<6

proParProblema de la distribución del calorsíncrona-27 for (i=1; i<numIter; i++){ T = (TN + TS + TE + TO) * 0.25; send (PN, T); // send (PS, T); // Envios no send (PE, T); // bloqueantes send (PO, T); // recv (PN, &TN); recv (PS, &TS); recv (PE, &TE); recv (PO, &TO); } Barrera Local ¿ Terminación por cota de Error ?

proParProblema de la distribución del calorsíncrona-28 Particionamiento P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 P 11 P 12 P 13 P 14 P 15 P0P0 P9P9 ¡ Comunicación con 4 vecinos !¡ Comunicación con 2 vecinos !

proParProblema de la distribución del calorsíncrona-29 Particionamiento

proParProblema de la distribución del calorsíncrona-30 ¡ Ojo al partir ! (Fila de puntos fantasma) Proceso P i Proceso P i+1 Puntos fantasmas FIN