1)测试用例介绍
Stream 工具是一个用于测试持续内存带宽及相应简单核向量(simple kernel vector) 运算速度的综合基准测试工具。计算机 CPU 运算速度的增长远超过内存访问速度的增 长,在这样的情况下,越来越多程序的性能会因为内存带宽受到限制而非 CPU。
2)测试用例下载
链接:
https://pan.baidu.com/s/1O7cPV1ciq_QvKnt94cwZsg
提取码:
rb9x
网络参考:
https://blog.csdn.net/liudong124521/article/details/101205119
3)测试参数指导
编译示例:
gcc -O2 -fopenmp
-DSTREAM_ARRAY_SIZE=357800000 -DNTIMES=10 -
mcmodel=large -o stream8g stream-5.10.c
--O2
:优化等级,优化包括精简操作指令、通过对程序行为的分析,调整代码的执
行顺序、充分使用寄存器等等,优化等级包括
O0
、
O1
、
O2
、
O3
;
--fopenmp
:使用
omp
功能,适应多处理器环境,开启后程序默认线程数为
CPU
线
程数,可以通过
OMP_NUM_THREADS
环境变量指定线程数;
--mcmodel
:
large
解除最大内存的限制;
--o
:指定输出文件名;
--DNTIMES
:执行次数,默认为
10
次;
--DSTREAM_ARRAY_SIZE
:数组大小
规模计算方法:
a)
规模计算公式:
(3.0 * BytesPerWord) * ( (double) STREAM_ARRAY_SIZE ))
STREAM_ARRAY_SIZE
:进行运算的数组大小,是一个宏定义,数组大小对测
试结果影响较大,为使带宽值最大数组大小要大于缓存的
4
倍。
b) BytesPerWord=sizeof(double)
:
32
位、
64
位系统中
double
类型均占
8
字节
3.0
:表示有
3
个
STREAM_ARRAY_SIZE
。
c)
测试总规模大小:数组大小要大于缓存的
4
倍,总规模大小要小于等于内存的
60%
,且运算时间要大于
20ms
。
例如:
A * 1024 * 1024 * 1024 = 3 * 8 * N
A
表示测试规模大小,
N
表示
STREAM_ARRAY_SIZE
的大小。
4)测试指令指导
单线程测试指令:
export OMP_NUM_THREADS=1
./stream8g
64
线程测试指令:(FT-2000+/64&S2500单路)
export OMP_NUM_THREADS=64
export GOMP_CPU_AFFINITY=0-63
./stream8g
128
线程测试指令:
(S2500
双路
)
export OMP_NUM_THREADS=128
export GOMP_CPU_AFFINITY=0-127
./stream8g
256
线程测试指令: (S2500 四路)
export OMP_NUM_THREADS=256
export GOMP_CPU_AFFINITY=0-255
./stream8g