escala fuerte:
* Objetivo: Reduzca el tiempo de solución para un tamaño de problema * fijo * aumentando el número de procesadores. El problema permanece igual.
* Escenario: Tiene un problema específico que desea resolver lo más rápido posible. Lanzas más recursos (procesadores), con la esperanza de reducir drásticamente el tiempo de ejecución.
* Eficiencia: La fuerte eficiencia de escala se mide por cuánto disminuye el tiempo de ejecución a medida que aumenta el número de procesadores. Idealmente, duplicar los procesadores reduciría a la mitad el tiempo de ejecución. Sin embargo, esto rara vez sucede perfectamente.
* Fórmula: `Eficiencia =(aceleración) / (número de procesadores)`
* `Speedup =(tiempo de ejecución en 1 procesador) / (tiempo de ejecución en n procesadores)`
* Una eficiencia de 1 (o 100%) es una escala perfecta fuerte.
* Limitaciones: La escala fuerte tiene límites inherentes. A medida que agrega más procesadores, el trabajo que cada procesador tiene que hacer se vuelve cada vez más pequeño. Finalmente, la sobrecarga de la comunicación, la sincronización y el tiempo de inactividad (procesadores que esperan a otros) abruman los beneficios de la paralelización. Llegas a un punto en el que agregar más procesadores en realidad * aumenta * el tiempo de ejecución. Esto se debe a la ley de Amdahl, que establece que la aceleración de un programa está limitada por la proporción del programa que es inherentemente secuencial (no puede ser paralelo).
* Impacto en el rendimiento:
* positivo (inicialmente): Tiempo de ejecución reducido para el mismo tamaño de problema.
* negativo (eventualmente): Los rendimientos decrecientes a medida que domina la sobrecarga de comunicación. Puede incluso aumentar el tiempo de ejecución más allá de un cierto número de procesadores. Los cuellos de botella en recursos compartidos (por ejemplo, bus de memoria) se vuelven más prominentes.
Escala débil:
* Objetivo: Mantenga un tiempo de ejecución * constante * aumentando tanto el tamaño del problema * como * el número de procesadores proporcionalmente. Cada procesador idealmente maneja la misma cantidad de trabajo.
* Escenario: Tiene un problema que desea resolver en un nivel de rendimiento específico, y desea resolver versiones cada vez más grandes de ese problema mientras mantiene ese rendimiento. Agrega procesadores y aumenta el tamaño del problema en consecuencia.
* Eficiencia: La eficiencia de escala débil se mide por qué tan bien el tiempo de ejecución permanece constante a medida que aumenta el número de procesadores y el tamaño del problema. Si el tiempo de ejecución permanece constante, tiene una escala débil perfecta.
* Fórmula: `Eficiencia =(tiempo de ejecución para n procesadores y problema escalado) / (tiempo de ejecución para 1 procesador y problema base)`
* Una eficiencia de 1 (o 100%) indica una escala débil perfecta (tiempo de ejecución constante). Más prácticamente, mide cuán cerca de 1 permanece la eficiencia a medida que escala el problema.
* ventajas: La escala débil a menudo es más fácil de lograr que una escala fuerte, especialmente para problemas muy grandes. Debido a que la cantidad de trabajo por procesador permanece relativamente constante, la comunicación y la sobrecarga de sincronización no se vuelven tan dominantes. Es particularmente útil para problemas en los que desea explorar un espacio de parámetros más grande o simular un sistema más grande dentro de una cantidad fija de tiempo.
* Limitaciones: La escala débil solo tiene sentido si el problema se puede escalar adecuadamente. Algunos problemas tienen limitaciones inherentes en su tamaño o complejidad.
* Impacto en el rendimiento:
* positivo: Allows you to solve much larger problems in a reasonable amount of time without a significant increase in execution time. Demuestra la escalabilidad del algoritmo y el sistema paralelo.
* negativo: No reduce el tiempo para resolver un problema * específico * fijo. La eficiencia podría degradarse a medida que el problema y el recuento de procesadores aumentan debido a que los costos de comunicación eventualmente se vuelven significativos.
En resumen:
| Característica | Escala fuerte | Escala débil |
| ---------------- | ---------------------------------------------------- | ------------------------------------------------------ |
| Tamaño del problema | Fijo | Aumenta proporcionalmente con el número de procesadores |
| Objetivo | Reducir el tiempo de ejecución para un problema fijo | Mantener un tiempo de ejecución constante para problemas escalados |
| Enfoque | Acelera para una tarea determinada | Escalabilidad del sistema y algoritmo |
| Pregunta clave | ¿Cuánto más rápido puedo resolver este problema? | ¿Qué tan grande es un problema puedo resolver en un momento determinado? |
| Eficiencia | Disminuye a medida que aumenta la sobrecarga de comunicación | Permanece relativamente constante si la escala es eficiente |
| Ley de Amdahl | Restricción significativa | Menos de una restricción |
Ejemplo:
* escala fuerte: Simulando el clima para una ciudad específica durante las próximas 24 horas. Desea obtener el pronóstico más preciso lo más rápido posible. Aumenta el número de procesadores para acelerar el cálculo.
* Escala débil: Simulando el clima para una región. Desea simular el clima en un área geográfica cada vez más grande mientras mantiene una resolución específica y tiempo de simulación. Agrega más procesadores a medida que aumenta el tamaño de la región.
En la práctica, tanto la escala fuerte como la débil son consideraciones importantes al diseñar y evaluar algoritmos y sistemas paralelos. La elección de la que centrarse depende del problema específico y los objetivos de rendimiento deseados.