NAS Parallel Benchmarks (NPB) are a set of benchmarks targeting performance evaluation of highly parallel supercomputers. They are developed and maintained by the NASA Advanced Supercomputing (NAS) Division (formerly the NASA Numerical Aerodynamic Simulation Program) based at the NASA Ames Research Center. NAS solicits performance results for NPB from all sources.
History
Motivation
Traditional benchmarks that existed before NPB, such as the Livermore loops, the LINPACK Benchmark and the NAS Kernel Benchmark Program, were usually specialized for vector computers. They generally suffered from inadequacies including parallelism-impeding tuning restrictions and insufficient problem sizes, which rendered them inappropriate for highly parallel systems. Equally unsuitable were full-scale application benchmarks due to high porting cost and unavailability of automatic software parallelization tools. As a result, NPB were developed in 1991 and released in 1992 to address the ensuing lack of benchmarks applicable to highly parallel machines.
NPB 1
The first specification of NPB recognized that the benchmarks should feature
- new parallel-aware algorithmic and software methods,
- genericness and architecture neutrality,
- easy verifiability of correctness of results and performance figures,
- capability of accommodating new systems with increased power,
- and ready distributability.
In the light of these guidelines, it was deemed the only viable approach to use a collection of "paper-and-pencil" benchmarks that specified a set of problems only algorithmically and left most implementation details to the implementer's discretion under certain necessary limits.
NPB 1 defined eight benchmarks, each in two problem sizes dubbed Class A and Class B. Sample codes written in Fortran 77 were supplied. They used a small problem size Class S and were not intended for benchmarking purposes. came with source code implementations for five out of eight benchmarks defined in NPB 1 to supplement but not replace NPB 1. It extended the benchmarks with an up-to-date problem size Class C. It also amended the rules for submitting benchmarking results. The new rules included explicit requests for output files as well as modified source files and build scripts to ensure public availability of the modifications and reproducibility of the results. NPB 2.4 of 2002 offered a new MPI implementation and introduced another still larger problem size Class D. Java and High Performance Fortran. These new parallel implementations were derived from the serial codes in NPB 2.3 with additional optimizations. which, however, were not available across all implementations; NPB 3.3 introduced a Class E problem size.
The benchmarks
As of NPB 3.3, eleven benchmarks are defined as summarized in the following table.
{| class="wikitable"
! Benchmark !! Name derived from
