内存带宽性能测试(STREAM)
STREAM 是业界标准的内存带宽测试工具,通过模拟四种典型的内存访问模式(Copy、Scale、Add、Triad)来评估系统的内存带宽性能(单位:MB/s)。以下是详细说明和操作步骤:
一、STREAM 测试的核心指标
-
四种测试模式
COPY
: 纯内存拷贝(a(i) = b(i)
)SCALE
: 内存拷贝+标量乘法(a(i) = q*b(i)
)ADD
: 内存加法(a(i) = b(i) + c(i)
)TRIAD
: 混合运算(a(i) = b(i) + q*c(i)
)
注:结果以MB/s
为单位,数值越高表示内存带宽性能越强。
-
关键影响因素
- 内存频率、通道数(如双通道 vs 四通道)
- CPU 缓存效率、NUMA 架构优化
- 编译器优化级别(如
-O3
)
二、下载与编译 STREAM
1. 安装依赖(需 GCC 编译器)
# Debian/Ubuntu
sudo apt update && sudo apt install -y gcc
# RHEL/CentOS
sudo yum install -y gcc
2. 下载并编译 STREAM
wget https://www.cs.virginia.edu/stream/FTP/Code/stream.c
gcc -O3 -march=native -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=20 stream.c -o stream
参数说明:
-O3
: 最高优化级别-march=native
: 针对当前 CPU 架构优化-fopenmp
: 启用多线程支持-DSTREAM_ARRAY_SIZE
: 测试数组大小(建议 ≥4×CPU 缓存大小)-DNTIMES
: 测试轮次(取平均值)
三、运行测试
# 单线程测试
export OMP_NUM_THREADS=1
./stream
# 多线程测试(例如 8 线程)
export OMP_NUM_THREADS=8
./stream
典型输出示例:
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 45678.9 0.0351 0.0349 0.0353
Scale: 43821.6 0.0366 0.0365 0.0368
Add: 48912.3 0.0492 0.0490 0.0495
Triad: 49234.7 0.0488 0.0487 0.0490
-------------------------------------------------------------