Información sobre rendimiento

El rendimiento, en términos informáticos, se refiere al trabajo que realiza un computador y, principalmente, se puede referir a

  • tiempo de respuesta
  • potencia de cálculo
  • consumo energético

En el contexto del cálculo científico, el aspecto que nos atañe es la potencia de cálculo o velocidad de procesamiento. Debido a que existen diferentes arquitecturas de CPU, para poder comparar sus potencias de cálculo se utiliza una medida que es independiente de características intrínsecas como es la velocidad de reloj. Esta unidad es el número de operaciones en coma flotante, normalmente en doble precisión, por unidad de tiempo, generalmente, por segundo (FLOPS). La potencia de cálculo de los procesadores actuales permiten tasas de miles de millones de operaciones por segundo, por lo que se suele usar el múltiplo GFLOPS.

Los nodos de PROTEUS tienen microprocesadores de Intel de varias generaciones.

Nickname CPU MHz #cores Cache #nodos
artemis E5345 2,33 4 8 11
calypso E5410 2,33 4 8 54
kratos X5690 3,46 6 12 42
hermes00 E5-2698 v3 2,3 16 40 1
hermesv3 E5-2660 v3 2,6 10 25 12
hermesv4 E5-2640 v4 2,4 10 25 4

Para que el investigador tenga una referencia de la diferencia relativa de potencia entre estas generaciones, se ha realizado una serie de pruebas de rendimiento

PRUEBAS DE RENDIMIENTO

Como ya se ha comentado, diferentes CPUs no son comparables únicamente por algunos de sus características sino que depende de la arquitectura del procesador. Es por eso, que la tabla anterior no es de demasiada ayuda. Conociendo los detalles de la arquitectura (cauce, número de unidades funcionales, etc.), se puede conocer la potencia de cálculo teórica. Este valor se conoce como Rpeak. Aunque puede que haya formas más exactas de calcularlo, vamos a utilizar la formula más simple y extendida que es multiplicar el número de procesadores o cores por su frecuencia y por el máximo número de instrucciones en coma flotante de doble precisión que es capaz de realizar por ciclo. Para un nodo, la expresión sería:

Rpeak = #sockets · #cores/socket · MHz · #ops/ciclo

No obstante, este es el límite superior teórico y es muy improbable que se alcance en situaciones reales porque para que así se diera se necesitaría un flujo continuo de datos (operandos) desde memoria que, debido a las latencias y menor frecuencia de reloj (cuello de botella), y a pesar de las caches, no se puede producir.

Para evaluar el comportamiento real del sistema, se realizan pruebas de rendimiento o benchmarks en las que se de manera empírica se ejecutan problemas sintéticos. El más extendido en HPC es Linpack. Consiste en la factorización y resolución de un sistema de ecuaciones denso aleatorio (Ax=b) en doble precisión. Con esta prueba, la cual hace un uso intensivo de cómputos en coma flotante y no le afecta demasiado el cuello de botella de la memoria, se determina la capacidad de cálculo del nodo y sirve de referencia para comparar sistemas diferentes.

En la siguiente tabla se muestran los resultados obtenidos al correr Linpack sobre los distintos tipos de nodos de PROTEUS. Para cada sistema se han realizado dos pruebas: en una se ha empleado un único core y en la otra todos los cores que contiene el nodo. Conociendo estos datos, se puede estimar la velocidad relativa para programas secuenciales y paralelos.