nas, a MATLAB code 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.

This version of the benchmark runs remarkably poorly under MATLAB. The performance could be greatly improved if effort was made to vectorize some of the code. For example, the matrix multiplication benchmark, which has been vectorized, runs very well.


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.

Related Data and Programs:

linpack_bench, a MATLAB code which measures the time taken by LINPACK to solve a particular linear system.

linpack_bench_backslash, a MATLAB code which carries out the LINPACK benchmark program using MATLAB's "backslash" operator.



  1. David Bailey, John Barton,
    The NAS Kernel Benchmark Program,
    Numerical Aerodynamics Simulations Systems Division,
    NASA Ames Research Center,
    13 June 1986.

Source Code:

Last revised on 08 February 2019.