Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porÁngeles Zúñiga Modificado hace 6 años
1
proPar Curso 18/19 5 3 2, 3, 2 2, 2 4 Computadores Paralelos Programación basada en paso de mensajes Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás, Pipeline, Síncrona, Equilibrado de carga y Terminación Programación basada en memoria común Algoritmos y aplicaciones Ordenación, …
2
proPar Temario Compulsiva-2
Paralelismo compulsivo Computación paralela ideal Transformación geométrica de imágenes Fractales: El conjunto de Mandelbrot Los métodos de Monte Carlo
3
proPar Computación paralela ideal Compulsiva-3
entrada salida Independencia total Equilibrio de carga perfecto e1 e2 eN maestro Quasi ideal Maestro reparte trabajos y recolecta resultados Los esclavos no se comunican entre sí Poca comunicación frente a cómputo
4
proPar Transformación geométrica de imágenes Compulsiva-4
Color: RGB Tonalidad Grises Digital: RamVideo | mapaPixels 512 ppm y pgm Muchos formatos: jpg, giff, tiff, bmp, ... dibujarPixel(f,c,color) Construir o manipular jasper
5
proPar Transformación geométrica de imágenes Compulsiva-5
17” Filas 1.280 Cols 1.024 Pixels Memoria 3,75MB 7.860 4.320 97,15MB ? 20” Filas 1.920 Cols 1.080 Pixels Memoria 5,93MB ? pixels Memoria 3GB
6
proPar Transformación geométrica de imágenes Compulsiva-6
Girar: x’ = x cos + y sen y’ = y cos - x sen Desplazar, Escalar, ... N M N M Igual para todo pixel ¿Un P * pixel? ¡ No tan fácil ! 1024*768 =
7
proPar Transformación geométrica de imágenes Compulsiva-7
Girar no es tan fácil 30º 512x512
8
proPar Transformación geométrica de imágenes Compulsiva-8
Girar no es tan fácil 30º + filtro ¡ En 40 mseg !
9
proPar Transformación geométrica de imágenes Compulsiva-9
Girar no es tan fácil [30º + filtro] 12 veces ¡ En 500 mseg y mal !
10
proPar Transformación geométrica de imágenes Compulsiva-10
Girar no es tan fácil [1º + filtro] 360 veces ¿Qué pasa?
11
proPar Transformación geométrica de imágenes Compulsiva-11
Girar no es tan fácil [1º + filtro] 360 veces Ver video Giros incrementales [1, 2, ….] desde el original => 9,311 seg
12
proPar Transformación geométrica de imágenes Compulsiva-12
Un filtrado es más facil
13
proPar Transformación geométrica de imágenes Compulsiva-13
Sea imagen de 1024*768 ( ) y 16P => pixels * P ¿ Cómo repartir el trabajo ? 768 64 filas 48 1024 columnas 192 256 rectángulos ¿Cómo sería con modelo cluster? ¿Eficiencia? Se adapta más al modelo de multiprocesadores: (memoria común)
14
proPar Fractales: El conjunto de Mandelbrot Compulsiva-14
Zk+1 = Zk2 + Cj int colores[256][256] 1 … ……….. 3 ………………….… 2 ……… …………… … ……………………………….… 20-5 ………... 3 …………………... 2……….. 255 Fila Columna 512 colores [3+3+3] mandelsec.txt 2 dibujarPixel (f, c, colores[f][c])
15
proPar Fractales: El conjunto de Mandelbrot Compulsiva-15
Representaciones gráficas contenidas en una fórmula Conjunto de Mandelbrot {M} Zk+1 = Zk2 + Cj Z0 = 0 K = 0.. b a +2 -2 Real Imaginario Cj = a + b i m / |Zm| > 2 Cj {M} Condición de divergencia Cj {M} no diverge => Negro Cj {M} diverge Zm => Color(m) ? K = 0..N => # Colores a utilizar
16
proPar Fractales: El conjunto de Mandelbrot Compulsiva-16
¿Programa secuencial? Sea mapaPixel 256*256 y 512 colores +2 -2 Real Imaginario 255 Columnas Filas for (f=0; f<256; f++) for (c=0; c<256; c++) { pixelAPunto(f,c,&a,&b); color = mandelbrot(a,b); dibujarPixel(f,c,color); }
17
proPar Fractales: El conjunto de Mandelbrot Compulsiva-17
#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; } colores p seg t 32768 5 60 1m 262144 6 483 8m 7 3911 1h 8 31212 9h 900x1270
18
proPar Fractales: El conjunto de Mandelbrot Compulsiva-18
¿ Paralelización ? 255 Columnas 255 Filas ¡ Ineficiente ! e1 maestro e4 e7 e1 e2 eN maestro ¿Necesario? ? Asignación estática de trabajos filas, columnas, cuadrantes O(7.763) O( ) O( ) 1*2*3* 0**
19
proPar Fractales: El conjunto de Mandelbrot Compulsiva-19
filaIni = ((yo-1) % (int) sqrt(numEsclavos)) * filasCuadrante; colIni = ((yo-1) / (int) sqrt(numEsclavos)) * colsCuadrante; filaFin = filaIni + filasCuadrante; colFin = colIni + colsCuadrante; // Calcular el cuadrante que me corresponde coloresFilaCuadrante[colsCuadrante+1] = colIni; for (f=filaIni; f<filaFin; f++) { coloresFilaCuadrante[colsCuadrante] = f; cc = 0; for (c=colIni; c<colFin; c++) { planoPixelAPunto (f, c, &X, &Y); coloresFilaCuadrante[cc++] = mandelbrot (X, Y); } MPI_Send (coloresFilaCuadrante, colsCuadrante+2, MPI_INT, 0, 1, MPI_COMM_WORLD); #Cores 1 4 16 Tiempo 55:945 15:419 13:899 Aceleración 3,63 4,03 Eficiencia 0,91 0,25 PC1 Ventana de 912x1264
20
proPar Fractales: El conjunto de Mandelbrot Compulsiva-20
Ver video
21
proPar Fractales: El conjunto de Mandelbrot Compulsiva-21
Asignación dinámica de trabajos Granja de procesadores {Trabajos pendientes}* ¿pixels, filas, cols, ....? 255 Fila Columna maestro e1 e2 e3 e4 O( --- ) 568 89130 24295 60963 20122 1 2 3 4 ¿Otras formas de repartir?
22
proPar Los métodos de Monte Carlo Compulsiva-22
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, …
23
proPar Los métodos de Monte Carlo Compulsiva-23
Se basan en la utilización de números aleatorios: Ejemplo1 => 1991 millones de cifras superordenador-pi-informatica_ /
24
proPar Los métodos de Monte Carlo Compulsiva-24
Se basan en la utilización de números aleatorios: Ejemplo1 => Círculo de radio 1 inscrito en cuadrado de lado 2 2 1 Área del círculo = Área del cuadrado = 4 ¿ / 4 ? ¿ / 4 = 785 / => = 3,14 ? Aquí quedan 785 Tiro pelotitas
25
proPar Los métodos de Monte Carlo Compulsiva-25
Se basan en la utilización de números aleatorios: Ejemplo1 => Círculo de radio 1 inscrito en cuadrado de lado 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
26
proPar Los métodos de Monte Carlo Compulsiva-26
¿ Paralelización ? maestro Cada esclavo computa: M/N puntos aleatorios e1 e2 eN ¡ Todos los esclavos calculan lo mismo ! Generador de aleatorios Pensar en mecanismos más eficientes
27
proPar Los métodos de Monte Carlo Compulsiva-27
Generación secuencial de números aleatorios: a = m = 231-1 c = 0 Xi+1 = (aXi + c) mod m Xi = (Xi-63 Θ Xi-127) mod 231 Generación paralela de números aleatorios: (sean 4 procesos) X0 X1 X2 X3 X4 X5 X6 X7 Xi+4 = (AXi + C) mod m A = a4 C = c(a3+a2+a1+a0) mod m P0 P1 P2 P3
28
proPar Los métodos de Monte Carlo Compulsiva-28
Otra forma de calcular mediante una integral (Sumatorio) 1 y=F(x) Área del semicírculo = /4 1 x 0 1-x2 dx y F(xr) (1 - 0) 1 N r=1 Xr => Números aleatorios [0..1]
29
proPar Los métodos de Monte Carlo Compulsiva-29
Otra forma de calcular mediante una integral (Sumatorio) 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 Error Moneda Error Integral 0,000104 0,000068 0,000463 0,000105 0,000011 0,000021 0,000024 0,000010 0,000017 0,000029 FIN
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.