Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJuan Antonio López Rodríguez Modificado hace 8 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.