¿Qué es la Ley de Amdahl?
La Ley de Amdahl, formulada por el arquitecto de computadores Gene Amdahl en 1967, predice la aceleración teórica máxima de una tarea cuando solo una parte de ella puede paralelizarse. Es un pilar de la computación paralela y ayuda a los ingenieros a fijar expectativas realistas antes de invertir en más procesadores, núcleos o hilos.
Cómo usar esta calculadora
Introduce dos valores: la porción paralela (p), es decir, la fracción del programa (entre 0 y 1) que puede ejecutarse en paralelo, y el factor de aceleración (s), que suele ser el número de procesadores o núcleos aplicados a esa parte paralela. La calculadora devuelve la aceleración total, la aceleración teórica máxima y la eficiencia paralela.
La fórmula explicada
La ecuación es $$\text{Aceleración} = \dfrac{1}{(1 - p) + \dfrac{p}{s}}$$ El término \((1 - p)\) representa la fracción secuencial, que no puede acelerarse en absoluto. A medida que \(s\) crece mucho, \(p/s\) tiende a cero, de modo que la aceleración queda limitada a \(1/(1 - p)\). Por eso un programa que es paralelo en un 90 % nunca podrá ejecutarse más de 10× más rápido, por muchos procesadores que añadas.
Ejemplo resuelto
Supongamos que el 90 % de un programa es paralelizable (\(p = 0{,}9\)) y usas 4 procesadores (\(s = 4\)). Entonces el denominador $$(1 - 0{,}9) + \frac{0{,}9}{4} = 0{,}1 + 0{,}225 = 0{,}325$$ La aceleración $$\frac{1}{0{,}325} \approx 3{,}08\times$$ La aceleración máxima posible es \(1 / 0{,}1 = 10\times\), y la eficiencia es \(3{,}08 / 4 \approx 76{,}9\,\%\).
Interpretación de tu Resultado
Aceleración general es lo que realmente obtienes con el número de procesadores \(s\) que ingresaste — por ejemplo, un resultado de 4.71× significa que el programa paralelizado se ejecuta aproximadamente 4.71 veces más rápido que la versión de un solo procesador. Aceleración máxima, \(1/(1-p)\), es el límite absoluto al que te acercarías con infinitos procesadores. La brecha entre ambos te indica cuánto espacio queda: si tu aceleración general ya está cerca de la máxima, agregar hardware apenas ayudará.
Eficiencia responde a "¿qué tan bien estoy utilizando los procesadores por los que estoy pagando?" Una eficiencia cercana al 100% significa que cada procesador está contribuyendo casi una unidad completa de aceleración — un uso excelente de recursos. Una eficiencia baja (digamos, menos del 30%) significa que la mayoría de los procesadores están inactivos o esperando en la parte serial, por lo que estás pagando por hardware que hace poco trabajo útil.
La fracción serial \(1-p\) es el límite decisivo. Incluso una pequeña fracción serial limita el desempeño duramente: con \(p=0.95\) el límite es solo 20×, así que más allá de aproximadamente 16–32 procesadores cada procesador nuevo agrega casi nada. Una regla práctica es dejar de agregar procesadores una vez que la eficiencia cae por debajo de tu umbral aceptable (a menudo 50–70% para trabajos sensibles al costo), porque pasado ese punto estás gastando dinero en ganancias insignificantes. Para elevar el límite más alto, debes reducir la fracción serial misma — los cambios algorítmicos que aumentan \(p\) generalmente dan mejores resultados que simplemente agregar núcleos.
Términos y Variables Clave
- Fracción paralela (\(p\)) — la proporción del trabajo del programa que se puede ejecutar en paralelo, expresada como un decimal entre 0 y 1. Un valor de 0.9 significa que el 90% de la carga de trabajo se puede distribuir entre procesadores.
- Fracción serial (\(1-p\)) — la parte que debe ejecutarse secuencialmente en un solo procesador y no puede acelerarse mediante paralelización. Esta fracción establece el límite superior difícil en la aceleración general.
- Aceleración de la parte paralela (\(s\)) — el factor por el cual se acelera la parte paralelizable, típicamente igual al número de procesadores o núcleos aplicados a ella.
- Aceleración general — la relación entre el tiempo de ejecución de un solo procesador y el tiempo de ejecución paralela, \(1/\big((1-p)+p/s\big)\). Esta es la ganancia de desempeño del mundo real.
- Aceleración máxima — el límite teórico \(1/(1-p)\) alcanzado cuando \(s\) crece sin límite, determinado únicamente por la fracción serial.
- Eficiencia paralela — aceleración general dividida por el número de procesadores, \(\text{Aceleración}/s\), expresada como porcentaje; mide qué tan efectivamente se utiliza cada procesador.
Preguntas frecuentes
¿Por qué añadir procesadores ofrece rendimientos decrecientes? Porque la porción secuencial se convierte en el cuello de botella. Una vez que domina, los procesadores adicionales apenas aportan mejoras.
¿Qué es la eficiencia paralela? Es la aceleración dividida entre el número de procesadores, expresada como porcentaje: indica con qué eficacia se aprovecha cada procesador.
¿En qué se diferencia de la Ley de Gustafson? La Ley de Amdahl asume un tamaño de problema fijo; la Ley de Gustafson asume que el problema crece con el número de procesadores, ofreciendo resultados más optimistas.