NAS-IS Benchmark

From Mesham
Jump to navigationJump to search


NASA's Parallel Benchmarks (NPBs) are a common, convenient way of evaluating performance of different classes of machine. By using the official NASA implementation it is possible to evaluate Mesham against that of existing languages. To date the evaluation has been done against NASA's C-MPI code, which is the most common, and arguable most efficient, language choice in parallel computing.

There are numerous benchmarks in the NPB suite, to date we have implemented benchmark IS (Integer Sort), which will sort numbers, in parallel, using a modified version of the bucket sort algorithm. This benchmark has five classes associated with it - class S with 65,000 numbers, class W with 1,000,000 numbers, class A with 8,000,000 numbers, class B with 33,000,000 numbers and lastly class C with 340,000,000 numbers. We have performed evaluation using class B and C, which involves sorting the greatest amount of numbers and hence the largest challenge, although all classes are supported by the benchmark code.

The benchmark has been tuned for performance, this does mean that some of the more low level primitive communication types have been used and hence is not as easily readable as many of the other examples. Having said that, it has not taken long to write and is easy modifiable if required.

Performance Results

Performance tests were done using a super computer cluster, testing the Mesham code against existing NASA C-MPI parallel code, both of which have been tuned for performance.

NASA's Parallel Benchmark IS class C
NASA's Parallel Benchmark IS class B
NASA's Parallel Benchmark IS Total Million Operations per Second
NASA's Parallel Benchmark IS Million Operations per Second per Process

Source Code

The source code is more extensive than other examples, with combination files for each class of experiment. It is therefore not included on this page but you can download it.


You can download the entire code package for the current version of the compiler here and for the older 0.5 version here