La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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,

Presentaciones similares


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

1 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 4 2, 3, 2 2, 2 5 4

2 proParTemarioCompulsiva-2 3Paralelismo compulsivo 1Computación paralela ideal 2Transformación geométrica de imágenes 3Fractales: El conjunto de Mandelbrot 4Los métodos de Monte Carlo

3 proParComputación paralela idealCompulsiva-3 entrada salida Independencia total Equilibrio de carga perfecto e1e2eN maestro Quasi ideal Maestro reparte trabajos y recolecta resultados Los esclavos no se comunican entre sí Poca comunicación frente a cómputo

4 proParTransformación geométrica de imágenesCompulsiva-4 Digital: RamVideo | mapaPixels 512 dibujarPixel(f,c,color) Construir o manipular Muchos formatos: jpg, giff, tiff, bmp,... jasper ppm y pgm Color: RGB Tonalidad Grises http://netpbm.sourceforge.net/

5 proParTransformación geométrica de imágenesCompulsiva-5 Girar: x’ = x cos  + y sen  y’ = y cos  - x sen  Desplazar, Escalar,... 1024*768 = 786.432 N M N M Igual para todo pixel ¿Un  P * pixel? ¡ No tan fácil !

6 proParTransformación geométrica de imágenesCompulsiva-6 Girar no es tan fácil 30º 512x512

7 proParTransformación geométrica de imágenesCompulsiva-7 Girar no es tan fácil 30º + filtro ¡ En 40 mseg !

8 proParTransformación geométrica de imágenesCompulsiva-8 Girar no es tan fácil [30º + filtro] 12 veces

9 proParTransformación geométrica de imágenesCompulsiva-9 Girar no es tan fácil [1º + filtro] 360 veces ¿Qué pasa?

10 proParTransformación geométrica de imágenesCompulsiva-10 Girar no es tan fácil [1º + filtro] 360 veces Giros incrementales [1, 2, ….] desde el original => 9,311 seg

11 proParTransformación geométrica de imágenesCompulsiva-11 Un filtrado es más facil

12 proParTransformación geométrica de imágenesCompulsiva-12 Sea imagen de 1024*768 (786.432) y 16  P => 49.152 pixels *  P ¿ Cómo repartir el trabajo ? 1024 48 filas 64 768 columnas 256 192 rectángulos ¿Cómo sería con modelo cluster?¿Eficiencia? Se adapta más al modelo de multiprocesadores: (memoria común)

13 proParFractales: El conjunto de MandelbrotCompulsiva-13 0255 0 Fila Columna 512 colores [3+3+3] 1 …...... 2 ……….. 3 ………………….… 2 ……… 1.. 2.. 3…………….. 4 --- 9 --- 256 0….. 462 ----- 3 1 6 7 ---- 55 0 ……………………………….… 20-5 1.......... 2 ………... 3 …………………... 2……….. mandelsec.txt 1 int colores[256][256] Z k+1 = Z k 2 + Cj 2 dibujarPixel (f, c, colores[f][c])

14 Condición de divergencia proParFractales: El conjunto de MandelbrotCompulsiva-14 Representaciones gráficas contenidas en una fórmula Conjunto de Mandelbrot {M} Z k+1 = Z k 2 + Cj Z 0 = 0 K = 0..   m / |Zm| > 2  Cj  {M} ? K = 0..N => # Colores a utilizar +2 0 -20 Real -2 Imaginario Cj = a + b i b a Cj  {M} diverge Zm => Color(m) Cj  {M} no diverge => Negro

15 proParFractales: El conjunto de MandelbrotCompulsiva-15 ¿Programa secuencial? Sea mapaPixel 256*256 y 512 colores for (f=0; f<256; f++) for (c=0; c<256; c++) { pixelAPunto(f,c,&b,&a); color = mandelbrot(a,b); dibujarPixel(f,c,color); } +2 0 -20 Real -2 Imaginario 2550 Columnas 0 255 Filas

16 proParFractales: El conjunto de MandelbrotCompulsiva-16 #define MAX_ITER = 256 int mandelbrot (double A, double B) { double X = 0.0, Y = 0.0; double XX, YY, distancia; int i = 0; do { XX = X; YY = Y; X = ((XX*XX) - (YY*YY)) + A; Y = (2.0 * (XX*YY)) + B; i++; distancia = X*X + Y*Y; } while ((i < MAX_ITER) && (distancia <= 4.0)); if (i == MAX_ITER) return 0; else return i; }

17 proParFractales: El conjunto de MandelbrotCompulsiva-17 ¿ Paralelización ? 2550 Columnas 0 255 Filas e1e2eN maestro a.Asignación estática de trabajos filas, columnas, cuadrantes ¡ Ineficiente ! e1 maestro e1 e4 e7 e4 1*2*3*0 1 8 239.. 0** 1 300. O(7.763)O(127.031) O(1.772.374) ¿Necesario? ?

18 proParFractales: El conjunto de MandelbrotCompulsiva-18 b.Asignación dinámica de trabajos Granja de procesadores {Trabajos pendientes}* ¿pixels, filas, cols,....? 0255 0 Fila Columna maestro e1 e2 e3 e4 0 1 2 3 4 O( --- ) 568 89130 24295 60963 20122 568

19 proParLos métodos de Monte CarloCompulsiva-19 Idea: Uso de números aleatorios – Casino de Monte Carlo Orígenes: 1944 – Stan Ulaw y VonNewmann – Bomba atómica Aplicaciones:  Diseño de reactores nucleares  Cromo dinámica cuántica  Radioterapia contra el cáncer  Densidad y flujo de tráfico  Evolución estelar  Econometría  Pronóstico del índice de la bolsa  Prospecciones en explotaciones petrolíferas  Diseño de VLSI  Física de materiales  Ecología  Criptografía  Valoración de cartera de valores  Programas de ordenador  Métodos cuantitativos de organización industrial Simular aleatoriedad de los procesos físicos, térmicos, …

20 proParLos métodos de Monte CarloCompulsiva-20 Se basan en la utilización de números aleatorios: Ejemplo1 =>  Círculo de radio 1 inscrito en cuadrado de lado 2 2 2 1 Área del círculo =  Área del cuadrado = 4 ¿  / 4 ? enCirculo = 0; for (i=0; i<M; i++) { x = aleatorio(0.0, 1.0); y = aleatorio(0.0, 1.0); if ((x*x + y*y)<=1.0) enCirculo++; } PI = (4.0 * enCirculo) / (double) M); ¿M? Suficientemente grande

21 proParLos métodos de Monte CarloCompulsiva-21 ¿ Paralelización ? e1e2eN maestro Cada esclavo computa: M/N puntos aleatorios ¡ Todos los esclavos calculan lo mismo ! Generador de aleatorios Pensar en mecanismos más eficientes

22 proParLos métodos de Monte CarloCompulsiva-22 Generación secuencial de números aleatorios: X i+1 = (aX i + c) mod m a = 16.807 m = 2 31 -1 c = 0 Generación paralela de números aleatorios: (sean 4 procesos) X i = (X i-63 Θ X i-127 ) mod 2 31 P0P0 P1P1 P2P2 P3P3 X0X0 X1X1 X2X2 X3X3 X4X4 X5X5 X6X6 X7X7 X i+4 = (AX i + C) mod m A = a 4 C = c(a 3 +a 2 +a 1 +a 0 ) mod m http://sprng.cs.fsu.edu/

23 proParLos métodos de Monte CarloCompulsiva-23 Otra forma de calcular  mediante una integral (Sumatorio) 1 1 y=F(x) Área del semicírculo =  /4  F(x r ) (1 - 0) 1N1N r=1 N Xr => Números aleatorios [0..1] 1 x  0 1-x 2 dx 1 y

24 proParLos métodos de Monte CarloCompulsiva-24 Otra forma de calcular  mediante una integral (Sumatorio) FIN Fx = 0.0; for (i=1; i<M; i++) { x = (double) random() / (double) RAND_MAX; fx = sqrt (1.0 – x*x); Fx + = fx; } PI = (Fx / (double) M) * 4.0; M 100.000 1.000.000 10.000.000 100.000.000 1.000.000.000 Error MonedaError Integral 0,000104 0,000068 0,000463 0,000105 0,000011 0,000021 0,000024 0,000010 0,000017 0,000029


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

Presentaciones similares


Anuncios Google