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,

Slides:



Advertisements
Presentaciones similares
El modelo de Von Neumann
Advertisements

1.3. PROGRAMACION PARALELA
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
II. ARQUITECTURAS PARALELAS
PBN © Jaime Alberto Parra Plaza CLASE 8 TALLER: INSTRUCCIONES DE TRANSFERENCIA DE DATOS.
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
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.
Arquitecturas Paralelas 12-13
Fundamentos de la Programación Estructurada
Funciones. Programación, Algoritmos y Estructuras de Datos.
INFORMATICA I Funciones CLASE 13.
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,
proPar Curso 13/14 4 2, 3, 2 2, 2 5 Computadores Paralelos
Concurrencia en JAVA JAVA es un lenguaje que tiene soporte de concurrencia, mediante Threads. Un thread es un proceso “liviano” (lightweight process) que.
Procesos de cálculo manual y automático. Esquema del funcionamiento de una instrucción.
Comunicación y sincronización entre procesos
Tema 3. Optimización de Código
Funciones y procedimientos
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Algoritmos de ordenación
PROCESAMIENTO PARALELO.  Organización lógica ◦ Visión que tiene el programados  Capacidad de expresar tareas paralelas (Estructura de control)  Método.
PRIMITIVAS DE SALIDA Curso de graficación I.
Tema 9 Estructuras.
Análisis y Diseño de Algoritmos
Paradigmas de Programación
Semana 5 Subprogramas..
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
Tres Algoritmos Paralelos para Multiplicación Matriz Vector
Programación III Clase 07 Funciones.
1 Concurrencia Procesos y Programas. 2 Establecer Comunicación entre procesos (memoria común)
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación
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,
Capítulo 1 “Elementos de Programación”
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
Descomposición Modular. Funciones
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 en MPI Capítulo 4. 4–2 NOT Gate 4–3 AND Gate.
INTRODUCCION. LOS LENGUAJES DE PROGRAMACIÓN Los lenguajes de programación herramientas que nos permiten crear programas y software. EL LENGUAJE DE MAQUINA.
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,
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
Arquitecturas Paralelas
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Procesamiento ParaleloCurso 14/15 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva,
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
ProParPresentaciónCurso 14/15 Departamento: Informática Aplicada => Sistemas Informáticos (Bloque IV - Planta 4ª) Profesores: Pablo Carazo D4417
(agradecimiento: Ruben Weht
ARQUITECTURAS PARALELAS
“Organización y Arquitectura de Computadores” William Stallings
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Estructuras de control Resolución de problemas y algoritmos.
Capa de Red4-1 Capítulo 4: Capa de Red  4. 1 Introducción  4.2 Circuitos virtuales y redes de datagramas  4.3 ¿Qué hay dentro de un router?  4.4 IP:
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,
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Radio Volumen esfera m. m #include.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Algoritmos paralelos Lab. 4: MPI intermedio Glen Rodríguez.
Algoritmo.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
U11: Recursividad Otra manera de hacer bucles Dicen algunos pedagogos que conceptualmente mas sencilla.
Agenda  Historia  Características  Mecanismos de concurrencia  Ejemplos  Desventajas  Accesibilidad  Conclusiones  Bibliografía.
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
proPar Curso 18/ , 3, 2 2, 4 3 Computadores Paralelos
Transcripción de la presentación:

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, Pipeline, Síncrona, Equilibrado de carga y Terminación 4Programación basada en memoria común 5Algoritmos y aplicaciones Ordenación, … 5 5 2, 3, 2 2, 2 4 3

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

yo = …; // datos.total[yo] = misPrimos(yo); load (“primopar”,4,4, …); read (&datos); for (i=1; i<16; i++) total[0] += total[i]; proParSincronización BARRERA (Ejemplo)síncrona-6 ARM A9 Dual Core Epiphany 16 1GB SDRAM primopar struct { int total[16]; } datos; load (“primopar”,4,4, …); sleep(10);// ¿Funcionará? read (&datos); for (i=1; i<16; i++) total[0] += total[i]; load (“primopar”,4,4, …); read (&datos); for (i=1; i<16; i++) total[0] += total[i]; yo = …; // datos.total[yo] = misPrimos(yo); if (yo==0) datos.computando = 0; struct { int total[16]; int computando; } datos; datos.computando = 1; load (“primopar”,4,4, …); while (datos.computando) read (&datos); for (i=1; i<16; i++) total[0] += total[i]; yo = …; // barrier_init(…); datos.total[yo] = misPrimos(yo); barrier (…); if (yo==0) datos.computando = 0; datos.computando = 1; load (“primopar”,4,4, …); while (datos.computando) read (&datos); for (i=1; i<16; i++) total[0] += total[i];

proParSincronización BARRERA (Escalabilidad)síncrona-7 for (i=0; i< ; i++) MPI_Barrier (MPI_COMM_WORLD); PC#Piµseg Parallella => 16Pi => 0,994 µseg PC9 => 4Pi [104] y 8Pi[385]

proParBARRERA (Contador)síncrona-8 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-9 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-10 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-11

proParBARRERA (Butterfly)síncrona-12 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-13 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-14 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-15 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-16 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-17 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-18 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-19 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-20 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-21 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-22 ¿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-23 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-24 #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-26 Placa con temperatura en los bordes (2D): ¿Temperatura interior?

proParProblema de la distribución del calorsíncrona-27 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-28 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-29 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-30 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-31 Particionamiento

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