Comparativa de rendimiento

PROTEUS es el resultado de sucesivas ampliaciones y mejoras. En este momento, está compuesto por 4 generaciones de nodos con rendimiento muy diferente. Para clarificar la potencia de cada nodo y que sirva de referencia para poder prever el tiempo de ejecución según el nodo donde se ejecute una tarea se han realizado una serie de pruebas de rendimiento, cuyos resultados se recogen en la siguiente tabla.

El rendimiento, en términos informáticos, principalmente se puede referir a

  • tiempo de respuesta
  • producción o  throughput
  • consumo energético

Aunque las dos primeras métricas están estrechamente relacionadas, nos vamos a fijar en la producción o throughput, que es la cantidad de trabajo que puede realizar por unidad de tiempo.

Para poder comparar la potencia de cálculo de CPUs de distintas arquitecturas se utiliza unidad de medida que es el número de operaciones en coma flotante, normalmente en doble precisión, que es capaz de realizar 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.

PRUEBAS DE RENDIMIENTO

Como ya se ha comentado, diferentes CPUs no son comparables directamente, usando, por ejemplo, la frecuencia de reloj, sino que depende de la arquitectura del procesador.

Para determinar el rendimiento de un sistema se ejecuta un programa denominado benchmark. Los benchmarks son pruebas estandarizadas cuyos resultados se toman como referencia a la hora de comparar sistemas. Hay benchmarks de distinto tipo: CPU, memoria, red, disco, etc. El benchmark 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. Como alternativa a este benchmark, ha surgido HPCG que intenta ser más próximo al comportamiento de problemas reales ya que realiza un mayor uso del ancho de memoria.

Por otra parte, podemos calcular la potencia de cálculo teórica de un computador si conocemos los detalles de la arquitectura (cauce, número de unidades funcionales, etc.). 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. El máximo teórico nos sirve para poder saber en qué grado estamos aprovechando el potencial de la CPU.

TIPOS DE NODOS

PROTEUS es el resultado de varias ampliaciones. Los nodos que lo conforman siguen esta distribución:

Nodos Modelo GHz Cores/CPU Cores/Nodo Cache RAM (GB) Nodos
artemis E5345 2,33 4 8 8 4 4
calypso E5410 2,33 4 8 8 8 50
kratos X5690 3,46 6 12 12 48 42
hermes00 E5-2698 v3 2,33 16 32 40 256 1
hermes01-12 E5-2660 v3 2,6 10 20 25 64 12
hermes13-16 E5-2640 v4 2,4 10 20 25 64 4

 

RESULTADOS

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.

Rpeak LINPACK
Nodos 1 core nodo 1 core % No turbo % Norm nodo % Norm
artemis 9,32 74,56 8,44 90,5 1 50,41 67,6 1
calypso 9,32 74,56 8,87 95,1 1,05 66.09 88,6 1,3
kratos 13,88 166,56 14,09 102,5 13,3 95,8 1,56 151,6 91 3
hermes00 36,8 1177,6 48,69 132,2 34,28 93,4 4,07 897,07 76,1 17,8
hermes01-12 41,6 832 42,68 109,7 38,99 93,7 4,62 671,2 80,6 13,3
hermes13-16 38,4 768

 

Como referencia, se indica el rendimiento máximo teórico (Rpeak) y se calcula el porcentaje que se obtiene de éste al realizar las pruebas. En algunos casos, se supera el 100% de rendimiento. La razón viene explicada más adelante.

Para el cálculo del máximo teórico se han usado las instrucciones AVX (16 DP). Estas operaciones funcionan en un rango de frecuencia por debajo de la frecuencia base. No obstante, para simplificar los cálculos, no se ha tenido en cuenta esa menor frecuencia. Por tanto, ese máximo teórico es más alto del real.

En el caso de usar un único en core sucede algo similar. Los procesadores de Intel permiten funcionar por encima de la frecuencia base cuando se dan ciertas circunstancias, por ejemplo, cuando no se están usando todos los cores de la CPU. Por esa razón, los resultados que se obtienen son mayores que los teóricos. Por ejemplo, hermes00 alcanza 3,6GHz y hermes01-12, 3,3GHz.