简介:

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

内存带宽测试工具-Stream相关推荐

  1. bandwidth 0.32k 发布,内存带宽测试工具

    bandwidth 0.32k 修复了一些小的 AVX 问题. Bandwidth 是一个内存带宽测试的基准工具,但它也可以测量网络带宽.它可以测量每个内存系统的最大内存带宽,包括主内存,L1和L2缓 ...

  2. 【开发工具】【stream】内存带宽测试工具(Stream)的使用

    获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中: [开发工具]嵌入式常用开发工具汇总帖 Stream简介 STREAM是一套综合性能测试程序集,通过fortran和C两种高级且高效的语言编写 ...

  3. stream.c 内存带宽测试

    内存带宽测试工具:stream 介绍 Stream测试是内存测试中业界公认的内存带宽性能测试基准工具,作为衡量服务器内存性能指标的通用工具. 2. 原理 申请了三个巨大的双精度浮点数组a[N], b[ ...

  4. 4测试命令_局域网带宽测试工具-iPerf3

    工具名称:iPerf3 官网: https://iperf.fr/ 简介:用于TCP,UDP和SCTP的终极速度测试工具: 功能:跨平台(Windows,Linux,Android,MacOS X,F ...

  5. 测试大白菜软件,大白菜memtest内存清理测试工具的简介

    我们都知道电脑用久了,系统内存会随着程序的运行而增加垃圾文件,从而影响到电脑性能,虽然很多朋友想着要清理电脑的系统内存,但又苦于不知从何下手,今天就给大家介绍下使用u深度memtest内存清理工具来进 ...

  6. Android内存压力测试工具(memtester移植)

    该文章转载于: android用memtester内存压力测试_W歹匕示申W的博客-CSDN博客 Android内存压力测试工具(memtester移植)_甜牛奶蛋糕的博客-CSDN博客_androi ...

  7. 带宽测试工具 iperf3

    带宽测试工具-iperf3 iperf3是一款带宽测试工具,它支持调节各种参数,比如通信协议,数据包个数,发送持续时间,测试完会报告网络带宽,丢包率和其他参数. 安装 操作系统:centos7.0 软 ...

  8. Linux下stream内存带宽测试参数和示例详解附源码(总结)

    目录 一.简介 二.使用简介 2.1 测试内容简介 2.2 编译参数简介 2.3 具体参数示例 三.源码下载及使用 四.其他相关知识链接 FIO测试硬盘性能参数和实例总结 一.简介 本文通过实例详细讲 ...

  9. MLC——内存延迟及带宽测试工具

    why MLC 影响程序性能的两个重要因素: ①应用程序从处理器缓存和从内存子系统获取数据所消耗的时间,其中存在各种延迟: ②带宽b/w(bandwidth 非Bilibili World) mlc正 ...

  10. [转]关于内存泄露测试工具

    From Baidu: 在测试工作中,需要接触到各种类型的测试工具.一般来说,有以下一些类型的工具: 测试管理工具:可以帮助完成测试计划.跟踪测试运行结果等的工具.这类工具还包括有助于需求.设计.编码 ...

最新文章

  1. 《研磨设计模式》chap14 迭代器模式(3) 举例
  2. android任务栈的作用,Android 启动模式以及任务栈
  3. Java中集合(四)LinkedList
  4. Kubernetes权威指南精彩段落
  5. Orchard Core一分钟搭建ASP.NET Core CMS
  6. 第八篇Django分页
  7. 1607: 字符棱形
  8. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
  9. Flutter - Stateful(有状态) 和 stateless(无状态) widgets
  10. LeetCode刷刷记录
  11. linux怎么安装网卡驱动固件,Linux网卡驱动的安装方式
  12. AWR-比较两个阶段性能
  13. 聚类和分类算法的区别
  14. 01 GOF设计模式的定义和分类
  15. 像计算机科学家一样思考(C++)
  16. [2019/12]饮水姑苏,止于至善
  17. 关于sql server中isnull(值,值)是什么意思
  18. 信息系统项目管理师(2022年)—— 重点内容:知识产权与标准规范(22)
  19. 显卡的优化以提高计算机性能作用,NVIDIA控制面板里的“优化以提高计算机性能”是什么功能的?...
  20. iOS源码资源之各种项目源码汇总

热门文章

  1. 神州数码交换机配置基本命令
  2. android 开机启动无效,Android实现开机自启动无效问题
  3. Angular - FormGroup 踩坑合辑之:setValue,patchValue,reset
  4. 电动车结构及其工作原理
  5. 第一届程序设计竞赛题解(G题)
  6. mysql 1698 错误
  7. 计算机磁盘在线分区,电脑硬盘分区知多少 怎么分区才合理?
  8. 计算机系军训口号四句霸气,大一新生军训四句口号霸气押韵
  9. 4款微信公众号编辑器,哪个最好用?
  10. c# 汉语拼音排序函数