Las ideas clave del bloque
Medir antes de paralelizar
El rendimiento de un algoritmo paralelo depende de la talla y del número de procesadores . Se modela con su tiempo, , suma del cálculo y las comunicaciones, y se compara con el secuencial mediante unos pocos parámetros:Los límites: Amdahl y Gustafson
La parte que no se puede repartir pone un techo al speedup: con una fracción secuencial , nunca se pasa de (ley de Amdahl). Si el problema crece con la máquina, en cambio, el speedup escalado crece casi linealmente (ley de Gustafson).Escalabilidad
Un algoritmo es escalable si, haciendo crecer el problema, mantiene la eficiencia al añadir procesadores. La función de isoeficiencia dice cuánto tiene que crecer: cuanto más despacio, mejor.Diseño: la metodología de Foster
Para diseñar un algoritmo paralelo se siguen cuatro pasos:- Descomposición: dividir el problema en tareas pequeñas (por datos o por funciones).
- Comunicaciones: ver qué datos necesita cada tarea de las demás.
- Agrupación: juntar tareas para reducir comunicaciones (relación superficie/volumen).
- Asignación: repartir los grupos entre los procesadores, de forma estática o dinámica.
Orden recomendado
1
Tiempo paralelo y parámetros relativos
, , speedup, eficiencia, coste y sobrecarga con ejemplos sencillos.
2
Leyes de Amdahl y Gustafson
El techo de la parte secuencial y el escalado del problema.
3
Escalabilidad
Isoeficiencia y eficiencia escalada.
4
Diseño de algoritmos paralelos
Grafos de dependencias, pipeline y metodología de Foster.
Temas de este bloque
Ley de Amdahl
Speedup y eficiencia de un programa paralelo explicados: tiempo paralelo, coste y sobrecarga, ley de Amdahl, ley de Gustafson-Barsis, rendimiento efectivo e isoeficiencia, con ejemplos resueltos.
Simuladores de programación paralela en Simulab
Ley de Amdahl
Speedup, eficiencia y sobrecarga según la fracción paralelizable y los procesadores.