We present: The Bandwidth Benchmark
The Bandwidth Benchmark is a collection of simple streaming kernels. While it may be used for microbenchmarking, we mainly want to use it in teaching. It is heavily inspired by John McCalpin’s STREAM benchmark.
It comprises eight typical streaming kernels with different data access patterns for measuring sustained main memory bandwidth. As an added benefit, the code is a blueprint for a minimal benchmarking application with a generic makefile and modules for aligned array allocation, accurate timing, and affinity settings. Those components can be used for other benchmarking projects as well.
The main version is implemented in C and can be downloaded from our github page:
A Fortran90 port exists but does not yet have the full functionality.