Taller de Programación Paralela Fernando R. Rannou Departamento de Ingenierı́a Informática Universidad de Santiago de Chile July 31, 2008 Scalabilidad Scalabilidad Pintando una casa Scalabilidad ■ Supongamos que deseamos pintar una casa que tiene 10 habitaciones. Si me demoro 1 dia por habitación, la casa completa me demorará 10 dias. ■ Si contrato un equipo de 10 personas, cada una podria pintar una pieza y la casa estarı́a terminada en poco más de 10 dias; no exactamente 10 dias, pues el equipo demorará un pequeño tiempo en asignación de piezas, ■ Si contrato 20 personas, la casa estará terminada en un poco más de 5 dias. ■ Si contrato 200? ◆ Mayor tiempo empleado en asignación ◆ Mayor tiempo de coordinación de las personas en cada pieza. Fernando R. Rannou Diinf-USACH 3 / 15 Lı́mite al speedup Scalabilidad ■ Para un problema particular el Speedup tiene un lı́mite ■ Dado un problema dado, por ejemplo multiplicación de matrices de 100 × 100, a medida que incremento el número de procesadores, 5, 10, 100, se obtienen cada vez mejores speedups, pero llegará el momento en que la adición de nuevos procesadores no mejorará el speedup. ■ Algunos factores que limitan el speedup son: ◆ Overhead de software ◆ Des-balance de carga ◆ Overhead de comunicación/sincronización ◆ Overhead secuencial que no puede paralelizarse ■ La única forma de mejorar el speedup es aumentar el tamaño del problema a medida que se adicionan más procesadores Fernando R. Rannou Diinf-USACH 4 / 15 Ley de Amdahl Scalabilidad ■ Supongamos que deseamos resolver un problema que tiene una porción serial, es decir no puede paralelizarse, y otra paralela. ■ Si la porción secuencial demora Ts en un procesador y la porción paralela demora Tp , también en un procesador, entonces, el speedup alcanzable por n procesadores es: S(n) = ■ Ts + Tp Ts + Tp /n (1) Note que la definición de speedup por Amdahl corresponde a la noción de speedup relativo. Fernando R. Rannou Diinf-USACH 5 / 15 Ejemplo en Amdahl Scalabilidad ■ Sumar dos matrices de N × N demora: ◆ 3N 2 : dos lecturas y una escritura a disco ◆ N 2 /(V n), sumar N 2 números con n procesadores de velocidad V ■ El speed relativo es entonces: 3 + 1/V 3N 2 + N 2 /V = 3N 2 + N 2 /(V n) 3 + 1/(V n) ■ Cuando n → ∞, el speedup es 1 + 1/3V Fernando R. Rannou Diinf-USACH 6 / 15 Ley de Amdahl (2) Scalabilidad ■ Sea f = Ts /(Ts + Tp ), es decir la fracción secuencial del total del programa ■ El speedup puede ser reescrito como S(n) = = = ≤ ■ Ts + T p Ts + Tp /n 1 Ts Ts +Tp + Tp (Ts +Tp )n 1 f+ 1 f (1−f ) n Es decir, el speedup alcanzable está limitado por su parte secuencial Fernando R. Rannou Diinf-USACH 7 / 15 Otra mirada a la Ley de Amdhal Scalabilidad ■ Amdahl concluyó que los computadores paralelos no podrı́an entregar speedups cada vez mayores, pues el speedup estaba limitado por la porción secuencial de los problemas, independientemente del computador paralelo! ■ Por ejemplo, si el 5% de mi programa es serial, el speedup máximo alcanzable es 20. ■ Esto es verdad, cuando la fracción secuencial f no puede modificarse. ■ Si 0 < c ≤ f , entonces la ley de Amdahl es aplicable, pero existen muchos casos donde la carga de trabajo puede modificarse, de tal forma que la parte secuencial se puede hacer muy, muy pequeña respecto de la paralela. ■ En dichos casos, el speedup puede no tener lı́mite. ■ La ley de Amdahl es una ley de speedup para cargas de trabajo fijas. Fernando R. Rannou Diinf-USACH 8 / 15 Speedup para cargas de trabajo variable Scalabilidad ■ En ciertas aplicaciones es importante obtener soluciones con una alta resolución y/o precisión, sin importar que el problema se demore mucho. ■ Por ejemplo, la calidad de la solución de una ecuación diferencial por elementos finitos depende del número de nodos del dominio; si el aumento de número de nodos no aumenta sustancialmente la parte secuencial, el problema es candidato a tener speedups cada vez más grandes ■ Otro ejemplo, son los algoritmos iteraivos, en que la carga de trabajo depende del error de la solución y por lo tanto del número de iteraciones del algoritmo ■ En esto y otros casos la ley de Amdahl debe ser modificada para considerar el aumento de la carga de trabajo Fernando R. Rannou Diinf-USACH 9 / 15 La Ley de Gustafson Scalabilidad ■ Cuando la fracción paralelizable es escalable con n, manteniendo la fracción secuencial intacta, obtenemos un speedup escalable S(n) = ■ Ts + nTp Ts + Tp Note que el tiempo monoprocesador crece con el número de procesadores, pero el tiempo paralelo permanece constante. 50 Amdahl Gustafson 45 40 Speedup 35 30 25 20 15 10 5 0 0 10 20 30 40 50 60 70 80 90 100 Numero de procesadores (P) Fernando R. Rannou Diinf-USACH 10 / 15 Escalabilidad Scalabilidad ■ Recordamos que un sistema paralelo consiste en un problema dado y una arquitectura paralela: ■ Un sistema paralelo es escalable cuando su rendimiento continúa mejorando en la medida que el tamaño del sistema crece, es decir ◆ crece el tamaño del problema que queremos resolver (o su precisión) ◆ y crece el número de procesadores del computador paralelo ■ Como medida de rendimiento podemos usar, por ejemplo, speedup. Fernando R. Rannou Diinf-USACH 11 / 15 Eficiencia (1) Scalabilidad ■ La Eficiencia de un sistema paralelo se define como: E(n) = S(n) n ■ La eficiencia es una medidad del grado de speedup alcanzado en relación al máximo. ■ Para el caso de cargas de trabajo fijo, E(n) ≤ 1 es decir, cuando la porción serial es nula, el speedup es máximo, n, y la eficiencia es 1 ■ Pero para cargas de trabajo escalables con el número de procesadores, es posible E(n) > 1 Fernando R. Rannou Diinf-USACH 12 / 15 Eficiencia (2) Scalabilidad ■ Para proseguir hagamos las siguientes definiciones: 1. T1 : tiempo total monoprocesador (secuencial) 2. n: número de procesadores 3. T0 : overhead total del programa paralelo (no existe en el secuencial) 4. Tn : tiempo total paralelo ■ Luego, Tn = (T1 + T0 )/n, y el speedup es S(n) = ■ nT1 T1 = Tn T1 + T0 Luego, la eficiencia es E(n) = S(n)/n ⇒ E(n) = = Fernando R. Rannou ■ Diinf-USACH T1 T1 + T0 1 1 + TT10 En ciertos sistemas paralelos T0 < 0, logrando un speedup superlineal 13 / 15 Ejemplo speedup y eficiencia Scalabilidad ■ ■ ■ Considere el problema de sumar N números, y asuma que sumar dos números en un procesador toma una unidad de tiempo. Luego, T1 = N √ √ Suponga ahora que implementamos la suma en una grilla de n × n procesadores, en la que una operación de comunicación demora una unidad de tiempo y ademas N es divisible por n Luego ◆ cada procesador tomará N/n unidades de tiempo en sumar N/n números ◆ la suma global se llevará a cabo en log n etapas de comunicación para sumar la n sumas parciales ■ Tenemos, T1 = N , Tn = N/n + 2 log n, y por lo tanto T0 = 2n log n. S= T1 N = Tn N/n + 2 log n E= Fernando R. Rannou Diinf-USACH S N = n N + 2n log n 14 / 15 Isoeficiencia Scalabilidad ■ Cuando el número de procesadores aumenta y el tamaño del problema (o la carga de trabajo) es el mism0, la eficiencia disminuye, pues el overhead paralelo T0 aumenta. ■ Cuando el problema aumenta y el número de procesadores es el mismo, la eficiencia aumenta. ■ ¿Con qué tasa debiera aumentar el tamaño del problema con respecto al número de procesadores para mantener la eficiencia constante? ■ La eficiencia se mantendrı́a constante, si T0 /T1 es constante; es decir la carga de trabajo T1 debe crecer en proporción al overhead T0 . ¿Qué proporción? ■ Reescribiendo la ecuacion de Eficiencia, obtenemos T1 = ■ E T0 1−E Recordar que T0 es función del número de procesadores (por ejemplo, T0 = kn). Luego, la ecuación anterior nos dice la tasa a que debe crecer la carga de trabajo respecto del número de procesadores para mantener la eficiencia constante. Fernando R. Rannou Diinf-USACH 15 / 15