La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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,

Presentaciones similares


Presentación del tema: "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,"— Transcripción de la presentación:

1 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

2 proParTemariopipeline-2 5Pipeline 1Técnica de pipeline 2Plataforma para aplicaciones tipo pipeline 3Suma de números 4Ordenación de números 5Generación de números primos 6Resolución de sistemas de ecuaciones lineales

3 proParTemariopipeline Adam Smith La riqueza de las naciones => Alfileres Fábrica ejemplo: 18 tareas 10 obreros alfDía AlfObrero ¿Artesano sólo y una a una? 20AlfDía un reto +Destreza -TiemposMuertos +Máquinas

4 proParTemariopipeline-4 [8/10/ /10/2013]: 100 años de coches en serie Fábrica Ford T: piezas 84 tareas Se pasó de: 1 coche 12h 1 coche 1,5h

5 proParTécnica de pipelinepipeline-5 Idea intuitiva => Cadena de montaje de coches Secuencia de datos homogéneos de entrada Proceso divisible en subtareas secuenciales (filtros) LCM 1Hora 3 Mill. 10:00 (1)(1) 10:15 (1)(1) D2D2 10:30 (1)(1) D 3,D 2 10:45 (1)(1) D 4,D 3,D 2 11:00 (2)(2) D 5,D 4,D 3 P1P1 LCM ,5 M 1,5M 1,5M 10:00 (1)(1) 10:15 (1)(1) D2D2 10:20 (2)(2)(1)(1) 10:30 (2)(2)(1)(1) D3D3 10:40 (3)(3)(2)(2)(1)(1) 10:45 (3)(3)(2)(2)(1)(1) D4D4 11:00 (4)(4)(3)(3)(2)(2) D5D5 P1P1 Secuencial => 1P x HoraVsPipeline => 1P x 20 Descomposición funcional Peluquería Personas Despeinadas (Di) Lavar => Cortar => Marcar Difícil equilibrar carga (L=C=M)# filtros no muy grande

6 proParTécnica de pipelinepipeline-6 Ejemplo1: Filtrado de señal f0f0 f in f out f1f1 f3f3 f2f2 f(t) Señal filtrada d0d0 d1d1 d0d0 d1d1 d0d0 d2d2 d1d1 d0d0 d2d2 d3d3 d2d2 d1d1 d3d3 d4d4 d3d3 d2d2 d4d4 d5d5 d4d4 d3d3 d5d5 d6d6 Hay otras dos formas de utilizar pipeline que veremos con ejemplos f0f0 f1f1 f2f2 f3f3 t

7 proParPlataformas para aplicaciones tipo pipelinepipeline-7 PC + Placa con Transputers Switch PC + ClearSpeed CSX700 [96+96]

8 proParSuma de númerospipeline-8 for (i=1; i<=N; i++) S = S + V[i]; P1P1 P2P2 P3P3 PnPn V[] 0 1.Cada Pi tiene un dato Vi del vector rec(Pi, &S); env(Pd, S+Vi); 2.Un Maestro tiene el vector P1P1 P2P2 P3P3 PnPn V[] V 3,V 2,V 1 maestro V[] rec(Pi, &V); env(Pd, [V 1 +V 2,[V 3..V n ]]); ¡ Tantos Pi como números !

9 proParSuma de númerospipeline-9 3.Un Maestro tiene el vector y hay pocos procesos P << N rec(Pi, &V); env(Pd, [Suma[V 0..V q ],[V q+1..V n ]]); Cada Pi suma una rodaja de tamaño N / P = q MP1P1 P2P2 P3P3 P4P4 V[] + ¡ Sigo sin hacer trabajar en paralelo a los procesos ! 4.Tengo que sumar K vectores de tamaño N Muchas instancias del mismo problema Otro uso pipeline ¿Mejorable?

10 proParSuma de númerospipeline-10 Pipeline aplicado a muchas instancias del mismo problema MP1P1 P2P2 P3P3 P4P4 MP1P1 P2P2 P3P3 P4P4 MP1P1 P2P2 P3P3 P4P4 MP1P1 P2P2 P3P3 P4P4 MP1P1 P2P2 P3P3 P4P4 MP1P1 P2P2 P3P3 P4P4 ¿Equilibrado?

11 proParSuma de númerospipeline-11 Pipeline aplicado a muchas instancias del mismo problema ¡ Ojo con la relación cómputo/comunicación ! Procesos MismoPC 12:271 6:492 4:334 Uno*PC 11:786 17:002 Dos*PC 9:208 cuentaPar: Números dentro de diez rangos de valores V[ ] en 200 subV[ ]

12 proParOrdenación de númerospipeline-12 for i:=2 to n do x := A[i] insertar (x, A[1..i]) i Xmin max min maestro P1P1 P2P2 PnPn ¿Programa paralelo?

13 proParOrdenación de númerospipeline-13 Xmin max min maestro P1P1 P2P2 PnPn /* Ordenación básica */ nProcsDer = n-i; rec (P i-1, &Xmin); for (j=0; j

14 proParOrdenación de númerospipeline-14 P1P1 MP2P2 P3P3 PnPn Anillo P1P1 MP2P2 P3P3 PnPn Array lineal bidireccional OrdenacionBasica; env (P i-1, &Xmin); for (j=0; j

15 proParGeneración de números primospipeline-15 Calcular los primeros números primos < N Criba de Eratóstenes for (i=2; i

16 proParGeneración de números primospipeline-16 Primera aproximación 3 0,N, …,29,25,23,19,17,13,11,7,5 5 7,11,13,17,19,23,29, …,N, ¿ Código paralelo ?

17 proParGeneración de números primospipeline-17 Segunda aproximación: Dos fases y tablas de primos generadores 3 0,7,5 5 7,0 7 FASE 1: Tabla de primos generadores N = 100 => 100 => < ,97, …,29,25,23,19,17,13,11 FASE 2: Cálculo del resto de primos ¿ Código paralelo ?

18 ...13,11,7, ,7,5,3 proParGeneración de números primospipeline-18 Calcular los N primeros números primos Criba de Eratóstenes ,4,3,2 P1P1 MP2P2 PnPn 23 rec (P i-1, &primo); while (masNumeros) { rec (P i-1, &n); if ((n%primo) != 0) env (P i+1, &n); } Más eficiente en la práctica

19 proParResolución de sistemas de ecuaciones linealespipeline-19 a n-1,0 x 0 +a n-1,1 x 1 +a n-1,2 x a n-1,n-1 x n-1 = b n-1. a 2,0 x 0 +a 2,1 x 1 +a 2,2 x 2 = b 2 a 1,0 x 0 +a 1,1 x 1 = b 1 a 0,0 x 0 = b 0 b 0 X 0 = a 0,0 b 1 -a 1,0 x 0 X 1 = a 1,1 b 2 -a 2,0 x 0 -a 2,1 x 1 X 2 = a 2,2 ¿ Programa paralelo ? i-1 b i - a i,j x j j=0 X i = a i,i x0x0 x1x1 x0x0 x1x1 x0x0 x i-1

20 proParResolución de sistemas de ecuaciones linealespipeline-20 i-1 b i - a i,j x j j=0 X i = a i,i x0x0 x1x1 x0x0 x1x1 x0x0 x i-1 suma = 0; for (j=0; j


Descargar ppt "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,"

Presentaciones similares


Anuncios Google