Calculadora de la ley de Amdahl y límite de aceleración
La ley de Amdahl estima la máxima aceleración teórica posible cuando una parte de un programa puede ejecutarse en paralelo y el resto debe permanecer serial.
Ejecutar — gratis
Introduzca la fracción paralelizable y el número de procesadores para conocer la aceleración prevista, la eficiencia de los procesadores y cuánto tiempo de la ejecución acelerada sigue correspondiendo al trabajo serial. La calculadora también muestra el límite asintótico impuesto por esa parte serial, para que usted pueda decidir si conviene añadir procesadores o priorizar la optimización del código secuencial.
Qué mide la ley de Amdahl
La ley de Amdahl divide el tiempo de ejecución original de un programa en una fracción paralelizable y otra serial. Si p es paralelizable y N procesadores reparten perfectamente ese trabajo, el tiempo normalizado pasa a ser (1 − p) + p/N. La aceleración teórica máxima es el inverso de ese tiempo. Esta calculadora aplica directamente la ecuación y supone una planificación ideal: el trabajo paralelo se reparte por igual, los procesadores no añaden costes de comunicación y la parte serial no se acelera al sumar trabajadores. Por ello, el resultado es un límite superior, no una predicción de rendimiento. Una implementación real suele quedar por debajo debido a sincronización, contención de memoria, arranque de tareas, desequilibrio de carga y transferencia de datos. Aun así, el límite permite comprobar si una medición es plausible y cuánto margen de mejora queda. Introduzca la fracción paralela como decimal; por ejemplo, 95 por ciento se escribe 0.95.
Cómo interpretar el cuello de botella y el límite
La fracción serial es uno menos la fracción paralela y determina el techo a largo plazo. Con 95 por ciento de trabajo paralelo queda 5 por ciento serial, por lo que ni siquiera un número ilimitado de procesadores puede superar una aceleración de 20 veces. El campo de aceleración asintótica muestra ese techo cuando existe una parte serial. La proporción del cuello de botella serial responde a otra pregunta: con el número elegido de procesadores, ¿qué parte del nuevo tiempo reducido se consume en ejecución serial? Esa proporción suele crecer mucho al añadir procesadores. Una sección que solo representaba 5 por ciento del tiempo original puede dominar tras repartir la parte paralela entre muchos procesadores. La eficiencia paralela es la aceleración calculada dividida por el número de procesadores. Si disminuye, cada procesador adicional aporta menos. Estos datos revelan los rendimientos decrecientes del escalado fuerte y distinguen entre falta de capacidad y una restricción esencialmente serial.
Cómo usar el resultado al planificar rendimiento
Parta de un perfil medido con una carga representativa, no de una estimación optimista. Clasifique tiempo como paralelizable solo cuando el diseño de producción pueda ejecutarlo realmente de forma concurrente. Calcule después varios números de procesadores y compare la aceleración adicional con el coste de infraestructura. Si duplicar procesadores apenas cambia el resultado, la fracción serial ya indica el camino: optimice la ruta secuencial, cambie el algoritmo, reduzca la coordinación o aumente el trabajo independiente de cada ejecución. Este cálculo resulta especialmente útil antes de migrar a más núcleos, trabajadores, GPU o nodos distribuidos, porque evita suponer un escalado lineal. También sirve como referencia para informes de regresión: compare la aceleración medida con el máximo teórico e investigue la diferencia. Recuerde que la ley de Amdahl describe cargas de tamaño fijo. Si la carga crece con los recursos disponibles, la ley de Gustafson responde a otra cuestión de planificación.
Qué puede hacer con ella
Planificar una optimización multinúcleo
Estime la mejor mejora posible con cierto número de procesadores antes de invertir trabajo de ingeniería en paralelizar una carga fija.
Explicar los rendimientos decrecientes
Muestre por qué añadir trabajadores produce mejoras cada vez menores cuando una consulta, un coordinador u otra etapa serial no cambia.
Comparar teoría y pruebas
Use el techo teórico como referencia de la aceleración medida e investigue costes de planificación, comunicación o contención.
Preguntas frecuentes
¿Qué significa la fracción paralela?
Es la proporción del tiempo original que puede repartirse entre procesadores. Introdúzcala como decimal entre 0 y 1.
¿Por qué se denomina aceleración teórica máxima?
La ecuación supone un reparto perfecto y ningún coste de comunicación, sincronización, arranque, contención o planificación. La mejora real suele ser menor.
¿Qué es la aceleración asintótica?
Es el techo de aceleración cuando el número de procesadores tiende a infinito. Para una fracción serial s distinta de cero, equivale a 1/s.
¿Qué muestra la proporción del cuello de botella serial?
Indica qué parte del tiempo acelerado ocupa el trabajo serial con los procesadores elegidos y cuándo la ejecución secuencial pasa a dominar.
¿Un procesador siempre produce una aceleración de uno?
Sí. En el modelo ideal de Amdahl, un procesador ejecuta ambas partes en el tiempo normalizado original, por lo que aceleración y eficiencia valen uno.
¿Cuánto cuesta el cálculo mediante API?
Cada solicitud a la API cuesta $0.002. El mismo cálculo determinista está disponible en la interfaz del navegador.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/amdahl \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"parallel_fraction":0.95,"processors":16}'const res = await fetch("https://api.kit.forhosting.com/dev/amdahl", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"parallel_fraction": 0.95,
"processors": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/amdahl",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"parallel_fraction": 0.95,
"processors": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/amdahl", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"parallel_fraction":0.95,"processors":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"parallel_fraction":0.95,"processors":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/amdahl", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"parallel_fraction": 0.95,
"processors": 16
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.amdahl",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |