当前位置: 首页 > 工具软件 > cstream > 使用案例 >

stream测试

公孙宇
2023-12-01

stream测试

内存带宽性能测试

STREAM是一套综合性能测试程序集,通过fortran和C两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得
STREAM 测试例程可以充分发挥出内存的能力。 STREAM
测试得到的是可持续运行的内存带宽最大值,而并不是一般的硬件厂商提供的理论最大值

软件环境

采用最新的内核版本的linux,测试时系统启动到单用户模式,可以通过编辑/etc/inittab文件,把其中的
id:5:initdefault
编辑为
id:3:initdefault
将一些没有必要的系统守护进程去掉,可以运行ntsysv命令,关闭除了irqbalance和messagebus.之外的系统服务进程,也可以节省系统的资源。

参数

-mtune=native -march=native ; 针对CPU指令的优化,此处由于编译机即运行机器。故采用native的优化方法。

-O3 ; 编译器编译优化级别

-mcmodel=medium ;当单个Memory Array Size 大于2GB时需要设置此参数

-fopenmp; 适应多处理器环境;开启后,程序默认线程为CPU线程数,也可以运行时也可以动态指定运行的进程数: export OMP_NUM_THREADS=12 #12为自定义的要使用的处理器

-DNTIMES 执行次数,并从所有结果中取最优

-DOFFSET=4096 数组的偏移,为了对齐数组内存空间和内存中物理空间,因为CPU在读取内存时不是1bit一bit的读,一般可以不定义,定义后也不一定有效果。主要是由于影响内存分配和物理存储单元的对齐。

注意测试时改变size大小,cpu个数,多测几组数据取平均值

STREAM支持Copy 、Scale 、 Add、 Triad四种操作

Copy操作:

先访问一个内存单元读出其中的值,再将值写入到另一个内存单元

Scale操作:

先从内存单元读出其中的值,作一个乘法运算,再将结果写入到另一个内存单元

Add操作:

先从内存单元读出两个值,做加法运算, 再将结果写入到另一个内存单元

Triad的中文含义是将三个组合起来;本测试中表示的意思是将Copy、Scale、Add三种操作组合起来进行测试。

具体操作方式是:先从内存单元中中读两个值a、b,对其进行乘加混合运算(a + 因子 * b ) ,将运算结果写入到另一个内存单元

 类似资料: