Stream测试

本文介绍了Stream测试程序,用于衡量内存带宽性能。Stream通过Fortran和C语言实现,包含Copy、Scale、Add和Triad四种运算。测试时数组大小需超过最大Cache的四倍。文章还探讨了编译参数如-O3、-fopenmp等的影响,并展示了实验平台的测试结果,发现优化级别和数组大小对性能有显著影响。

Stream介绍

  1. Stream是什么?Stream为什么重要?

Stream测试是一个简单的综合基准测试程序,它测量可持续的内存带宽(MB/s)。Stream通过fortran和c两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得stream测试例程可以充分发挥出内存的能力。Stream对于CPU的计算能力要求很小,对CPU内存带宽压力很大。

  1. Stream使用介绍

(1)测试内容介绍:

Stream测试得到的是可持续性运行的内存带宽最大值,主要是使用四种数组运算,数组的复制(Copy)、数组的尺度变换(Scale)、数组的矢量求和(ADD)、数组的复合适量求和(Triad)测试内存带宽性能。数组的值采用双精度。


1. Copy 是复制操作

从内存单元中读取一个数,并复制到其他内存单元中。

两次访问内存操作,1R1W。


2.Scale是乘法操作

从内存单元中读取一个数,与常数相乘,得到的记过存到其他内存单元。

两次访问内存操作,1R1W。


3.Add是加法操作

从两个内存单元中分别读取两个数,将其进行加法操作后,得到的结果写入另一个内存单元中。

3次访问内存操作,2R1W。

 
4.Triad是加法、乘法和复制三种操作的结合

 

从内存中读取一个数,与一个常数相乘得到一个乘积,然后从另一个内存单元中读取一个数与刚才乘积结果相加,得到的结果写入内存。

3次访问内存操作,2R1W。

测试的一般规律是Add>Triad>Copy>Scale。因为一次Add和Triad操作都需要三次访问内存,Copy和Scale操作需要进行两次访问内存,访问内存次数越多越能够掩盖访存延迟,带宽越大。

注意:测试时数组大小要大于最大Cache的四倍

(2)编译参数介绍:

-O3:编译器编译优化级别。

-fopenmp:适应多处理器环境;开启后,程序默认线程为CPU线程数。

-DSTREAM_ARRAY_SIZE:指定计算中a[],b[],c[]数组的大小。

-DNTIMES:指定执行的次数,并且从这些结果中选最优值。

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

-mtune=native -march=native通过确定编译机的处理器类型,来选择编译时要调优的CPU。-march=native使用将在选定指令集的约束下生成适合本地机器的优化代码。-mtune=native使用将启用本地机器支持的所有指令子集。

(3)stream源码下载网址:git clone https://github.com/jeffhammond/STREAM

3.Stream测试

  1. 实验平台

处理器:SG2042

L3 Cache:  64MB System Cache

DDR4:32GB 2Rx8 PC4-3200P 4slot

OS:Ubuntu

Kernel:Linux 22.1

GCC: 11.1.0

  1. 编译

gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=35000000 -DNTIMES=50 stream.c -o stream_o3_64

./ stream_o3_64

执行结果如下:

 

理论带宽为 200MHz*16bit*64bit*4/8=102.4GB/S

测试的最大带宽为 46.3GB/S 约为理论带宽的45%

改变编译器优化级别

 

由上图可以看出64线程中使用gcc -o0编译比gcc -o3编译时性能低,原因是使用gcc -o0编译时write操作要经过cache,因此o0优化的Copy和Scale速度比o3优化的Copy和Scale速度慢大约1/3,o0优化的Add和Triad比o3优化的Add和Triad速度慢大约1/4。

改变数组大小,每次增加500万个数组元素

 

 

改变线程数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值