Loading

内存带宽读写工具 Stream

一.工具介绍

  • 前言

       stream测试得到的是可持续运行的内存带宽最大值,而并不是一般的硬件厂商提供的理论最大值具有如下特点:

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

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

测试内容 解析
Copy  是复制操作,即从内存单元中读取一个数,并复制到其他内存单元中,两次访问内存操作
Scale 是乘法操作,即从内存单元中读取一个数,与常数相乘,得到的记过存到其它单元内存两次访问内存操作 
Add  是加法操作,从两个内存单元中分别读取两个数,将其进行加法操作后,得到的结果写入另一个内存单元中
Tirad 是前面三种的结合,先从内存中读取一个数,与一个常数相乘得到一个乘积,然后从另一个内存单元中读取的结果写入内存,3次访问内存操作  
  • 分析

         一次Add操作需要访问三次内存(两个读操作,一个写操作),Triad操作也需要访问三次内存, Copy和Scale操作需要访问两次内存。单位操作内,访问内存次数越多,越能够掩盖访问内存延迟,带宽越大。

        单核 Stream测试:影响的因素除了内存控制器能力外,还有Core的ROB、Load/Store对其影响,因此不是单纯的内存带宽性能测试。

        多核Stream测试:通过多核同时发出大量内存访问请求,能够更加饱和地访问内存,从而测试到内存带宽的极限性能。

        文章参考https://blog.csdn.net/qq_50550870/article/details/129438422

二.下载和使用方法

#下载连接
wget http://www.cs.virginia.edu/stream/FTP/Code/stream.c
#配置 多核测试
gcc -mtune=native -march=native -O3 -mcmodel=medium  -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=40 stream.c -o stream.o 
#配置 单核测试
gcc -mtune=native -march=native -O3 -mcmodel=medium -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=40 stream.c -o stream.o1
#执行
./stream.o1#单核测试
./stream.o#多核测试

测试结果如图

 

三.总结

以上仅为个人操作和使用流程,欢迎大家共同讨论

posted @ 2024-01-24 15:10  小马窝  阅读(1863)  评论(0)    收藏  举报