John D. McCalpin 2026-11-05
John D. McCalpin developed STREAM, a benchmark for sustained memory bandwidth using simple operations on large arrays. His reference documentation specifies both execution rules and how the benchmark counts transferred bytes and arithmetic work, making reported rates interpretable.[ref]
For the triad operation on eight-byte values, the conventional accounting counts two reads and one write: 24 bytes per element, with two floating-point arithmetic operations. A measured rate of therefore corresponds to processed elements per second under that accounting. Actual memory-bus traffic can differ because of cache and write policies. The measurement targets data movement through a specified workload, rather than assuming that peak arithmetic throughput predicts application speed.
STREAM 2026-11-05
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.[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 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.