Para analizar el rendimiento de programas paralelos se tienen en cuenta ciertos índices particulares que se utlizan como referencia.
5.6.1
Tiempo de ejecución
En el caso de un programa secuencial, consiste en el tiempo transcurrido desde que se lanza su ejecución hasta que finaliza. En el caso de un programa paralelo, el tiempo de ejecución es el tiempo que transcurre desde el comienzo de la ejecución del programa en el sistema paralelo hasta que el último procesador culmina su ejecución [Gramaet al., 2003]. Para sistemas paralelos con memoria distribuida el tiempo paralelo con p procesadores, Tp , se puede determinar de modo aproximado mediante la fórmula
Tp ≈TCmpt+TCom
dondeTCmpt es el tiempo que tarda el sistema multiprocesador en hacer las operaciones aritméticas y TCom es el tiempo de comunicación, o sea, el tiempo que tarda el sistema multiprocesador en ejecutar transferencias de datos.
El tiempo aritmético se expresa en cantidad de FLOPs10, donde el FLOP es una
medida que indica la velocidad que tarda el procesador en realizar una operación aritmética en punto flotante.
5.6.2
Ganancia en velocidad
Speed-up
El Speed-up para p procesadores, Sp, es la razón entre el tiempo de ejecución de un programa secuencial, TS, y el tiempo de ejecución de una versión paralela de dicho programa en p procesadores, TP. Este índice indica la ganancia de velocidad que se ha obtenido con la ejecución en paralelo.
Sp =
TS
TP
(5.1)
Alba distingue entre varias definiciones de Speed-up dependiendo de cómo se interpreten los tiemposTS yTP [Alba, 2002]. Speed-upfuerte es el que se obtiene cuando se compara el tiempo de ejecución en paralelo contra la más rápida de las versiones secuenciales. Barr y Hickman lo llaman Speed-up absoluto [Barr & Hickman, 1993]. Esta es la definición más exacta de aumento de velocidad, pero debido a la dificultad de determinar cuál es la mejor versión secuencial es poco usada por los diseñadores de programas [Bertsekas & Tsitsiklis, 1997]. El Speed-up débil es el que se obtiene al comparar el tiempo del algoritmo paralelo con la versión serial del mismo algoritmo. Para esta definición Alba propone dos tipos de Speed-up débil: de tipo 1 es cuando se compara la versión paralela del algoritmo con la versión secuencial canónica del mismo. De tipo 2 es la razón del tiempo de ejecución en serie de un código paralelo en un procesador con respecto al tiempo de ejecución del mismo código en p procesadores. Esta razón Barr y Hickman la llaman Speed-up relativo [Barr & Hickman, 1993].
A partir de la definición de Speed-up se puede distinguir entre Speed-up sublineal
(Sp < p), lineal (SP =p) y superlineal (SP > p)
5.6.3
Eficiencia
La eficiencia es el cociente entre el Speed-up y el número de procesadores, multiplicado por 100. Significa el porcentaje de aprovechamiento de los procesadores para la resolución del problema.
Ep =
Sp
5.6.4
Granularidad de los procesos
Para lograr una mejora en la velocidad de procesamiento mediante el paralelismo, es necesario dividir el cómputo en subtareas que puedan ser ejecutadas en forma simultánea, no importa que clase de sistema de cómputo paralelo se disponga. El tamaño de estas tareas puede ser descripto mediante su granularidad. Con granularidad gruesa, cada tarea contiene gran cantidad de código que se ejecuta secuencialmente y consume un tiempo de cómputo sustancial. De la misma manera, granularidad fina implica que el código consiste de pocas instrucciones o, eventualmente, una sola. En general se busca incrementar la granularidad de las tareas en la implementación paralela para compensar el costo de creación de los procesos asociados y el de comunicación de los datos.
La siguiente fórmula:
Tiempo total de cómputo Tiempo total de comunicación =
TCmpt
TCom
(5.2) puede ser usada como una métrica para la granularidad. Se observa claramente que es importante maximizar la relación cómputo/comunicación mientras se mantiene el paralelismo. Además, la granularidad óptima en algunas ocasiones está relacionada con la cantidad de procesadores disponibles en el sistema. Por ejemplo, cuando la metodología de resolución de un problema implica una descomposición de su dominio, a mayor cantidad de nodos de cómputo menor sería el tamaño de las tareas y mayor la cantidad de comunicaciones (debido a la necesidad de sincronización y/o reportes de resultados parciales). Así, el valor de la relación 5.2 baja al aumentar el número de procesadores. Esto muestra que en los sistemas paralelos existe un punto óptimo de operación, y cuando se lo alcanza, la adición de nuevos nodos de cómputo disminuye la eficiencia.
La relación entre la entre la granularidad y la eficiencia es de proporcionalidad directa. En efecto E = Ts pTp = TCmpt p(TCmpt p +TCom) = TCmpt TCmpt+pTCom
= 1 1 +pTCom
TCmpt
(Dividiendo ambos miembros por TCmpt) (5.3)
El segundo término del denominador en 5.3 es el inverso de la medida de granularidad definida en 5.2. Luego, en la medida que el cociente 5.2 es grande, también lo es la eficiencia del sistema paralelo.
Estos problemas de granularidad pueden surgir de los pequeños subproblemas que a menudo deben ser resueltos en los problemas de optimización de gran escala. Luego lograr una implementación paralela de alta performance y de propósito general para resolver problema de optimización se ve obstaculizado por el carácter intrínsecamente secuencial de ciertas operaciones de álgebra lineal.