内存带宽测试工具-Stream

本文详细介绍了一套名为STREAM的综合性能测试程序集,该程序集由Fortran和C语言编写,专门用于测试计算机系统的内存带宽性能。文章涵盖了STREAM的下载、编译步骤,解释了关键编译参数的作用,如-O3、-mcmodel=medium、-fopenmp等,以及测试原理和结果解读。通过四种数组运算——复制、尺度变换、矢量求和和复合矢量求和,STREAM能够准确评估内存的可持续运行带宽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

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

测试过程:

 

  1. 下载stream.c文件
  2. 使用gcc编译成二进制可执行文件
gcc  -O3 -mcmodel=medium -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=30 -DOFFSET=4096 stream.c -o stream.o

 

关键参数:

 

 -O3 ; 编译器编译优化级别;
-mcmodel=medium ;当单个Memory Array Size 大于2GB时需要设置此参数。
-fopenmp; 适应多处理器环境;开启后,程序默认线程为CPU线程数,
           也可以运行时也可以动态指定运行的进程数 :
           export OMP_NUM_THREADS=12   #12为自定义的要使用的处理器
-DSTREAM_ARRAY_SIZE=100000000;指定计算中a[],b[],c[]数组的大小,
-DNTIMES=30 ;执行的次数,并且从这些结果中选最优值。
-DOFFSET=4096 ;数组的偏移,一般可以不定义。

 

测试原理:

  1. 主要有四种数组的运算,测试到内存带宽的性能,分别是:数组的复制(Copy)、数组的尺度变换(Scale)、数组的矢量求和(Add)、数组的复合矢量求和(Triad)

       2. 数组的值采用了双精度(8个字节)

测试结果:

 

-------------------------------------------------------------
STREAM version $Revision: 5.10 $
-------------------------------------------------------------
This system uses 8 bytes per array element.
-------------------------------------------------------------
Array size = 11029549909 (elements), Offset = 0 (elements)
Memory per array = 84148.8 MiB (= 82.2 GiB).
Total memory required = 252446.4 MiB (= 246.5 GiB).
Each kernel will be executed 30 times.
 The *best* time for each kernel (excluding the first iteration)
 will be used to compute the reported bandwidth.
-------------------------------------------------------------
Number of Threads requested = 40
Number of Threads counted = 40
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 1606530 microseconds.
   (= 1606530 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function    Best Rate MB/s  Avg time     Min time     Max time
Copy:           98431.6     1.856682     1.792847     2.098195
Scale:          77450.3     2.322944     2.278531     2.504460
Add:            87651.4     3.074648     3.020023     3.327516
Triad:          87603.4     3.072721     3.021679     3.305595
-------------------------------------------------------------

 

参考链接:

CPU优化参数:http://gcc.gnu.org/onlinedocs/gcc-4.5.3/gcc/i386-and-x86_002d64-Options.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值