Ir al contenido

Particionamiento de datos y tareas

Tcomm=f(p) (α+xβ)T_{comm}=f(p)\,(\alpha+x\beta)

α\alpha = latencia (enviar un mensaje de tamaño 0), β\beta = costo por byte (inverso del ancho de banda), xx = tamaño del mensaje, f(p)f(p) = depende de la topología. Se comunica para: repartir datos desde el maestro, intercambiar entre procesos (p. ej. halos del suavizado) y reducir/recolectar al final.

Lineal (cada proceso tiene vecino anterior/posterior)Árbol binario
BroadcastO(p(α+mβ))O(p(\alpha+m\beta)) (p−1p-1 pasos si el maestro está en un extremo, ⌊p/2⌋\lfloor p/2\rfloor si está al medio)O(log⁡p (α+mβ))O(\log p\,(\alpha+m\beta))
Scatter/Gather(p−1)(α+βm/p)=O(αp+βm)(p-1)(\alpha+\beta m/p)=O(\alpha p+\beta m)∑i=0log⁡p−1(α+β2imp)=αlog⁡p+βm(1−1p)\sum_{i=0}^{\log p-1}\left(\alpha+\beta2^i\frac mp\right)=\alpha\log p+\beta m\left(1-\frac1p\right)
  • Envío: O(p(α+npβ))O(p(\alpha+\frac np\beta)) · Cómputo: O(n/p)O(n/p) · Recolección: O(p(α+β))O(p(\alpha+\beta)) · Suma final: O(p)O(p)
Tp(n,p)=O(pα+(n+p)β+n/p)T_p(n,p)=O\big(p\alpha+(n+p)\beta+n/p\big)
  • Intensidad: cada píxel independiente ⇒ cada proceso trabaja su región sin comunicarse.
  • Image warping (rotación): cada píxel de salida usa coordenadas rotadas + interpolación bilineal:
x′=(x−cx)cos⁡θ+(y−cy)sin⁡θ+cxy′=−(x−cx)sin⁡θ+(y−cy)cos⁡θ+cyx'=(x-c_x)\cos\theta+(y-c_y)\sin\theta+c_x\qquad y'=-(x-c_x)\sin\theta+(y-c_y)\cos\theta+c_y
  • Imagen n×nn\times n: Ts=O(n2)T_s=O(n^2);   Tp=O ⁣(n2p+αlog⁡p+βn2p)\;T_p=O\!\left(\frac{n^2}{p}+\alpha\log p+\beta\frac{n^2}{p}\right). Repartir/recolectar la imagen es caro ⇒ memoria compartida (incl. GPU) es óptima.

Cada píxel itera zk+1=zk2+cz_{k+1}=z_k^2+c desde z0=0z_0=0 hasta ∣z∣>2|z|>2 o KmaxK_{max}. Los píxeles son independientes entre sí (el cálculo de uno no se paraleliza internamente).

W=O(n2Kmax)T∞=O(Kmax)Tp=O ⁣(n2Kmaxp+Kmax)Tcomm=O(log⁡p (α+βN2))W=O(n^2K_{max})\qquad T_\infty=O(K_{max})\qquad T_p=O\!\left(\frac{n^2K_{max}}{p}+K_{max}\right)\qquad T_{comm}=O(\log p\,(\alpha+\beta N^2))

Mandelbrot: balance de carga estático vs work pool

Cada píxel itera z ← z² + c hasta |z| > 2 o K_max. Costo de una fila = suma de iteraciones de sus píxeles. Color = proceso dueño, brillo = iteraciones.

Carga por proceso (iteraciones)P026200P12.72e5P22.90e5P332900
T_s (Σ iteraciones)6.21e5
T_p = máx. carga2.90e5
S2.14
E0.535
desbalance máx/prom1.87
Eficiencia vs p
00.20.40.60.812.557.51012.515pE
bloquescíclicowork pool (2 filas, ovh 200)
Con bloques, los procesos que reciben filas del interior del conjunto (K_max iteraciones por píxel) terminan mucho después: desbalance. El work pool lo corrige a cambio de overhead por tarea; con tareas muy chicas y overhead alto, el overhead domina.

Calcule WW, T∞T_\infty y la cota de Brent para Mandelbrot con n=1000n=1000, Kmax=200K_{max}=200, p=100p=100.

Ver solución

W=n2Kmax=106⋅200=2×108W=n^2K_{max}=10^6\cdot200=2\times10^8 iteraciones (cota superior); T∞=Kmax=200T_\infty=K_{max}=200; Brent: Tp≤2×108100+200=2 000 200T_p\le\frac{2\times10^8}{100}+200=2\,000\,200. Domina W/pW/p: con p≤n2p\le n^2 y KmaxK_{max} constante, Tp=O(n2/p)T_p=O(n^2/p). (Sin comunicación; en MPI agregar O(log⁡p(α+βN2))O(\log p(\alpha+\beta N^2)).)

Autoevaluación

0/4 correctas · 0 respondidas
1. Scatter en árbol binario cuesta…
2. ¿Qué término NO mejora el árbol en scatter/gather?
3. Para image warping se prefiere…
4. El work pool agrega overhead de…

Fuente ·estudio/05_Particionamiento.md · U2.4-Diseño_en_paralelo-Particionamiento-Random.pdf · 08_Solvers (Arquetipo A)