Los puntos de referencia LINPACK son una medida de la potencia de cálculo de punto flotante de un sistema . Introducidos por Jack Dongarra , miden la velocidad con la que un ordenador resuelve un sistema denso de n por n ecuaciones lineales Ax = b , que es una tarea habitual en ingeniería .
La última versión de estos puntos de referencia se utiliza para crear la lista TOP500 , que clasifica las supercomputadoras más potentes del mundo. [1]
El objetivo es aproximar la velocidad con la que un ordenador se desempeñará al resolver problemas reales. Es una simplificación, ya que ninguna tarea computacional puede reflejar el rendimiento general de un sistema informático. Sin embargo, el rendimiento del benchmark LINPACK puede proporcionar una buena corrección sobre el rendimiento máximo proporcionado por el fabricante. El rendimiento máximo es el rendimiento teórico máximo que un ordenador puede lograr, calculado como la frecuencia de la máquina, en ciclos por segundo, multiplicado por el número de operaciones por ciclo que puede realizar. El rendimiento real siempre será inferior al rendimiento máximo. [2] El rendimiento de un ordenador es un tema complejo que depende de muchas variables interconectadas. El rendimiento medido por el benchmark LINPACK consiste en el número de operaciones de punto flotante de 64 bits , generalmente sumas y multiplicaciones, que un ordenador puede realizar por segundo, también conocido como FLOPS . Sin embargo, es probable que el rendimiento de un ordenador al ejecutar aplicaciones reales esté muy por detrás del rendimiento máximo que logra ejecutando el benchmark LINPACK apropiado. [3]
El nombre de estos benchmarks proviene del paquete LINPACK , una colección de subrutinas de álgebra Fortran ampliamente utilizadas en la década de 1980, e inicialmente estrechamente vinculadas al benchmark LINPACK. El paquete LINPACK ha sido reemplazado desde entonces por otras bibliotecas.
El informe de referencia LINPACK apareció por primera vez en 1979 como apéndice del manual del usuario de LINPACK . [4]
LINPACK fue diseñado para ayudar a los usuarios a estimar el tiempo que necesitan sus sistemas para resolver un problema utilizando el paquete LINPACK, extrapolando los resultados de rendimiento obtenidos por 23 computadoras diferentes al resolver un problema matricial de tamaño 100.
Este tamaño de matriz se eligió debido a las limitaciones de memoria y CPU en ese momento:
Con el paso de los años, se lanzaron versiones adicionales con diferentes tamaños de problemas, como matrices de orden 300 y 1000, y restricciones, lo que permitió nuevas oportunidades de optimización a medida que las arquitecturas de hardware comenzaron a implementar operaciones matriz-vector y matriz-matriz. [5]
El procesamiento paralelo también se introdujo en el benchmark LINPACK Parallel a finales de la década de 1980. [2]
En 1991, el LINPACK fue modificado para [6] resolver problemas de tamaño arbitrario, permitiendo que las computadoras de alto rendimiento (HPC) se acerquen a su rendimiento asintótico.
Dos años más tarde, este parámetro se utilizó para medir el rendimiento de la primera lista TOP500 .
LINPACK 100 es muy similar al benchmark original publicado en 1979 junto con el manual de usuario de LINPACK. La solución se obtiene mediante eliminación gaussiana con pivoteo parcial , con 2/3n 3 + 2n 2 operaciones de punto flotante donde n es 100, el orden de la matriz densa A que define el problema. Su pequeño tamaño y la falta de flexibilidad del software no permiten que la mayoría de las computadoras modernas alcancen sus límites de rendimiento. Sin embargo, todavía puede ser útil para predecir el rendimiento en código escrito por el usuario con uso intensivo de números mediante la optimización del compilador. [2]
LINPACK 1000 puede proporcionar un rendimiento cercano al límite de la máquina porque además de ofrecer un tamaño de problema mayor, una matriz del orden de 1000, son posibles cambios en el algoritmo. Las únicas restricciones son que la precisión relativa no se puede reducir y el número de operaciones siempre se considerará 2/3 n 3 + 2 n 2 , con n = 1000. [2]
Los benchmarks anteriores no son adecuados para probar computadoras paralelas, [7] y se introdujo el llamado benchmark Linpack's Highly Parallel Computing, o benchmark HPLinpack. En HPLinpack, el tamaño n del problema puede hacerse tan grande como sea necesario para optimizar los resultados de rendimiento de la máquina. Una vez más, se tomará 2/3n 3 + 2n 2 como el número de operaciones, con independencia del algoritmo utilizado. El uso del algoritmo Strassen no está permitido porque distorsiona la tasa de ejecución real. [8] La precisión debe ser tal que se cumpla la siguiente expresión:
dónde
Para cada sistema informático se informan las siguientes cantidades: [2]
Estos resultados se utilizan para compilar la lista TOP500 dos veces al año, con los ordenadores más potentes del mundo. [1] TOP500 mide estos resultados en formato de punto flotante de doble precisión (FP64). La relación entre Rmax y Rpeak se denomina eficiencia paralela o eficiencia HPL. [11] Por lo general, es menor cuantos más nodos tiene un sistema debido a la sobrecarga de comunicación. Por ejemplo, un Cray Y-MP de la década de 1990 alcanza una eficiencia HPL de aproximadamente el 90%, [12] mientras que Frontier alcanza aproximadamente el 70% en 2023. [13]
En la sección anterior se describen las reglas básicas para los puntos de referencia. La implementación real del programa puede variar, y algunos ejemplos están disponibles en Fortran , [14] C [15] o Java . [16]
HPL es una implementación portátil de HPLinpack que se escribió en C, originalmente como una guía, pero que ahora se usa ampliamente para proporcionar datos para la lista TOP500, aunque se pueden usar otras tecnologías y paquetes. HPL genera un sistema lineal de ecuaciones de orden n y lo resuelve utilizando la descomposición LU con pivoteo parcial de filas. Requiere implementaciones instaladas de MPI y BLAS o VSIPL para ejecutarse. [17]
A grandes rasgos, el algoritmo tiene las siguientes características: [18] [19]
Se dice que el benchmark LINPACK tuvo éxito debido a la escalabilidad [20] de HPLinpack, el hecho de que genera un solo número, lo que hace que los resultados sean fácilmente comparables y la extensa base de datos históricos que tiene asociada. [21] Sin embargo, poco después de su lanzamiento, el benchmark LINPACK fue criticado por proporcionar niveles de rendimiento "generalmente inalcanzables para todos, excepto unos pocos programadores que optimizan tediosamente su código para esa máquina y esa máquina solamente", [22] porque solo prueba la resolución de sistemas lineales densos, que no son representativos de todas las operaciones que generalmente se realizan en la computación científica. [23] Jack Dongarra , la principal fuerza impulsora detrás de los benchmarks LINPACK, dijo que, si bien solo enfatizan la velocidad "máxima" de la CPU y la cantidad de CPU, no se le da suficiente énfasis al ancho de banda local y la red. [24]
Thom Dunning, Jr. , director del Centro Nacional para Aplicaciones de Supercomputación , dijo lo siguiente sobre el índice de referencia LINPACK: "El índice de referencia Linpack es uno de esos fenómenos interesantes; casi cualquiera que lo conozca se burlará de su utilidad. Entienden sus limitaciones, pero es un número que todos hemos aceptado a lo largo de los años". [25]
Según Dongarra, "los organizadores del Top500 están buscando activamente expandir el alcance de los informes de referencia" porque "es importante incluir más características de rendimiento y firmas para un sistema determinado". [26] Una de las posibilidades que se está considerando para extender el punto de referencia para el TOP500 es el HPC Challenge Benchmark Suite. [27] Con la llegada de las computadoras a petaescala , los bordes atravesados por segundo han comenzado a surgir como una métrica complementaria a los FLOPS medidos por LINPACK. Otra métrica de este tipo es el punto de referencia HPCG , propuesto por Dongarra. [28]
Según Jack Dongarra , se espera que aumente el tiempo de ejecución necesario para obtener buenos resultados de rendimiento con HPLinpack. En una conferencia celebrada en 2010, dijo que espera tiempos de ejecución de 2,5 días en "unos pocos años". [29]
{{cite book}}
: CS1 maint: ubicación ( enlace ) CS1 maint: ubicación del editor faltante ( enlace )LINPACK es un punto de referencia que la gente suele citar porque contiene una base de datos histórica de información, porque es bastante fácil de ejecutar, es bastante fácil de entender y, en cierto sentido, captura lo mejor y lo peor de la programación.