Stream 该工具用于测试连续内存带宽和相应的简单核向量(simple kernel vector) 综合基准测试工具的计算速度。 CPU 计算速度的增长远远超过内存访问速度 在这种情况下,由于内存带宽的限制,程序的性能会越来越多,而不是 CPU。
链接:
https://pan.baidu.com/s/1O7cPV1ciq_QvKnt94cwZsg
提取码:
rb9x
网络参考:
https://blog.csdn.net/liudong124521/article/details/101205119
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
的大小。
单线程测试指令:
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