Linpack de referencia | |
---|---|
Tipo de | prueba de rendimiento |
Autor | Jack Dongarra , Jim Bunch, Cleve Moler , Gilbert Stewart |
Primera edición | 1979 |
Sitio web | netlib.org/benchmark/hpl/ |
Los puntos de referencia de LINPACK miden el rendimiento computacional de las computadoras cuando procesan números de punto flotante . Creados por Jack Dongarra en 1979, miden qué tan rápido una computadora puede resolver un sistema denso de ecuaciones lineales (SLAE) Ax=b , donde A es una matriz de n por n . Un problema similar surge a menudo en el campo de la ingeniería mecánica .
La última versión de estos puntos de referencia se utiliza para compilar el TOP500 , una lista que enumera las supercomputadoras de mayor rendimiento del mundo. [2]
El propósito de crear pruebas es evaluar la velocidad de resolución de problemas reales por parte de una computadora. Sin embargo, calificar con una sola prueba es una simplificación porque ninguna tarea computacional individual puede reflejar el rendimiento general de un sistema informático. Rendimiento de LINPACK para proporcionar datos para refinar el rendimiento máximo proporcionado por el fabricante de la computadora (el rendimiento máximo es el rendimiento teórico máximo que puede lograr una computadora, calculado como el producto de la velocidad del reloj del procesador y el número de operaciones realizadas por reloj), el rendimiento real el rendimiento siempre será inferior al rendimiento máximo [ 3] . El rendimiento de la computadora es una característica compleja que depende de muchos componentes interrelacionados. El rendimiento medido por el banco de pruebas LINPACK muestra el número de operaciones de punto flotante de 64 bits (sumas y multiplicaciones) que la computadora realizó por segundo, una proporción denominada " FLOPS ". Sin embargo, es probable que el rendimiento de una computadora cuando se ejecutan aplicaciones reales sea significativamente menor que el rendimiento máximo alcanzado cuando se ejecuta una prueba LINPACK correspondiente. [cuatro]
El nombre de estas pruebas se deriva del paquete LINPACK , un conjunto de rutinas algebraicas de Fortran ampliamente utilizadas en la década de 1980 y originalmente estrechamente relacionadas con la prueba LINPACK. Desde entonces, el paquete LINPACK ha sido reemplazado por otras bibliotecas.
El punto de referencia LINPACK apareció por primera vez en 1979 como un apéndice del manual de usuario de la biblioteca matemática LINPACK . [5]
LINPACK se diseñó para ayudar a los usuarios a estimar el tiempo que tardan sus sistemas informáticos en completar tareas utilizando el paquete LINPACK . Para ello, se extrapolan los resultados de rendimiento obtenidos en 23 ordenadores diferentes resolviendo un problema con un tamaño de matriz de 100 por 100 elementos.
Este tamaño de tarea se eligió teniendo en cuenta los tamaños de memoria característicos y el rendimiento del procesador en esa época:
A lo largo de los años, se han lanzado versiones adicionales con diferentes tamaños de problemas más grandes, como matrices numéricas de 300 por 300 y 1000 por 1000. También han aparecido implementaciones que utilizan capacidades de hardware para acelerar las operaciones matriz-vector y matriz-matriz. [6] El procesamiento de datos en paralelo apareció en una variante de la prueba paralela LINPACK a fines de la década de 1980. [3]
En 1991, la prueba LINPACK se modificó para resolver problemas de tamaño arbitrario [7] , lo que permitió que las computadoras de alto rendimiento (HPC) se aproximaran a su rendimiento asintótico.
Desde 1993, esta prueba se ha utilizado para compilar las clasificaciones TOP500 .
LINPACK 100 está muy cerca de la prueba original publicada en 1979 en la Guía del usuario de LINPACK ( ISBN 089871172X ). La solución SLAE se produce por eliminación gaussiana de rotación parcial , realizando operaciones de punto flotante 2/3 n³ + 2n², donde n es 100 y la matriz densa A es 100 por 100. El pequeño tamaño de la matriz y la falta de flexibilidad del software son pocas computadoras modernas para demostrar un rendimiento cercano al máximo en esta prueba. Sin embargo, este punto de referencia aún puede ser útil para predecir el rendimiento en código personalizado numéricamente intensivo compilado con optimizaciones. [3]
LINPACK 1000 aumenta el tamaño de la matriz a 1000 por 1000 elementos y proporciona un rendimiento más cercano al máximo para una computadora. Se permiten cambios en el algoritmo, sin embargo, no se permite una disminución en la precisión relativa de la solución. Al calcular el rendimiento de la prueba, la fórmula para el número de operaciones flotantes realizadas es siempre 2 / 3n³ + 2n², con un valor de n = 1000. [3]
Las generaciones anteriores de la prueba no eran adecuadas para probar computadoras paralelas, [8] y se desarrolló la llamada prueba "Highly Parallel Computing de Linpack", también conocida como HPLinpack. En la nueva prueba, el tamaño de la tarea n se puede aumentar al tamaño necesario para optimizar el rendimiento de la máquina. Se sigue utilizando la fórmula del número de operaciones 2 / 3n³ + 2n², independientemente del algoritmo realmente utilizado. No se permite el uso del algoritmo de Strassen porque distorsiona la velocidad de ejecución real. [9] La precisión de la solución encontrada debe ser tal que se cumpla la siguiente propiedad:
, donde es la precisión de la máquina, y n es el tamaño del problema, [10] es la norma de la matriz , y corresponde a la notación gran-O ("O" grande).
Se informan las siguientes cantidades para cada sistema informático: [3]
Estos resultados se utilizan para compilar la lista TOP500 de las supercomputadoras más rápidas del mundo, así como la Green500 . Publicada dos veces al año.
La sección anterior describió las reglas básicas para los puntos de referencia. La implementación real del programa puede diferir, existen variantes para Fortran , [11] C [12] y Java [13] .
HPL es una implementación móvil de la tarea HPLinpack, creada en el lenguaje de programación C. Originalmente sirvió como una implementación de muestra, pero desde entonces se ha vuelto ampliamente utilizado para obtener datos para la lista TOP500 , aunque se pueden usar otras implementaciones y paquetes. HPL crea un sistema lineal de ecuaciones de orden n con coeficientes aleatorios y luego lo resuelve usando una descomposición LU con rotación de fila parcial. La implementación requiere implementaciones instaladas de MPI (bibliotecas de paso de mensajes) y una biblioteca matemática: BLAS o VSIPL [14] .
En general, esta implementación tiene las siguientes características: [15] [16]
A veces se afirma que el éxito de la prueba LINPACK se debe a la buena escalabilidad de la tarea HPLinpack [17] , al hecho de que el resultado de la prueba es un único número fácil de comparar y a una gran cantidad de datos históricos. . [18] Sin embargo, poco después de su introducción, LINPACK fue criticado por demostrar niveles de rendimiento "generalmente más allá del alcance de todos, excepto de un número muy pequeño de programadores que optimizan tediosamente su código para y solo para una computadora determinada". [19] Benchmark prueba la velocidad de resolución de sistemas lineales densos , pero esta tarea no es representativa de todas las operaciones comúnmente realizadas en computación científica. [20] Jack Dongarra , coautor de las pruebas LINPACK y la lista TOP500, señaló que estas pruebas solo se enfocan en las velocidades y números de procesadores "picos", mientras que subutilizan los buses de memoria local y las interconexiones de red. [21]
Tom Dunning, Jr., director del Centro Nacional para Aplicaciones de Supercomputación, describió la prueba LINPACK de la siguiente manera: “La prueba Linpack es uno de esos fenómenos interesantes cuya utilidad es ridiculizada por casi todos los que la conocen. Entienden sus limitaciones, pero la prueba es popular porque muestra un solo número y se ha utilizado durante muchos años”. [22]
Según Dongarra, "Top500 está buscando activamente expandir la cobertura de los puntos de referencia" porque "es importante incluir más características de rendimiento y firmas para cada competidor". [23] Una de las opciones para complementar las pruebas del TOP500 es el conjunto HPC Challenge Benchmark [24] . Con la llegada de las supercomputadoras de petaflops (Petascale), se propuso la prueba Graph500 , que mide el número de aristas atravesadas por segundo (TEPS), como una alternativa a los FLOPS medidos por LINPACK [25] . Otra alternativa es la prueba de rendimiento HPCG propuesta por Dongarra. [26] [27]
Según Jack Dongarra , la cantidad de tiempo que necesita ejecutar la prueba HPLinpack para obtener buenos resultados está aumentando gradualmente. En una conferencia en 2010, dijo que después de "unos años" espera un aumento en la duración del lanzamiento a unos 2,5 días. [28]