NAS, a C++ program which is a revision of David Bailey's NASA kernel benchmark program.
The NAS benchmark program was developed around 1984, and measured computational performance on a representative range of realistic calculations. One motivation for this benchmark was to move beyond the LINPACK benchmark, which focussed on a single highly structured procedure.
Benchmarking computers has become much more difficult now that memory, I/O, multicores and distributed memory have all become significant factors in computing performance. Nonetheless, the NAS benchmarks provide an interesting insight into the floating point processing power of a system, and so, for this reason, a version of the program has been created that retains the functionality of the original, while being somewhat easier to transfer to other languages.
One might expect comparable numerical performance of C++ and FORTRAN programs. That this does not seem to happen for the C++ and FORTRAN90 versions of NAS reflects, most likely, the fact that the C++ version was "translated" in a fairly straightforward manner, resulting in some awkward and inefficient expressions; in particular, FORTRAN arrays which were multiply-indexed were implemented in C++ as vectors, with the resulting overhead of computing indices explicitly. Thus, it is likely that a more careful revision of the C++ source code would result in substantial performance improvements. I, on the other hand, am simply terribly relieved that the C++ program gets the right answers.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
NAS is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.
LINPACK_BENCH, a C++ program which measures the time taken by LINPACK to solve a particular linear system.