# Standard Performance Evaluation Corporation

Standard Performance Evaluation Corporation (SPEC) es un consorcio sin fines de lucro que incluye a vendedores de computadoras, integradores de sistemas, universidades, grupos de investigación, publicadores y consultores de todo el mundo. Tiene dos objetivos: crear un benchmark estándar para medir el rendimiento de computadoras y controlar y publicar los resultados de estos tests.

## Introducción

Por lo general la gente piensa solamente en los benchmarks de OSG (particularmente los de CPU solamente) cuando oyen hablar del "SPEC", pero la misma en realidad ha evolucionado hasta incluir en su organización dos nuevos grupos: el HPG y el GPC. A continuación detallamos cada uno de ellos.
* Open Systems Group (OSG), grupo de sistemas abiertos: realizan benchmarks de nivel de componentes y sistemas en ambientes Unix/NT/VMS. Es el grupo original a partir del cual surgió el SPEC, y sus benchmarks son probablemente los más conocidos. Además del conocido SPEC CPU2000 suite, el grupo ha desarrollado benchmarks para Java (SPECjAppServer2002 -en el cual experimentan con una nueva métrica de costo/rendimiento-, SPECjAppServer2001, SPEC JBB2000 y SPEC JVM98), de servidores web (SPECweb99_SSL, SPECweb99 y SPECweb96), un benchmark para servidor de correos (el SPEC MAIL2001) y uno de sistemas de red (el SPEC SFS97_R1). Por otra parte, tiene una serie de benchmarks más actualmente en desarrollo; entre ellos podemos contar un nuevo benchmark de servidor de correos que incluye el protocolo iMAP.
* High Performance Group(HPG), grupo de alto rendimiento: benchmarking en un ambiente de computación numérico, con énfasis en computación numérica de alto rendimiento. El nicho que intenta cubrir este benchmark incluye sistemas con multiprocesadores simétricos, clusters de estaciones de trabajo, sistemas paralelos con memoria distribuida y las tradicionales supercomputadoras vectoriales y vectoriales paralelas.
* Graphics Performance Characterization (GPC), caracterización del rendimiento de gráficos: benchmarks para subsistemas gráficos, OpenGL y Xwindows.

## SPEC CPU2000

SPEC CPU2000 es un Benchmark producido por la SPEC. Fue creado con el fin de proveer una medida de rendimiento que pueda ser usado para comparar cargas de trabajo intensivas en cómputo en distintos sistemas de computadora. Contiene dos benchmark suites: CINT2000 para medir y comparar el rendimiento de computación intensiva de enteros, y CFP2000 para medir y compara el rendimiento de computación intensiva en flotantes.
La "C" en CINT2000 y CFP2000 denotan que son benchmarks a nivel de componentes, en oposición a benchmarks de todo el sistema. Al ser intensivos en cómputos, miden el rendimiento del procesador de la computadora, la arquitectura de la memoria y el compilador. El CINT2000 y el CFP2000 no fuerzan la entrada/salida (unidades de disco), trabajo en red o gráficos. Si bien pueden utilizarse estos benchmarks para probar un sistema de forma tal que alguno de estos componentes afecte el rendimiento del equipo, no es ese el objetivo de estas suites.

### Contenido

SPEC provee lo siguiente en el paquete CPU2000 (que consta de un solo CD-ROM): las herramientas del CPU2000 para compilar, correr y validar los benchmarks en una variedad de sistemas operativos el código fuente de las herramientas, de manera que puedan ser compiladas para los sistemas no cubiertos por las herramientas pre-compiladas el código fuente de los benchmarks herramientas para la generación de informes de rendimiento reglas de ejecución e informes que definen cómo deberían ser usados los benchmarks para producir resultados estándar la documentación SPEC CPU2000 incluye herramientas para la mayoría de los sistemas operativos Unix y para Windows NT. Productos adicionales para otros sistemas operativos serán lanzados si SPEC detecta suficiente demanda.
CINT2000 contiene 11 aplicaciones escritas en C y una en C++ (252.eon) que son usadas como benchmarks.
Nombre Breve descripción
* 164.gzip Utilidad de compresión de datos.
* 175.vpr Direccionamiento y ubicación de circuitos FPGA.
* 176.gcc Compilador C.
* 181.mcf Resolutor de costo mínimo de flujo de red.
* 186.crafty Programa de ajedrez.
* 197.parser Procesamiento de lenguaje natural.
* 252.eon Efectos producidos por distintas fuentes de luz.
* 253.perlbmk Perl.
* 254.gap Teoría de grupo computacional.
* 255.vortex Base de datos orientada a objetos.
* 256.bzip2 Utilidad de compresión de datos.
* 300.twolf Simulador de ubicación y ruteo.
CFP2000 contiene 14 aplicaciones (seis en Fortran77, cuatro en FORTRAN90 y cuatro en C) que son usadas como benchmarks:
Nombre Breve Descripción
* 168.wupwise Cromodinámica de cuantos.
* 171.swim Modelado de aguas poco profundas.
* 172.mgrid Resolutor de multi-grilla en campos potenciales 3D.
* 173.applu Ecuaciones diferenciales parciales parabólicas/elípticas.
* 177.mesa Biblioteca de gráficos 3D.
* 178.galgel Dinámica de fluidos: análisis de inestabilidad oscilatoria.
* 179.art Simulación de red neuronal: teoría de la resonancia adaptativa.
* 183.equake Simulación de elementos finitos: modelado de terremotos.
* 187.facerec Reconocimientos de imágenes: reconocimiento de rostros.
* 188.ammp Química computacional.
* 189.lucas Teoría de los números: prueba de primalidad.
* 191.fma3d Simulación de elementos finitos en choque.
* 200.sixtrack Modelo de acelerador de partículas.
* 301.apsi Resolutor de problemas de temperatura, viento y distribución de contaminantes.

### Requerimientos

El usuario debe tener corriendo un sistema Unix o Windows NT con compiladores C, C++ y Fortran90 (Fortran77 puede ser usado para algunos benchmarks), una unidad de CD-ROM, y dependiendo del sistema bajo prueba, aproximadamente 1 GB de disco para instalar, construir y ejecutar SPEC CPU2000. Además, una cuestión importante es que se asume que el equipo tiene al menos 256 MB de memoria principal, de tal manera de asegurarse que el benchmark sea intensivo en cómputos (SPEC requiere un gran tamaño de memoria para medir el rendimiento de aplicaciones grandes), o sea, que los fallos de página no tengan efecto en las mediciones.

### Resultados

El SPEC2000 provee cuatro medidas para cada componente (consistente en la media geométrica de los tiempos de ejecución de los programas). Esto es porque tiene dos clasificaciones. La primera es en cuanto a la optimización del compilador por el usuario:
* base ("conservadora"): sirve para encuadrar a los usuarios que compilan con las opciones de optimización generales ofrecidas por el compilador, de manera que tiene una serie de referencias establecidas para usar las opciones del compilador (por ej. deben usarse las mismas opciones en el mismo orden en todos los benchmarks de un mismo lenguaje, no más de cuatro opciones de optimización, y no deben usarse banderas de reivindicación).
* no base ("agresiva"): intenta encuadrar a los usuarios que intentan lograr el mejor rendimiento de sus programas. Son opcionales y tienen requerimientos mucho menos estrictos (por ej. pueden usarse diferentes opciones de compilación para distintos programas escritos en el mismo lenguaje)
La segunda, se refiere a la cantidad de tareas que se corren al mismo tiempo:
* no rate (monotarea): corresponde a la velocidad de ejecución de una sola tarea.
* rate (multitarea): corresponde a la capacidad de la máquina de llevar a cabo un cierto número de tareas similares. Tradicionalmente usado para medir el rendimiento de multiprocesadores.
La combinación de estas dos clasificaciones nos otorga 4 medidas distintas para el CINT2000 y 4 para el CFP2000. SPEC usa una Sun Ultra5 10 con un procesador de 300 MHz como máquina de referencia. Toma aproximadamente dos días hacer una ejecución conforme a SPEC (por lo menos tres repeticiones de cada benchmark para asegurar la validez de los resultados) de CINT2000 y CFP2000 en esta máquina.

### SPEC CPU Search Program (Programa de Búsqueda del SPEC CPU)

El CPU Search Program es auspiciado por el Open System Group (OSG) de la Standard Performance Evaluation Corporation. Fue diseñado para auspiciar y reconocer los logros de la comunidad académica e industrial en la provisión y desarrollo de código de aplicación y conjuntos de datos que puedan ser usados como componentes de la próxima revisión de SPEC CPU benchmark suites.
Por cada etapa del proceso de admisión que se supere, SPEC compensará al dueño del programa (en reconocimiento a su esfuerzo y habilidades). Una propuesta que supere todas las etapas y sea incluido en el próximo SPEC CPU benchmark suite recibirá U$S5.000 y una licencia para el nuevo benchmark suite cuando este sea lanzado.

### Objetivo

Los benchmarks de CPU de SPEC proveen de una medida de rendimiento para comparar sistemas sobre la base de una carga de trabajo intensiva en cómputo bien conocida, con énfasis en la capacidad del procesador del sistema, la jerarquía de memoria y el compilador.
SPEC ha mantenido el principio de que los mejores benchmarks están basados en aplicaciones, y estas aplicaciones pueden provenir de cualquier área de trabajo. Por ejemplo, el actual SPEC CPU2000 suite incluye aplicaciones de las siguientes áreas:
* Teoría de juegos de la IA.
* Compiladores.
* Intérpretes.
* Compresión de datos.
* Bases de datos.
* Predicción del clima.
* Dinámica de fluidos.
* Física.
* Química.
* Procesamiento de imágenes.
SPEC no limita su consideración a solamente estas áreas. Las aplicaciones propuestas pueden provenir de cualquier área o campo de trabajo. La propuesta debe contener una descripción de la utilidad del programa.
Criterios que el SPEC considera importantes para el próximo CPU benchmark suite:
* que el programa sea intensivo en cómputos que sea portable a través de diferentes arquitecturas de hardware y sistemas operativos.
* cuán cerca está el programa del estado actual de desarrollo del campo dado.