1.STREAM测试工具介绍
STREAM是业界广为流行的综合性内存带宽实际性能测量工具之一。随着处理器处理
核心数量的增多,内存带宽对于提升整个系统性能越发重要,如果某个系统不能足够
迅速地将内存中的数据传输到处理器当中,若干处理核心就会处于等待数据的闲置状
态,而这其中所产生的闲置时间不仅会降低系统的效率还会抵消多核心和高主频所带
来的性能提升因素。STREAM具有良好的空间局部性,是对TLB友好、Cache友好的一
款测试。STREAM支持Copy、Scale、Add、Triad四种操作。
2.软件下载方法
下载链接:https://github.com/jeffhammond/ STREAM
通过访问上面链接下载.ZIP压缩包。
3.软件安装
3.1 安装步骤
(1)将下载的压缩包"STREAM-master.zip"解压:unzip STREAM-master.zip;
(2)进入解压后的目录:cd STREAM-master
(3)修改Makefile文件:
CC = gcc
CFLAGS = -O3 -fopenmp -DSTREAM_ARRAY_SIZE=64000000 -DNTIMES=30 -mcmodel=medium
#FC = gfortran
#FFLAGS = -O3 -fopenmp -mcpu=native -ffp-contract=fast -fopenmp
all: stream_c.exe
保存退出。
(4)编译程序:执行make命令进行编译,编译后会在当前目录下生成”stream.exe“的可执行文件。
3.2 相关参数介绍
(1) -O3 #使用编译优化选项为O3
(2) -mcmodel=medium #当单个Memory Array Size 大于2GB时需要设置此参数
(3) -fopenmp #适应多处理器环境,开启后,程序默认线程为CPU线程数;也可以运行时动态指定运行的进程数。例如,自定义8个线程运行,可使用环境变量:
export OMP_NUM_THREADS=8
(4)-DSTREAM_ARRAY_SIZE #用于指定stream一次搬运的数据量,其值的设置可以参考 stream.c中的说明
(5)-DNTIMES #执行次数,并从中选出最优的结果
4.stream支持的copy、scale、add、triad四种操作
copy操作:先访问一个内存单元读出其中的值,再将值写入到另一个内存单元。
scale操作:先从内存单元读出其中的值,作一个乘法运算,再将结果写入到另一个内存单元。
add操作:先从内存单元读出两个值,做加法运算,再将结果写入到另一个内存单元。
triad:将以上三种操作组合起来进行测试。
5.测试运行
执行stream.exe(若Makefile文件按照第3步的编写,则默认是所有cpu线程运行测试)。
若想执行单线程测试,则可使用环境变量设置线程数(export export OMP_NUM_THREADS=1)然后再执行。
测试示例: