# SPECfp

SPECfp is a computer benchmark designed to test the floating-point performance of a computer. It is managed by the Standard Performance Evaluation Corporation. SPECfp is the floating-point performance testing component of the SPEC CPU testing suit. The first standard SPECfp was released in 1989 as SPECfp89. Later it was replaced by SPECfp92, then SPECfp95, then SPECfp2000, then SPECfp2006, and finally SPECfp2017.

## Background

SPEC CPU2017 is a suite of benchmark applications designed to test the CPU performance. The suite is composed of two sets of tests. The first being CINT (aka SPECint) which is for evaluating the CPU performance in integer operations. The second set is CFP (aka SPECfp) which is for evaluating the CPU floating-point operations performance.
The benchmark applications are programs that perform a strict set of operation that simulate real time situations, such as physical simulations, 3D graphics, and image processing. These applications are written in different programming languages, C, C++ and Fortran. Many SPECfp benchmark applications are derived from applications that are freely available to the public and each application is assigned a weight based on its importance.
To compute the SPECfp score, benchmark applications run on a reference machine and the time each application requires for completion is recorded as the reference time. When evaluating the performance of another machine, the benchmark application is run on that system and the time the application requires for completion is recorded. Then the ratio between the recorded time and the reference time is computed. The geometric mean of all the benchmark suite application ratios is then computed as the SPECfp score.
For example, 126.gcc application takes 1280 seconds to complete on the AlphaStation 200 4/100, while it takes 1700 seconds on the reference machine. So, the ratio is: 1700/1280 = 1.328, which implies that AlphaStation 200 4/100 is 32.8% faster than the reference machine in running the 126.gcc.

## SPECfp2017

The SPECfp2017 test is organized in 2 suites: SPECrate 2017 Floating Point and SPECspeed 2017 Floating Point containing in total 23 benchmark programs, designed to evaluate the floating-point operations performance of a given system. The suite was released on June 2, 2017 replacing SPECfp2006 as of January 2018.

## SPECfp2006

The SPECfp2006 test suite contains 17 benchmark programs, designed to evaluate the floating-point operations performance of a given system. Three of these programs are written in C, four are written in C++, six are written in Fortran, and four are written in both C and Fortran. The suite was released on August 24, 2006 replacing SPECfp2000 as of February 2007.

### Benchmarks

The benchmark programs are:
| Benchmark | Language | Category | Description |
| 410.bwaves | Fortran | Fluid Dynamics | Simulates 3D transonic transient laminar viscous flow. |
| 416.gamess | Fortran | Quantum Chemistry | Self-consistent field computations are performed using Restricted open-shell Hartree–Fock, the Restricted Hartree Fock method, and Multi-Configuration Self-Consistent Field |
| 433.milc | C | Physics: Quantum Chromodynamics | A program that generates gauge field for lattice gauge theory programs with dynamical quarks. |
| 434.zeusmp | Fortran | Physics/ CFD | A computational fluid dynamics program developed at NCSA( University of Illinois at Urbana-Champaign) for the simulation of astrophysical phenomena. |
| 435.gromacs | C/ Fortran | Biochemistry/ Molecular Dynamics | Computes Newtonian equations of motion for hundreds to millions of particles. It simulates protein Lysozyme in a solution. |
| 436.cactusADM | C/ Fortran | Physics/ General Relativity | Simulates the Einstein evolution equations using a staggered-leapfrog numerical method |
| 437.leslie3d | Fortran | Fluid Dynamics | Computational Fluid Dynamics (CFD) using Large-Eddy Simulations with Linear-Eddy Model in 3D. Uses the MacCormack Predictor-Corrector time integration scheme. |
| 444.namd | C++ | Biology/ Molecular Dynamics | Simulates large biomolecular systems. The simulation has 92,224 atoms of apolipoprotein A - I. |
| 447.dealII | C++ | Finite Element Analysis | Computes adaptive finite elements and error estimation. The simulation solves a Helmholtz-type equation with non-constant coefficients. |
| 450.soplex | C++ | Linear Programming, Optimization | Solves a linear program using a simplex algorithm and sparse linear algebra. Test simulation include railroad planning and military airlift models. |
| 453.povray | C++ | Image Ray-tracing | The computation is a 1280x1024 anti-aliased image of a landscape with some abstract objects with textures using a Perlin noise function. |
| 454.Calculix | C/ Fortran | Structural Mechanics | Computes finite element code for linear and nonlinear 3D structural applications. Uses the SPOOLES solver library. |
| 459.GemsFDTD | Fortran | Computational Electromagnetics | Simulates the Maxwell equations in 3D using the finite-difference time-domain (FDTD) method. |
| 465.tonto | Fortran | Quantum Chemistry | The simulation places a constraint on a molecular Hartree–Fock wave function calculation to better match experimental X-ray diffraction data. |
| 470.lbm | C | Fluid Dynamics | Implements the "Lattice-Boltzmann Method" to compute incompressible fluids in 3D |
| 481.wrf | C/ Fortran | Weather | Weather Prediction and Weather modeling from scales of meters to thousands of kilometers. The simulation is from a 30 km area over 2 days. |
| 482.sphinx3 | C | Speech recognition | A widely known speech recognition system developed by Carnegie Mellon University |

## SPECfp2000

The SPECfp2000 test suite contains 14 benchmark programs, designed to evaluate the floating-point operations performance of a given system. Four of these programs are written in C, six are written in Fortran 77, and four are written in Fortran 90. The suite was released on December 30, 1999 replacing SEPCfp95 as of July 2000. This suite is currently retired.

### Benchmarks

The benchmark programs are:
| Benchmark | Language | Category | Description |
| 168.wupwise | Fortran 77 | Physics / Quantum Chromodynamics | A Wuppertal Wilson Fermion Simulator in the area of lattice gauge theory (quantum chromodynamics). |
| 171.swim | Fortran 77 | Shallow Water Modeling | Weather prediction program for benchmarking the performance of current supercomputers. |
| 172.mgrid | Fortran 77 | Physics Multi-grid Solver: 3D Potential Field | Computes a three-dimensional potential field using a very simple multigrid solver. |
| 173.applu | Fortran 77 | Parabolic / Elliptic Partial Differential Equations | Simulates five coupled nonlinear PDE's, on a 3-dimensional logically structured grid, using an implicit pseudo-time marching scheme, based on two-factor approximate factorization of the sparse Jacobian matrix. |
| 177.mesa | C | 3-D Graphics Library | Program that is a free OpenGL work-alike library. |
| 178.galgel | Fortran 90 | Computational Fluid Dynamics | Performs numerical analysis of oscillatory instability of convection in low-Prandtl-number fluids |
| 179.art | C | Image Recognition / Neural Networks | Recognizes objects in a thermal images using The Adaptive Resonance Theory 2 (ART 2) neural network. |
| 183.equake | C | Seismic Wave Propagation Simulation | Computes the propagation of elastic waves in large, highly heterogeneous valleys, such as California's San Fernando Valley, or the Greater Los Angeles Basin. |
| 187.facerec | Fortran 90 | Image Processing: Face Recognition | This program performs face recognition system. |
| 188.ammp | C | Computational Chemistry | This program computes molecular dynamics (i.e. solves the ODE defined by Newton's equations for the motions of the atoms in the system) on a protein-inhibitor complex which is embedded in water. |
| 189.lucas | Fortran 90 | Number Theory / Primality Testing | Computes the Lucas-Lehmer test to check primality of Mersenne numbers 2^p-1, using arbitrary-precision (array-integer) arithmetic. |
| 191.fma3d | Fortran 90 | Finite-element Crash Simulation | This program computes the inelastic, transient dynamic response of three-dimensional solids and structures subjected to impulsively or suddenly applied loads. |
| 200.sixtrack | Fortran 77 | High Energy Nuclear Physics Accelerator Design | Simulates the tracking of variable number of particles for a variable number of turns round a model of a particle accelerator. |
| 301.apsi | Fortran 77 | Meteorology: Pollutant Distribution | Attempts to solve for the mesoscale and synoptic variations of potential temperature, U AND V wind components, and the mesoscale vertical velocity W pressure and distribution of pollutants C having sources Q. |

## SPECfp95

The SPECfp95 test suite contains 10 benchmark programs, designed to evaluate the floating-point operations performance of a given system. The suite was released in March 1995 replacing SEPCfp92 as of September 1995. This suite is currently retired.

### Benchmarks

The benchmark programs are:
| Benchmark | Category |
| 101.tomcatv | Vectorized mesh generation. |
| 102.swim | Shallow water equations. |
| 103.su2cor | Monte-Carlo method. |
| 104.hydro2d | Navier Stokes equations. |
| 107.mgrid | 3D potential field. |
| 110.applu | Partial differential equations. |
| 125.turb3d | Turbulence modeling. |
| 141.apsi | Weather prediction. |
| 145.fpppp | Image From Gaussian series of quantum chemistry benchmarks. |
| 146.wave5 | Maxwell's equations. |

## SPECfp92

The SPECfp92 test suite contains 14 benchmark programs, designed to evaluate the floating-point operations performance of a given system. Twelve of these programs are written in Fortran, and two are written in C. The suite was released in 1995 replacing SPECfp89. With the release of this suite, the Baseline rule was introduced; in which vendors are no longer allowed to optimize the compilation of the code without reporting it. This suite is currently retired.

### Benchmarks

The benchmark programs are:
| Benchmark | Language | Category |
| 013.spice2g6 | Fortran | Analog circuits (double precision) |
| 015.doduc | Fortran | Monte-Carlo simulation |
| 034.mdljdp2 | Fortran | Atoms interacting through the idealized Lennard-Jones potential |
| 039.wave5 | Fortran | Maxwell's equations on a Cartesian mesh |
| 047.tomcatv | Fortran | Two-dimensional, boundary-fitted coordinate systems around general geometric domains. |
| 048 ora | Fortran | Rays through an optical surface |
| 052.alvinn | C | Neural network using back propagation |
| 056.ear | C | Simulates the human ear by converting a sound file to a cochleogram using Fast Fourier Transforms and other math library functions |
| 077.mdljsp2 | Fortran | Motion equations for a model of 500 atoms |
| 078.swm256 | Fortran | Shallow water equations using finite difference approximations |
| 089.su2cor | Fortran | Masses of elementary particles in the framework of the Quark Gluon theory. |
| 090.hydro2d | Fortran | Hydrodynamical Navier Stokes equations to calculate galactical jets |
| 093.nasa7 | Fortran | Program kernels of operations used frequently in NASA applications |
| 094.fpppp | Fortran | Multi-electron integral derivatives |