STREAM (source code)

= STREAM
{c}

<STREAM> is a benchmark for sustained <memory bandwidth> using simple operations on large <arrays>. Its Copy, Scale, Add and Triad kernels exercise different combinations of reads, writes and arithmetic. Working sets must exceed the available <memory cache> sufficiently to characterize transfers beyond it, rather than merely repeated access to cached values.<STREAM Benchmark Reference Information by John D. McCalpin>[What is STREAM?, Run Rules and Counting Bytes and FLOPS]{ref}

For eight-byte elements, Triad computes `a[i]=b[i]+s*c[i]`: two loads and one store give 24 requested <bytes> and two floating-point operations per element. Ten million elements therefore account for 240 million requested <bytes>. An elapsed time of 0.01 <seconds> would give $24\times10^9$ <bytes> per <second> under that counting convention. This is a stipulated calculation, not a measured machine result. Physical bus traffic can differ because of cache behavior, so a bandwidth report must state its convention and test configuration.