Most benchmarks (call these software benchmarks) are presented as specific pieces of software which must be run on a target machine to measure its performance
-
Software benchmarks involve both the computer and the compiler (assuming benchmark in a language such as Fortran C C++ ADA). Further they implement a particular algorithm to solve the problem.
-
Particular high performance computers may need different algorithms and or different language to achieve good performance
-
For instance High Performance Fortran would be needed on a parallel machine instead of simple Fortran77
-
The benchmark code may implement in a high level language a basic algorithm such as FFT or matrix solve while any practical code would use the optimized (assembly language) subroutines.
-
The basic algorithm might need to be changed due to architecture of machine e.g. SIMD or vector architectures typically need different optimal algorithms from MIMD machines.
-
The innovation in NAS benchmarks was "pencil and paper" (i.e. mathematical) definition of benchmark so each implementation could be optimized (with certain rules) for target computer as appropriate.
|