Background of the NAS Kernels
The "NAS Kernel Benchmark Program" contains 7 tests assembled in 1984
by NASA-Ames to represent their CFD computational requirements. The tests are
Fortran subroutines dominated by 64-bit floating point arithmetic,
and contain nested loops operating on multidimensional arrays.
Each of the tests performs an error check and a MFLOPS calculation based on
execution time and operation count. A total MFLOPS calculation is also
computed, based on the aggregate time and operation count of all 7 tests.
These NAS Kernels are not to be confused with the "NAS Parallel Kernels",
a different set of tests released more recently for testing massively
parallel systems.
Although developed on Crays and suitable for vector and parallel compiler
optimizations, the kernels contain several undesirable characteristics for
supercomputer architectures, such as non-stride-1 inner loops, power-of-2
array dimensions and strides, and loops with small iteration counts.
This makes them an interesting set of tests for investigating the performance
characteristics of processors, cache/memory systems, parallel architectures,
and optimizing compilers.
Because they are compact and well-structured, they make good examples
for illustrating the tuning techniques suitable for a given system.
In addition, since they run in a short amount of time and test themselves
for correctness, they are also ideal examples for experimentation and learning.
The names and descriptions of the kernels are:
Name Description
MXM Matrix Multiply
CFFT2D Complex 2D FFT
CHOLSKY Cholesky Decomposition/Solution of Banded Systems
BTRIX Block Tridiagonal Solver
GMTRY Generate Solid-Related Matrix, Gaussian Eliminate
EMIT Emit Vortices, Pressure, Forces
VPENTA Vectorized Inversion of 3 Pentadiagonals