LLMpediaThe first transparent, open encyclopedia generated by LLMs

STREAM Benchmark

Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: NUMA (accelerator) Hop 6 terminal

This article was accepted into the corpus but its outbound wikilinks were never NER-processed — typical at the deepest BFS hop or when the run's entity cap was reached. No expansion funnel to show.

STREAM Benchmark
NameSTREAM Benchmark
DeveloperJohn D. McCalpin
First release1991
Latest releaseongoing
PlatformHigh-performance computing, supercomputers, multicore CPUs, GPUs
LicensePublic domain / permissive

STREAM Benchmark

STREAM Benchmark is a simple synthetic memory bandwidth benchmark widely used to assess sustainable memory throughput on processors and memory subsystems. It measures sequential memory access patterns and produces metrics that researchers and engineers use to compare systems such as supercomputers, clusters, servers, and workstations. STREAM results are frequently cited in performance studies, system procurement, and hardware evaluation across projects and institutions.

Overview

STREAM Benchmark was created to provide a reproducible, portable test for sustainable memory bandwidth and the corresponding computation rate for simple vector kernels. The benchmark reports metrics for four operations—Copy, Scale, Add, and Triad—using large arrays to exceed cache capacities on platforms including Cray, IBM, Intel Corporation, NVIDIA, AMD, Arm Holdings, Fujitsu, Hewlett-Packard Enterprise, Dell Technologies, and Lenovo. STREAM's minimalist design enables comparison across diverse architectures such as TOP500, HPC, Exascale Computing Project, Oak Ridge National Laboratory, Lawrence Livermore National Laboratory, Los Alamos National Laboratory, and academic centers. The benchmark has influenced benchmarks like LINPACK Benchmark, SPEC suites, and workload characterizations used in procurement by agencies such as DARPA and NSF.

History and Development

STREAM Benchmark was developed by John D. McCalpin in the early 1990s to address inconsistent memory bandwidth reporting across vendors such as Sun Microsystems, Silicon Graphics, and DEC. It evolved through community contributions from groups at University of California, Berkeley, Massachusetts Institute of Technology, Stanford University, University of Illinois Urbana-Champaign, and national labs including Argonne National Laboratory. Over time, implementations were optimized for programming models and tools such as OpenMP, MPI, CUDA, OpenCL, Fortran, and C++, with tuning examples provided by vendors like Intel Corporation and NVIDIA. STREAM has been presented at conferences including SC Conference, ISC High Performance, ACM SIGARCH, and workshops associated with the IEEE.

Benchmark Methodology

STREAM Benchmark measures sustained memory bandwidth by running vector kernels on large arrays sized to be larger than available last-level caches, exercising the memory subsystem for steady-state throughput. The methodology specifies operations—Copy (a[j] = b[j]), Scale (a[j] = scalar*b[j]), Add (a[j] = b[j] + c[j]), and Triad (a[j] = b[j] + scalar*c[j])—and requires timed loops, statistical repetition, and reporting of best, average, and standard deviation. Accurate results depend on compiler behavior from vendors like GCC, Clang, Intel Compilers, and runtimes such as libgomp; therefore, methodology guidance covers vectorization, alignment, prefetching, and thread placement for environments managed by SLURM, PBS, or LSF. The benchmark emphasizes reproducibility and cautions about interference from features like NUMA policies, hardware prefetchers, and speculative execution mitigations introduced by Intel Corporation and AMD microarchitectures.

Implementation and Variants

Implementations exist in languages and environments supported by institutions and vendors including National Center for Supercomputing Applications, NERSC, PRACE, Cray Inc., and cloud providers such as Amazon Web Services, Google Cloud Platform, and Microsoft Azure. Variants adapt STREAM to parallel programming models: OpenMP versions for multicore CPUs, MPI hybrids for distributed-memory clusters, CUDA ports for NVIDIA GPUs, HIP for AMD GPUs, and Kokkos or RAJA wrappers used in projects at Sandia National Laboratories and Lawrence Berkeley National Laboratory. Other adaptations target compilers and tools from LLVM, PGI, Arm Compiler, and performance libraries like Intel MKL for integration into benchmarks and suites used by SPEC, E4S, and custom in-house performance labs.

Performance Results and Interpretation

STREAM results are reported in megabytes per second or gigabytes per second for each kernel, typically presenting the best of several runs. Interpretation involves comparing measured bandwidth against theoretical peak memory bandwidth reported by vendors such as Micron Technology, SK Hynix, and Samsung Electronics. Performance depends on factors including memory channels, DIMM configuration, memory frequency, and interconnects such as Intel Omni-Path, InfiniBand, and Ethernet. Studies at University of Cambridge, ETH Zurich, NCSA, and TACC have used STREAM to quantify effects of cache hierarchy, coherence protocols from ARM and x86 ecosystems, and memory technologies like DDR4, DDR5, HBM, and persistent memory such as Intel Optane. Results guide tuning decisions for compilers, operating systems, and firmware from vendors including BIOS/UEFI providers and system integrators like HPE.

Adoption and Use Cases

STREAM is adopted across academic research groups, national laboratories, and commercial vendors to benchmark memory subsystems for systems procured for projects such as Human Brain Project, Square Kilometre Array, Large Hadron Collider, and enterprise analytics clusters used by Google and Facebook. It is used in performance regression testing in continuous integration pipelines at organizations like Red Hat, Canonical, and cloud providers. STREAM also informs curriculum and exercises at universities such as MIT, Carnegie Mellon University, Georgia Institute of Technology, Princeton University, and contributes to performance studies in journals published by ACM and IEEE.

Criticisms and Limitations

Critics note that STREAM's simplicity and focus on sequential access patterns limit its representativeness for complex, pointer-intensive, or irregular workloads common in applications from LLNL or heterogenous stacks used in machine learning frameworks like TensorFlow and PyTorch. It does not capture effects of real application behaviors such as random access, working set temporal locality seen in codes from NASA missions or graph analytics used by companies like LinkedIn. Other limitations include sensitivity to compiler optimizations from GCC and Clang that can elide memory operations, and inability to stress networked storage or capture I/O behaviors measured by tools such as IOzone or fio. Consequently, best practice is to use STREAM alongside microbenchmarks and application-level profiling tools such as perf, VTune, and TAU.

Category:Benchmarks