Whetstone (benchmark)
Whetstone es un pequeño benchmark científico diseñado en el Laboratorio Nacional de Física de Inglaterra. Se lo considera uno de los padres de los benchmarks sintéticos por ser el primero diseñado específicamente con ese fin. Hoy en día forma parte de muchos benchmarks actuales.
From Wikipedia, the free encyclopedia
Whetstone es un pequeño benchmark científico diseñado en el Laboratorio Nacional de Física de Inglaterra. Se lo considera uno de los padres de los benchmarks sintéticos por ser el primero diseñado específicamente con ese fin. Hoy en día forma parte de muchos benchmarks actuales.
El Whetstone original fue diseñado en la década de 1960 por Brian Wichmann en el National Physical Laboratory, en Inglaterra, como un test para un compilador ALGOL 60 para una máquina hipotética. El sistema de compilación fue denominado Whetstone, localidad en la que fue diseñado, y el nombre parece haber quedado pegado luego al benchmark en sí mismo. El programa fue diseñado basándose en el estudio de 949 programas Algol '60, por lo que constituye un benchmark "sintético". Debido a que sus creadores se basaron en programas científicos de la época, este benchmark puede considerarse como científico. Su importancia histórica radica en que fue el primer programa diseñado para benchmarking.
La primera implementación práctica del Whetstone fue escrita por Harold Curnow en Fortran en 1972 (Curnow y Wichmann juntos publicaron un artículo sobre el benchmark Whetstone en 1976 para The Computer Journal). Sin embargo, luego fue traducido a varios lenguajes (Pascal, C, Fortran 77, Visual Basic, etc.). Fue diseñado para medir la velocidad de ejecución de una variedad de instrucciones de coma flotante (+, *, seno, cos, atan, sqrt, log, exp) en datos escalares o vectoriales, aunque también contiene algo de código de enteros, condicionales y llamadas a procedimientos. En líneas generales intenta estimar la velocidad de la CPU con la FPU.
Uno de los grandes problemas del Whetstone es que no cuenta con una versión oficial, por lo que hay que tener mucho cuidado en las comparaciones de que realmente se está usando el mismo tipo de programa, y sobre todo la misma cantidad de iteraciones por bucle.
Su uso
En sus comienzos demostró ser una buena medida de rendimiento, sin embargo con el tiempo su funcionalidad se vio reducida por su alta sensibilidad a optimizadores. A finales de la década de 1980 y comienzos de la década de 1990 se reconoció que el Whetstone no funcionaría adecuadamente para medir el rendimiento de supercomputadoras con multiprocesadores paralelos. Sin embargo el Whetstone aún se utiliza ampliamente, porque provee una medida muy razonable de rendimiento de monoprocesadores de aritmética flotante. Uno de sus mayores usos actualmente es como parte de otros benchmarks (por ejemplo la primera versión del iCOMP de Intel o el Wintune).
Resultado:
Los resultados son provistos en MWIPS (Millones de Instrucciones Whetstone Por Segundo). El significado de la expresión "Instrucciones Whetstone" no queda claro salvo que uno examine cuidadosamente el código fuente. Sin embargo, se puede definir a una instrucción Whetstone como una instrucción de punto flotante promedio. Se calcula como (100 * CANTIDAD DE ITERACIONES * CANTIDAD DE WIPS POR ITERACIÓN / TIEMPO DE EJECUCIÓN).
Características importantes
Su código fuente es corto y relativamente fácil de entender, con una estructura limpia y que se explica por sí misma. El tiempo de ejecución es corto: 100 segundos (por diseño). Es muy preciso (tiene pequeñas variaciones en los resultados).
Arquitectura de la CPU
En el benchmark Whetstone, el código objeto que se itera es muy pequeño, cabiendo completamente en la caché interna de los procesadores modernos, por lo tanto manteniendo el pipeline de la FPU completo y a la FPU permanentemente ocupada. Esto es deseable porque el Whetstone hace exactamente lo que nosotros queremos que haga: medir de la FPU, no el acoplamiento de la CPU (caché externa/memoria principal), rendimiento de enteros o cualquier otra característica del sistema bajo prueba (sin embargo hay evidencia de que en los Pentium actuales hay interacción con la caché externa y la memoria principal debido a su complicado pipelining).
Las bibliotecas matemáticas usadas para las funciones trigonométricas y matemáticas trascendentales deberían ser compiladas en muy poco código ejecutable dado que todas las CPUs modernas tienen FPUs con estas funciones incorporadas.
El número de iteraciones es lo suficientemente grande como para que el costo por instrucciones extras sea despreciable. Además es poco utilizado para la Evaluación de Sistemas Informáticos en la UCAB.