Los nodos que componen PROTEUS provienen de sucesivas ampliaciones y mejoras a lo largo de los años. Debido a la diferencia de prestaciones que presentan, ha sido necesario realizar unas evaluaciones de rendimiento que permitan compararlos y ayudar a elegir el tipo de nodo apropiado para cada tipo de trabajo.
Estas evaluaciones también sirven como base para asignar un «coste» por el uso de cada tipo de recurso (CPU, RAM, GPUs,…) en cada tipo de nodo. Este coste se utiliza para calcular la prioridad individual de cada usuario. Esto es, el uso de componentes con mayores especificaciones conlleva una mayor factura asociada al usuario, lo que hace que su prioridad disminuya en igual medida.
Definiciones previas
-
Rendimiento teórico
El rendimiento teórico o rendimiento pico hace referencia a la potencia máxima de procesamiento que sería capaz de proporcionar una CPU o sistema en un entorno de funcionamiento ideal, donde todos sus componentes funcionaran al máximo de sus especificaciones. Como indica el nombre, se trata de una medida teórica que no se puede obtener en situaciones reales debido, entre otras razones, por el cuello de botella entre la velocidad del procesador y la memoria, y la dependencia de datos.
El rendimiento teórico de una CPU se calcula como el producto de su frecuencia de funcionamiento por el número de núcleos y el número de operaciones que es capaz de finalizar por ciclo (arquitecturas superescalares, operaciones vectoriales, etc):
Rpeak = nº total de cores cores · frecuencia · número de operaciones por ciclo
Alias | Arquitectura (modelo) | #cores | DPs | Rpeak Core | Rpeak Dual Socket |
---|---|---|---|---|---|
Calypso | Hapertown (E5410) | 4 | 4 | 9,32 | 74,56 |
Kratos | Westmere (X5690) | 6 | 4 | 13,88 | 166,56 |
Hermes v1 * | Haswell (E5-2660 v3) | 10 | 16 | 41,6 | 832 |
Hermes v2 | Broadwell (E5-2640 v4) | 10 | 16 | 38,4 | 768 |
Metis v1 | Skylake (Gold 6132) | 14 | 32 | 83,2 | 2329,6 |
Metis v2 * | Cascadelake (Gold 6226) | 12 | 32 | 86,4 | 2073,6 |
Nix | Genoa (EPYC 9274F) | 24 | 16 | 64,8 | 3110,4 |
Orion | Genoa (EPYC 9474F) | 48 | 16 | 57,6 | 5529,6 |
-
Rendimiento empírico
El rendimiento teórico es prácticamente imposible de alcanzar y puede diferir mucho con el real. Es por esto que se suelen realizar pruebas empíricas para conocer el rendimiento real de un sistema.
-
Flops
La unidad de con la que se suele medir el rendimiento de un sistema son los flops, u operaciones en coma flotante por segundo. Al tomarse como unidad de rendimiento estas operaciones genéricas, se hace una abstracción la ISA concreta del procesador, lo que permite comparar arquitecturas distintas. Se suelen usar doble precisión (64 bits) para realizar las comparaciones, aunque con la irrupción del machine learning, también se están usando precisiones más bajas, e incluso operaciones de enteros.
Pruebas de rendimiento
Sirven para medir las prestaciones reales de un sistema. Existen una gran cantidad de tipos de benchmarks, que pueden medir distintos aspectos de rendimiento de los equipos informáticos, como el sistema de almacenamiento, ancho de banda a memoria, procesamiento gráfico,… o el rendimiento global del sistema. Algunos son totalmente sintéticos (programas diseñados para medir el rendimiento) como kernels o porciones de programas reales.
En entornos HPC, las métricas más relevantes son la potencia de cálculo y los anchos de banda y latencias a memoria, red de comunicaciones y almacenamiento. Los benchmarks más populares en entornos HPC son Linpack y HPCG.
Linpack es una librería que resuelve problemas de algebra lineal. Ha sido muy utilizada como benchmark de CPU. HPL (High Performance Linpack) es una versión paralela y optimizada de la misma que se usa para medir el rendimiento de los supercomputadores, y es la utilizada en la lista del TOP500 (los 500 sistemas más potentes del mundo).
HPCG (high performance conjugate gradient) es un benchmark relativamente nuevo, creado con la intención de modelar el acceso real que hacen los programas a memoria principal. Los accesos a memoria suelen hacer de cuello de botella por lo que este benchmark obtiene solo una fracción de la potencia bruta de la CPU. Complementa a Linpack, el cual hace un uso más intensivo del procesador, por lo que se suelen dar los valores de ambos benchmarks para describir un sistema.
Evaluación de los nodos
Se ha utilizado el software Phoronix Test Suite para realizar la evaluación de rendimiento de las distintas generaciones de nodos que componen PROTEUS . Se trata de una aplicación de código libre para realizar pruebas de rendimiento. Dispone de una colección de tests que evalúan distintos sistemas, como gráficos, almacenamiento, CPU, ancho de banda de memoria, etc. Permite automatizar el proceso de benchmark y se encarga de repetir cada test al menos tres veces para sacar una media, teniendo en cuenta que la desviación típica no sea alta. Presenta los resultados en distintos formatos y permite realizar estudios estadísticos sobre ellos.
A continuación se listan los tests que se han utilizado para evaluar PROTEUS, clasificados por su tipo. Uno de ellos mide el ancho de banda de la memoria, mientras que el resto hace hincapié en la CPU, tanto con pruebas que usan un único núcleo como las que usan todos los núcleos disponibles en el sistema.
Cada test se ha compilado para cada nodo y su arquitectura específica usando el flag de optimización -march=native.
Tests realizados
-
Memoria
STREAM: es el bechmark de facto para medir el ancho de banda de memoria. Se mide en MB/s
-
Single Core
- Java SciMark: is a Java benchmark for scientific and numerical computing. It measures several computational kernels and reports a composite score in approximate Mflops (Millions of floating point operations per second).
- Himeno: The Himeno benchmark is a linear solver of pressure Poisson using a point-Jacobi method. MFlops
- Numpy Benchmark: This is a test to obtain the general Numpy performance.
- GNU Octave Benchmark: This test profile measures how long it takes to complete several reference GNU Octave files via octave-benchmark. GNU Octave is used for numerical computations and is an open-source alternative to MATLAB.
-
Multicore
- HPCG: HPCG is the High Performance Conjugate Gradient and is a new scientific benchmark from Sandia National Lans focused for super-computer testing with modern real-world workloads compared to HPCC.
- HPL: HPL is a well known portable Linpack implementation for distributed memory systems.
- qe: Quantum ESPRESSO is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials.
- LAMMPS: LAMMPS is a classical molecular dynamics code, and an acronym for Large-scale Atomic/Molecular Massively Parallel Simulator.
- R Benchmark: This test is a quick-running survey of general R performance
- GROMACS: The GROMACS (GROningen MAchine for Chemical Simulations) molecular dynamics package testing with the water_GMX50 data.
- TensorFlow: This is a benchmark of the TensorFlow deep learning framework using the TensorFlow reference benchmarks (tensorflow/benchmarks with tf_cnn_benchmarks.py)
- HPCC-FFT: Fast Fourier Transform
Resultados
En esta sección se recogen los resultados de la ejecución de los benchmarks anteriormente citados sobre las distintas generaciones de los nodos que componen PROTEUS.
En la siguiente tabla se muestran las principales características de dichos nodos:
Alias | Arquitectura (modelo) | #Nodos | #Cores/Nodo | RAM GB | Año |
---|---|---|---|---|---|
Calypso | Hapertown (E5410) | 38 | 8 | 8 | 2008 |
Kratos | Westmere (X5690) | 42 | 12 | 48 | 2012 |
Hermes v1 * | Haswell (E5-2660 v3 + E5-2698 v3) | 13 + 1 | 20 + 32 | 64 + 256 | 2015 |
Hermes v2 | Broadwell (E5-2640 v4) | 4 | 20 | 64 | 2015 |
Metis v1 | Skylake (Gold 6132) | 8 | 28 | 96 | 2019 |
Metis v2 * | Cascadelake (Gold 6226) | 40 | 24 | 96 + 386 | 2019 |
Nix | Genoa (EPYC 9274F) | 4 | 48 | 768 | 2023 |
Orion | Genoa (EPYC 9474F) | 1 | 96 | 1536 | 2023 |
-
Comentarios previos
Antes de mostrar los resultados en sí, se van a realizar una serie de comentarios que ayuden a comprenderlos.
- Los nodos son de distintas generaciones y fabricantes. Los primeros (de 2008 a 2019) son Intel, y solo los nodos adquiridos en 2023 son AMD
- En 2015 y 2019 se compraron equipos con CPUs con microarquitectura ligeramente distinta, pero pertenecientes a la misma familia. Se le ha denominado v1 y v2, respectivamente.
- Los equipos AMD tienen la misma microarquitectura (EPYC Zen4), pero distintos modelos de CPU. Los nodos llamados nix tienen 48 cores en total a 4,05GHz, mientras que orion tiene 96 cores a 3,6GHz.
- Por tanto, cabe esperar diferencias de rendimiento entre estas distintas generaciones que van a depender del número de cores, su frecuencia y las mejoras propias de cada microarquitectura (ILP, número de unidades funcionales, canales de memoria, cachés, ISA y SIMD, etc.)
-
Resumen global de resultados
A continuación se muestran los resultados de forma gráfica. El total de pruebas realizadas se puede consultar en el siguiente documento: proteus-families-pts.
-
Análisis de los resultados obtenidos
En los test de memoria claramente los nodos de AMD superan a los Intel. Sus 12 canales de memoria por CPU, DDR5 4800MT/s, triplican los resultados obtenidos con los metisv2, de seis canales DDR4 2934MT/s. Entre los AMD, orion se impone a nix (iguales canales y frecuencias) por su mayor tamaño de memoria cache, gracias a las caches L1 y L2 de su doble de núcleos. En los nodos metisv1, su memoria a algo menor frecuencia (2666 MT/s) que en los metisv2 se ve reflejada en un rendimiento algo menor. Le siguen hermesv1 y hermesv2, ambos con cuatro canales de memoria a 2133MT/s, kratos con tres canales DDR3 a 800MT/s y calypso con su FSB 1333MT/s y memoria DDR2 667MT/s
Para los test que usan un único núcleo vamos a empezar exponiendo sus características para poder hacer un mejor análisis de los resultados:
Alias | Arquitectura (modelo) | Frec. Base | Máx Frec. | Máx SIMD | Cache L1/L2/L3 |
---|---|---|---|---|---|
Calypso | Hapertown (E5410) | 2,33 GHz | – | SSE3 | 32K+32K / 12M / – |
Kratos | Westmere (X5690) | 3,46 GHz | 3,73 GHz | SSE4.2 | 32K+32K / 256K / 12M |
Hermes v1 * | Haswell (E5-2660 v3) | 2,6 GHz | 3,3 GHz | AVX2 | 32K+32K / 256K / 25M |
Hermes v2 | Broadwell (E5-2640 v4) | 2,4 GHz | 3,4 GHz | AVX2 | 32K+32K / 256K / 25M |
Metis v1 | Skylake (Gold 6132) | 2,6 GHz | 3,7 GHz | AVX512 | 32K+32K / 1024K / 19M |
Metis v2 * | Cascadelake (Gold 6226) | 2,7 GHz | 3,7 GHz | AVX512 | 32K+32K / 1024K / 19M |
Nix | Genoa (EPYC 9274F) | 4,05 GHz | 4,3 GHz | AVX512 | 32K+32K / 1024K / 256M |
Orion | Genoa (EPYC 9474F) | 3,6 GHz | 4,1 GHz | AVX512 | 32K+32K / 1024K / 256M |
Para todos los tests que usan un único núcleo, salvo para Java SciMark Fast Fourier Transform, los nodos AMD duplican el rendimiento de los mejores de Intel. Su mayor frecuencia, caché y microarquitectura más avanzada parece permitir estos resultados. En cuanto a los Intel restantes, también se ve una diferencia por generación, aunque es menos acusada.
Los test multicore se pueden clasificar en dos grupos. Los tests HPCG, Linpack y FFT, utilizados típicamente en entornos HPC, y por otro lado LAMMPS y R. En los primeros, se puede observar cómo estos tests exprimen la potencia los procesadores, y los resultados son acordes con el número de cores de cada sistema. En los segundos no está tan claro, y no hay una diferencia tan clara entre los nodos AMD e Intel. Se puede deber a que dichos tests no están preparados para un número tan elevado de cores, por lo que no se les tendrá muy en cuenta.
-
Resultados normalizados para cada benchmark
Memoria
Single Core
Multicore
Eficiencia energética
Como intento de muestra de eficiencia energética se añaden los siguientes resultados. Hay que tener en cuenta que no se ha podido medir el consumo eléctrico real, sino que se ha utilizado el TDP proporcionado en las especificaciones de cada procesador. Tampoco se ha tenido en cuenta el resto de componentes del sistema, como pueden ser eficiencia de las fuentes de alimentación, ventiladores, memoria, etc.
Por tanto, en la siguiente gráfica se muestra la relación entre los GFlops alcanzados durante el test High Perfomance Linpack y el TDP de los procesadores de cada sistema.
A la vista de los resultados se puede concluir que la eficiencia energética ha ido mejorando en cada generación de PROTEUS: cada nuevo sistema es capaz de dar mayor rendimiento (número de instrucciones en coma flotante de doble precisión por segundo) por watio eléctrico. Los sistemas nix serían una excepción, aunque como ya se ha comentado, los consumos usados en esta comparación han sido los TDP y no los reales, por lo que puede que ese resultado no sea correcto.
Comparativa entre Especificaciones Teóricas y Resultados obtenidos
En esta última gráfica se compara el máximo teórico (Rpeak) frente a la mayor potencia de cálculo obtenida (Rmax) al ejecutar HPL. Se obtiene una eficiencia de alrededor el 80%, salvo en calpyso, que es solo del 40% (puede que se trate de un error en el benchmark), y en metisv1 y metisv2, de alrededor de 65-70%. En estos sistemas, el número de operaciones en coma flotante de doble precisión por ciclo es muy elevado (32), sin embargo la frecuencia de reloj disminuye al usar los registros de 512bits. A la hora de hacer los cálculos se ha usado la frecuencia base, de ahí las discrepancias.