Ir al contenido

Escalabilidad de los ordenamientos

Viene de Escalabilidad e isoeficiencia:

  1. Trabajo W = Ts: el mejor secuencial. Para ordenar, W = n log n.
  2. Overhead To = p·Tp − W: todo lo que los p procesadores gastan de más.
  3. Eficiencia E = W / (W + To) = 1 / (1 + To/W).
  4. E constante ⇔ W = K·To, con K = E/(1 − E). Despejar n en función de p: esa es la función de isoeficiencia.
  5. Menor crecimiento = más escalable. Una isoeficiencia polinomial (p, p log p) es buena. Una exponencial (2√p) es mala.
1. T_p dado(n/p)log n + n/√p2. p · T_pn log n + n√p3. T_o = pT_p − Wn√p4. W = K · T_on log n = K n√p5. despejar nn ∝ 2^(K√p)ejemplo: bitónico en malla (PD05 ej. 3a) · W = n log n · K = E / (1 − E)

Cómo leerlo: la receta en cinco pasos, con los números del bitónico en malla. Se parte del Tp que da el enunciado, se multiplica por p, se resta el trabajo secuencial W para quedarse con el overhead To, se iguala W = K·To y se despeja n en función de p. Lo único que cambia de un ejercicio a otro es el Tp de la caja 1.

PD05, ejercicio 3a: bitónico en malla vs hipercubo (1 pt)

Sección titulada «PD05, ejercicio 3a: bitónico en malla vs hipercubo (1 pt)»

Enunciado: cómputo O((n/p) log n). Comunicación O(n/√p) en malla y O((n/p) log² p) en hipercubo. Analizar la escalabilidad y decidir qué modelo es más escalable.

Resolución paso a paso

Malla. Tp = (n/p)·log n + n/√p.

  • p·Tp = n log n + n·√p
  • To = p·Tp − n log n = n·√p
  • E constante: n log n = K·n·√p ⇒ log n = K·√p ⇒ n ∝ 2K√p

Hipercubo. Tp = (n/p)·log n + (n/p)·log² p.

  • p·Tp = n log n + n·log² p
  • To = n·log² p
  • E constante: n log n = K·n·log² p ⇒ log n = K·log² p ⇒ n ∝ 2K log² p (= pK log p)

Comparación. Las dos son exponenciales en el exponente que hay que comparar: √p frente a log² p.

p√p (malla)log² p (hipercubo)¿cuál pide menos datos?
16416malla
1 02432100malla
65 536 = 2¹⁶256256iguales
2²⁰ ≈ 10⁶1 024400hipercubo

Respuesta oficial de la PD: “Para la malla n ∝ 2√p, para el hipercubo n ∝ 2log² p. La malla escala mejor porque necesita menos trabajo (W) para mantener E constante.” Es correcta para p < 2¹⁶ = 65 536, que es cualquier cluster que uses en el curso.

Matiz: para p > 2¹⁶, √p crece más rápido que log² p y el hipercubo pasa a ser el más escalable. Es la conclusión asintótica de los libros: Grama et al., cap. 9 (conocimiento general). En el examen conviene dar la respuesta oficial y mencionar el cruce: demuestra que entiendes de dónde sale.

¿Cuántos datos hacen falta para mantener la eficiencia?

La función de isoeficiencia dice cuánto debe crecer el problema n cuando crece p para que E no baje. El eje vertical es log₂ n (constante K = 1): cada unidad más es el doble de datos. Menos es mejor (más escalable).

11010010005101520log₂ plog₂ n necesariop = 2^10cruce 2^16
bitónico en malla: n ∝ 2^√pbitónico en hipercubo: n ∝ 2^(log² p)Hyksort: n log n ∝ p log² p
Bitónico · mallan ≈ 2^32.0
Bitónico · hipercubon ≈ 2^1.0e+2
Hyksortn ≈ 2^12.9
Con p = 2^10: √p = 32.0 < log²p = 100, así que la malla necesita menos datos que el hipercubo (esta es la respuesta de la PD5). Hyksort necesita muchísimo menos que ambos: crece de forma polinomial, no exponencial.

Enunciado: Tp = O((n/p)·log n + log p·(n/p) + log² p). ¿Escala mejor que los anteriores?

Resolución paso a paso
  • p·Tp = n log n + n·log p + p·log² p
  • To = n·log p + p·log² p

Se iguala W = K·To término a término (el término que pida más n manda):

  1. n log n ∝ n log p ⇒ log n ∝ log p ⇒ n ∝ pK (polinomial)
  2. n log n ∝ p log² p ⇒ n ≈ p log p (polinomial). Esta es la que da la PD: “n log n ∝ p log²(p)”.

Las dos son polinomiales, mientras que el bitónico pide crecimiento exponencial (2√p o 2log² p). Por tanto Hyksort escala mucho mejor que los anteriores.

Ejemplo numérico con p = 1024: el bitónico en malla pide n ≈ 2³² ≈ 4·10⁹ datos (con K = 1); Hyksort pide n ≈ p log p ≈ 10⁴.

La lámina 36 tiene las celdas desalineadas. Esta es la lectura coherente con las láminas anteriores y con la PD:

AlgoritmoSecuencialSpan (p = n)Con p procesos (Brent / bloques)
Bubble sort (odd-even transposition)O(n²)O(n)O(n²/p + p)
MergesortO(n log n)O(n) si la mezcla es secuencial · O(log² n) con odd-even merge—
QuicksortO(n log n) promedioO(log² n)O((n/p) log n + log² p)
BitónicoO(n log n) (mejor secuencial)O(log² n)O((n/p) log n + log² p)
HeapsortO(n log n)difícil de paralelizar—

Las dos ideas finales de la lámina:

  • Con n > p, el cómputo local (n/p) log(n/p) importa: es la parte que se reparte bien.
  • Hay que minimizar la comunicación, porque es lo que decide la escalabilidad (en el ejemplo de ranking dominaba ×65). La lámina 37 (Axtmann & Sanders 2020, 262 144 núcleos) muestra que el mejor algoritmo cambia según n/p.

1. Un ordenamiento tiene Tp = (n/p) log n + log² p. ¿Cuál es su isoeficiencia?

Ver solución

To = p·Tp − n log n = p log² p. Con W = K·To: n log n ∝ p log² p ⇒ n ∝ p log p. Es muy escalable: duplicar p pide algo más del doble de datos.

2. Con E = 0.8, ¿cuánto vale K? Para el bitónico en hipercubo con p = 64, ¿qué n hace falta?

Ver solución

K = E/(1 − E) = 0.8/0.2 = 4.

Hipercubo: log n = K·log² p = 4 · 6² = 144, así que n = 2¹⁴⁴, un número imposible. Mantener E = 0.8 con el bitónico es inviable aunque p sea pequeño: en la práctica se acepta una E menor. Con K = 1 (E = 0.5): log n = 36, n = 2³⁶ ≈ 6.9·10¹⁰, que sigue siendo enorme.

  • Usar W = n para un ordenamiento. El mejor secuencial por comparaciones es n log n.
  • Restar W de Tp en vez de p·Tp: el overhead es p·Tp − W.
  • Comparar dos isoeficiencias exponenciales sin fijar el rango de p: aquí el ganador cambia en p = 2¹⁶.
  • Olvidar la constante K = E/(1 − E): no cambia el orden de crecimiento, pero sí el valor de n.

Autoevaluación

0/5 correctas · 0 respondidas
1. El overhead se define como…
2. Isoeficiencia del bitónico en malla:
3. Según la PD5, ¿qué topología escala mejor para el bitónico (p prácticos)?
4. ¿Desde qué p el hipercubo pasa a escalar mejor que la malla?
5. Hyksort escala mejor porque su isoeficiencia es…

Fuente ·2026I-CS4052-PD5.pdf (ejercicio 3) · U5.2 Algoritmos-ordenamiento.pdf (láminas 21, 36–37) · U2.1 Diseño en paralelo-performance (isoeficiencia)