Conectar vía MCP →

Ingresar cálculo

Fórmula

Publicidad

Resultados

Aceleración global
4,706×
veces más rápido que la versión secuencial
Aceleración teórica máxima (s → ∞) 10×
Eficiencia paralela 58,82%

¿Qué es la Ley de Amdahl?

La Ley de Amdahl, formulada por el arquitecto de computadoras Gene Amdahl en 1967, predice la aceleración teórica máxima de una tarea cuando solo una parte de ella puede paralelizarse. Es uno de los pilares de la computación paralela y ayuda a los ingenieros a decidir si merece la pena añadir más procesadores, núcleos o hilos. La idea clave es que la porción secuencial (no paralelizable) de un programa acaba limitando su velocidad máxima, por muchos recursos que dediques a la parte paralela.

Diagrama de barras de las porciones serial y paralela de un programa antes y después de la paralelización
La ley de Amdahl divide el tiempo de ejecución en una parte serial fija \((1 - p)\) y una parte paralela \(p\) que se reduce con más procesadores.

Cómo usar esta calculadora

Introduce dos valores: la fracción paralela de tu programa en porcentaje (la parte del trabajo que se puede repartir entre varios procesadores) y la aceleración de la parte paralela, que normalmente coincide con el número de procesadores o núcleos que la ejecutan. La calculadora te devuelve la aceleración global, la aceleración teórica máxima si la aceleración paralela fuese infinita y la eficiencia paralela.

La fórmula explicada

La ecuación es

$$\text{Aceleración} = \dfrac{1}{(1 - p) + \dfrac{p}{s}}$$

donde p es la fracción paralela (entre 0 y 1) y s es la aceleración aplicada a esa fracción. El término \((1 - p)\) representa la parte secuencial que no puede acelerarse. A medida que s tiende a infinito, la aceleración converge hacia \(\dfrac{1}{1 - p}\), el techo insalvable que impone la porción secuencial.

Curvas de aceleración que se aplanan al aumentar el número de procesadores para distintas fracciones paralelas
La aceleración se estanca al aumentar los procesadores: la fracción serial limita la ganancia máxima.

Ejemplo resuelto

Supongamos que el 90 % de un programa es paralelizable (\(p = 0{,}9\)) y lo ejecutas en 8 procesadores (\(s = 8\)). Entonces el denominador es

$$(1 - 0{,}9) + \dfrac{0{,}9}{8} = 0{,}1 + 0{,}1125 = 0{,}2125$$

lo que da una aceleración de \(\dfrac{1}{0{,}2125} \approx 4{,}71\times\). Incluso con infinitos procesadores la aceleración máxima sería solo de \(\dfrac{1}{0{,}1} = 10\times\), lo que ilustra cómo ese 10 % secuencial limita el rendimiento.

Interpretación de tu resultado

El valor de aceleración te indica cuántas veces más rápido se ejecuta el programa con \(s\) procesadores en comparación con ejecutarlo en un solo procesador. Una aceleración de 4× significa que la carga de trabajo paralelizada se completa en una cuarta parte del tiempo original. Dado que la Ley de Amdahl asume un tamaño de problema fijo, la aceleración está limitada por la fracción serial \(1-p\) que no puede acelerarse.

El límite de procesador infinito, \(1/(1-p)\), es la aceleración máxima alcanzable con hardware ilimitado. Por ejemplo, si el 95% del trabajo es paralelo, el límite es \(1/(1-0.95) = 20\times\); incluso un millón de núcleos no pueden superar 20×. Este es el número más importante para la planificación: establece el límite superior de cualquier inversión en procesadores adicionales.

Eficiencia paralela mide qué tan bien se utilizan los procesadores y se define como la aceleración dividida por el número de procesadores, \(\text{eficiencia} = \text{Aceleración}/s\). Una eficiencia de 1.0 (100%) es escalado lineal perfecto; en la práctica disminuye a medida que añades núcleos. Por ejemplo, código paralelo del 90% en 8 núcleos da una aceleración de 4.71×, por lo que la eficiencia es \(4.71/8 \approx 59\%\) — cada núcleo añadido realiza progresivamente menos trabajo útil.

Añadir procesadores deja de ser útil cuando la aceleración marginal por núcleo adicional se vuelve pequeña en relación con su costo y cuando la eficiencia cae por debajo de un umbral aceptable (a menudo 50–70% en la práctica). Una vez que la aceleración se acerca a su límite, el hardware adicional produce casi nada. Para elevar el límite mismo, debes reducir la fracción serial — paralelizando más del algoritmo o reduciendo la sincronización y E/S — en lugar de comprar más núcleos. Tenga en cuenta también que la Ley de Amdahl ignora la comunicación y los gastos generales de coordinación, por lo que las aceleraciones del mundo real son típicamente más bajas que estos máximos teóricos.

Preguntas frecuentes

¿Por qué duplicar los procesadores no duplica la velocidad? Porque la porción secuencial se ejecuta a la misma velocidad independientemente del número de procesadores, así que su tiempo se convierte en el cuello de botella dominante.

¿Qué es la eficiencia paralela? Es la aceleración dividida entre el número de procesadores, expresada en porcentaje: una medida de lo bien que estás aprovechando los recursos añadidos.

¿En qué se diferencia de la Ley de Gustafson? La Ley de Gustafson asume que el tamaño del problema crece con el número de procesadores, lo que suele ofrecer una perspectiva más optimista que el modelo de carga fija de Amdahl.

Última actualización: