Beruflich Dokumente
Kultur Dokumente
Problema 9.a
Problema 9.b
a)
El tiempo de ejecución secuencial (en un procesador) es el tiempo de ejecución de un
código con 1000 iteraciones y que no tiene ninguna sentencia ni send ni receive. Este
código se ejecutará, en un procesador, en 500 ns (tiempo de ejecución por iteración)
por 1000 iteraciones. Esto es,
T(1) = 500.000 ns = 500 us
b)
Según el código equivalente al de la figura 4, pero ahora utilizando los 10
procesadores (P0, P1, …, P9), cada procesador del P1 al P9 ejecuta 100 iteraciones
del bucle while y envía el resultado al procesador 0, encargado de calcular las
sumas finales. Las 100 iteraciones del while de cada procesador se ejecutan a la vez
en todos los procesadores tardando 50.000 ns (500 ns por iteración x 100 iteraciones).
Luego cada procesador del P1 al P9 ejecuta su send, pero el procesador 0 tiene que
ejecutar las 9 sentencias receive en secuencia. Así, el procesador 0 es el que tarda
más tiempo en ejecutar su código, por lo que el tiempo de ejecución del programa en
paralelo es igual al tiempo de ejecución del procesador 0. Esto es, el procesador 0
tarda (500ns son 0.5 us):
• 0.5us*100 = 50µs en realizar las 100 iteraciones del bucle while, más
• 9*2µs = 18µs en ejecutar las 9 sentencias receive.
c)
La aceleración para 10 procesadores es:
A(10) = T(1) / T(10) = 500 us / 68 us = 7,35
d)
Generalizando el cálculo para P procesadores:
• 0.5us*1000/P µs en realizar las 1000/P iteraciones del bucle while, más
• (P-1)*2µs µs en ejecutar las P-1 sentencias receive.
600
500
Tiempo en us
400
300
200
100
0
0 20 40 60 80 100
Núm Procesadores
Para saber el número de procesadores que minimiza el tiempo de ejecución, de forma
analítica, se deriva T(P) en función de P, se iguala a 0 y se despeja P. Recordad que la
derivada de
f(x) = a/x
respecto de x, siendo a una constante, es:
f´(x) = -a / P2.
Por lo tanto:
T’(P) = -500/P2 + 2;
T’(P) = -500/P2 + 2 = 0 ⇒ P= 15,8
Como tiene que ser entero, tomamos el más próximo:
P = 16
Se puede comprobar que T(15,8) es un mínimo calculando la segunda derivada de T,
evaluándola para P=15,8 y observando que da un valor positivo.
65
64
Tiempo en us
63
62
61
60
12 14 16 18 20
Núm Procesadores
Como veis de los gráficos, para este ejemplo, elegir el número exacto de procesadores
a usar no es crítico para reducir el tiempo de ejecución (la curva es bastante plana en
torno a 16 procesadores).
e)
La aceleración para 16 procesadores es:
A(16) = T(1) / T(16) = 500 us / 61,25 us = 8,16