Manual de uso

⌘K
  1. Inicio
  2. Documentos
  3. Manual de uso
  4. 5. Infraestructura Hardwa...
  5. Comparativa de rendimiento

Comparativa de rendimiento

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.

orionnixmetisv2metisv1hermesv2hermesv1kratoscalypsoLogarithmic Result OverviewPhoronix Test SuiteHigh Performance Conjugate GradientNumpy BenchmarkLAMMPS Molecular Dynamics SimulatorStreamHPC Challenge (local)Java SciMarkGNU Octave BenchmarkHimeno BenchmarkR BenchmarkHPL Linpack

proteus-familiesstream: Copystream: Scalestream: Triadstream: Addhpcg: 104 104 104 - 60hpl: hpcc: G-Fftelammps: 20k Atomsjava-scimark2: Compositejava-scimark2: Monte Carlojava-scimark2: Fast Fourier Transformjava-scimark2: Sparse Matrix Multiplyjava-scimark2: Dense LU Matrix Factorizationjava-scimark2: Jacobi Successive Over-Relaxationhimeno: Poisson Pressure Solvernumpy: rbenchmark: octave-benchmark: orionnixmetisv2metisv1hermesv2hermesv1kratoscalypso662181.8468463.7513327.2510040.766.41244386.4122.0606718.2554433.771811.71336.383179.3114949.941891.535226.020405816.880.13515.662630877.2431188.4416834.6444434.777.15702662.894.3832017.2644702.721901.83352.703644.3415630.771983.945644.804698868.260.12145.607176249.7133729.7151621.9151914.222.88301440.723.4929014.9032161.06907.52494.071913.136149.221341.353737.601214414.380.154812.749140383.9107053.2118379.9118735.920.19441476.619.7182715.8402134.44879.89478.591899.826120.661293.253721.418218417.420.156612.98591686.365130.071944.471856.412.6657666.0313.841478.4962019.151036.43350.151806.015393.111510.053186.345559345.290.171414.35499091.067597.975770.275660.113.4510624.1314.981778.8741765.87757.85332.421572.564881.221285.303024.978513310.170.176813.68827154.217468.219201.019241.83.44768141.685.423035.0441371.69749.21147.731111.613569.441280.462269.841019210.860.275516.0949315.06194.96332.06329.90.81769931.7571.646302.049505.72391.2636.81417.61889.49793.441100.70027786.980.501140.554Phoronix Test Suite
  • 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
 
_
Phoronix Test SuiteRelative Performance, More Is BetterStream 2013-01-17Type: Copyorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso163248648071.08867.72718.92115.0719.84310.6382.9151.000-mcmodel=medium-mcmodel=medium1. (CC) gcc options: -march=native -O2 -pipe -O3 -fopenmp
Phoronix Test SuiteRelative Performance, More Is BetterStream 2013-01-17Type: Scaleorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2040608010075.62169.60421.58717.28110.51310.9122.8201.000-mcmodel=medium-mcmodel=medium1. (CC) gcc options: -march=native -O2 -pipe -O3 -fopenmp
Phoronix Test SuiteRelative Performance, More Is BetterStream 2013-01-17Type: Triadorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2040608010081.06965.83023.94518.69511.36211.9663.0321.000-mcmodel=medium-mcmodel=medium1. (CC) gcc options: -march=native -O2 -pipe -O3 -fopenmp
Phoronix Test SuiteRelative Performance, More Is BetterStream 2013-01-17Type: Addorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2040608010080.57670.21223.99918.75811.35211.9533.0401.000-mcmodel=medium-mcmodel=medium1. (CC) gcc options: -march=native -O2 -pipe -O3 -fopenmp
Single Core
 
_
Phoronix Test SuiteRelative Performance, More Is BetterJava SciMark 2.2Computational Test: Compositeorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso36912158.7679.2994.2734.2213.9933.4922.7121.000
Phoronix Test SuiteRelative Performance, More Is BetterJava SciMark 2.2Computational Test: Monte Carloorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso1.09372.18743.28114.37485.46854.6304.8612.3192.2492.6491.9371.9151.000
Phoronix Test SuiteRelative Performance, More Is BetterJava SciMark 2.2Computational Test: Fast Fourier Transformorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso36912159.1389.58213.42213.0029.5129.0314.0131.000
Phoronix Test SuiteRelative Performance, More Is BetterJava SciMark 2.2Computational Test: Sparse Matrix Multiplyorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2468107.6138.7274.5814.5494.3253.7662.6621.000
Phoronix Test SuiteRelative Performance, More Is BetterJava SciMark 2.2Computational Test: Dense LU Matrix Factorizationorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso4812162016.80717.5736.9136.8816.0635.4884.0131.000
Phoronix Test SuiteRelative Performance, More Is BetterJava SciMark 2.2Computational Test: Jacobi Successive Over-Relaxationorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso0.56251.1251.68752.252.81252.3842.5001.6911.6301.9031.6201.6141.000
Phoronix Test SuiteRelative Performance, More Is BetterHimeno Benchmark 3.0Poisson Pressure Solverorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso1.15382.30763.46144.61525.7694.7480005.1280003.3960003.3810002.8950002.7480002.0620001.000000-mavx2-mavx2-mavx2-mavx2-mavx2-mavx21. (CC) gcc options: -O3 -march=native -O2 -pipe
Phoronix Test SuiteRelative Performance, More Is BetterNumpy Benchmarkorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso36912159.3929.9824.7644.7993.9703.5662.4241.000
Phoronix Test SuiteRelative Performance, More Is BetterGNU Octave Benchmark 7.3.0orionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2468107.1627.2333.1813.1232.8252.9632.5201.000
Multicore
 
_
Phoronix Test SuiteRelative Performance, More Is BetterHigh Performance Conjugate Gradient 3.1X Y Z: 104 104 104 - RT: 60orionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2040608010081.21900094.35900027.98500024.69700015.48900016.4500004.2160001.0000001. (CXX) g++ options: -O3 -ffast-math -ftree-vectorize -lmpi_cxx -lmpi
Phoronix Test SuiteRelative Performance, More Is BetterHPL Linpack 2.3orionnixmetisv2metisv1hermesv2hermesv1kratoscalypso306090120150138.12483.84945.36646.49720.97319.6534.4611.0001. (CC) gcc options: -march=native -O2 -pipe -lopenblas -lm -lmpi
Phoronix Test SuiteRelative Performance, More Is BetterHPC Challenge 1.5.0Test / Class: G-Ffteorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso163248648074.1420057.3300014.2700011.911008.408009.100003.294001.008001. (CC) gcc options: -lblas -lm -lmpi -fomit-frame-pointer -march=native -O2 -pipe -funroll-loops2. OpenBLAS + Open MPI 4.1.4
Phoronix Test SuiteRelative Performance, More Is BetterLAMMPS Molecular Dynamics Simulator 23Jun2022Model: 20k Atomsorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso2468108.9098.4267.2737.7314.1464.3312.4621.0001. (CXX) g++ options: -march=native -O2 -pipe -O3 -lm -ldl
Phoronix Test SuiteRelative Performance, More Is BetterR Benchmarkorionnixmetisv2metisv1hermesv2hermesv1kratoscalypso0.92881.85762.78643.71524.6443.70904.12803.23703.20002.92402.83401.81901.0000

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.

¿Cómo podemos ayudarte?