【开发工具】【stream】内存带宽测试工具(Stream)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:
【开发工具】嵌入式常用开发工具汇总帖
Stream简介
STREAM是一套综合性能测试程序集,通过fortran和C两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得 STREAM 测试例程可以充分发挥出内存的能力。 STREAM 测试得到的是可持续运行的内存带宽最大值,而并不是一般的硬件厂商提供的理论最大值。
Stream测试原理:
1.主要有四种数组的运算,测试到内存带宽的性能,分别是:数组的复制(Copy)、数组的尺度变换(Scale)、数组的矢量求和(Add)、数组的复合矢量求和(Triad)
2. 数组的值采用了双精度(8个字节)
Stream工具安装
- 下载Stream工具(stream_5.10.tar.gz):https://download.csdn.net/download/Ivan804638781/15447246
- 解压缩
tar -zxvf stream_5.10.tar.gz注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,
它们解压命令有两三个选项是一致的:
xf(v),前者再加上j选项,后者再加上z选项。
- 进入目录
cd stream_5.10
- 编译
gcc -O3 -mcmodel=small -mtune=native -march=native -fopenmp -DSTREAM_ARRAY_SIZE=200000000 -DNTIMES=30 stream.c -o stream.o参数解析:
-O3 ; 编译器编译优化级别;
-mcmodel=small ;当单个Memory Array Size 大于2GB时需要设置此参数。//新的gcc已经不支持‘-mcmodel=medium’参数了,可以改为“-mcmodel=large”、“-mcmodel=small”、“-mcmodel=tiny”
-fopenmp; 适应多处理器环境;开启后,程序默认线程为CPU线程数,也可以运行时也可以动态指定运行的进程数 :export OMP_NUM_THREADS=12 #12为自定义的要使用的处理器
-DSTREAM_ARRAY_SIZE=200000000;指定计算中a[],b[],c[]数组的大小,//这个参数是对测试结果影响最大,也是最需要关注的一个参数,它用来指定计算中a[],b[],c[]数组的大小,且数组的值采用了双精度(8个字节)。数组的维数 STREAM ARRAY_SIZE 定义时需要注意以下几点://一、要充分考虑内存容量的需求,粗略估计是 STREAM ARRAY_SIZE × 8(双精度) × 3 (三个数组)<= 0.6*M;M 是用户的可用内存。//二、要保证测试过程中,使用到的内存容量要大于处理器内的缓存,只有这样才会有内存的操作,而不仅仅是对处理器内缓存的操作。//三、为了保证测试可以持续一段时间,测试过程中内存带宽可以达到一定的最大值, 从而避免得不到实际最大峰值的情况,如果四项测试中有完成时间小于20微秒的情况,就需要适当的增大测试数组的维度 STREAM ARRAY_SIZE。
-DNTIMES=30 ;执行的次数,并且从这些结果中选最优值。
-DOFFSET=4096 ;数组的偏移,一般可以不定义。
- 运行
./stream.o
Ps:
编译可能出现的报错
gcc: error: unrecognized argument in option ‘-mcmodel=medium’
gcc: note: valid arguments to ‘-mcmodel=’ are: large small tiny
原因:
新的gcc已经不支持‘-mcmodel=medium’参数了,可以改为“-mcmodel=large”、“-mcmodel=small”、“-mcmodel=tiny”
Stream工具的使用
编译后执行测试
root@keda-PC:~/stream_5.10# ./stream.o
-------------------------------------------------------------
STREAM version $Revision: 5.10 $
-------------------------------------------------------------
This system uses 8 bytes per array element.
-------------------------------------------------------------
Array size = 200000000 (elements), Offset = 0 (elements)
Memory per array = 1525.9 MiB (= 1.5 GiB).
Total memory required = 4577.6 MiB (= 4.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 = 64
Number of Threads counted = 64
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 283742 microseconds.(= 283742 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: 10011.9 0.341517 0.319619 0.410092
Scale: 12862.1 0.263717 0.248792 0.308815
Add: 12651.1 0.399726 0.379415 0.448929
Triad: 12634.4 0.401277 0.379914 0.441468
-------------------------------------------------------------
Solution Validates: avg error less than 1.000000e-13 on all three arrays
-------------------------------------------------------------
【开发工具】【stream】内存带宽测试工具(Stream)的使用相关推荐
- bandwidth 0.32k 发布,内存带宽测试工具
bandwidth 0.32k 修复了一些小的 AVX 问题. Bandwidth 是一个内存带宽测试的基准工具,但它也可以测量网络带宽.它可以测量每个内存系统的最大内存带宽,包括主内存,L1和L2缓 ...
- Linux下stream内存带宽测试参数和示例详解附源码(总结)
目录 一.简介 二.使用简介 2.1 测试内容简介 2.2 编译参数简介 2.3 具体参数示例 三.源码下载及使用 四.其他相关知识链接 FIO测试硬盘性能参数和实例总结 一.简介 本文通过实例详细讲 ...
- stream.c 内存带宽测试
内存带宽测试工具:stream 介绍 Stream测试是内存测试中业界公认的内存带宽性能测试基准工具,作为衡量服务器内存性能指标的通用工具. 2. 原理 申请了三个巨大的双精度浮点数组a[N], b[ ...
- 4测试命令_局域网带宽测试工具-iPerf3
工具名称:iPerf3 官网: https://iperf.fr/ 简介:用于TCP,UDP和SCTP的终极速度测试工具: 功能:跨平台(Windows,Linux,Android,MacOS X,F ...
- 测试大白菜软件,大白菜memtest内存清理测试工具的简介
我们都知道电脑用久了,系统内存会随着程序的运行而增加垃圾文件,从而影响到电脑性能,虽然很多朋友想着要清理电脑的系统内存,但又苦于不知从何下手,今天就给大家介绍下使用u深度memtest内存清理工具来进 ...
- Android内存压力测试工具(memtester移植)
该文章转载于: android用memtester内存压力测试_W歹匕示申W的博客-CSDN博客 Android内存压力测试工具(memtester移植)_甜牛奶蛋糕的博客-CSDN博客_androi ...
- 带宽测试工具 iperf3
带宽测试工具-iperf3 iperf3是一款带宽测试工具,它支持调节各种参数,比如通信协议,数据包个数,发送持续时间,测试完会报告网络带宽,丢包率和其他参数. 安装 操作系统:centos7.0 软 ...
- oracle 压测工具 ld,ORACLE压力测试工具
Swingbench for oracleRAC使用方法图解 1 Swingbench 简述 1.1 概述 这是Oracle UK的一个员工在一个被抛弃的项目的基础上开发的.目前稳定版本2.2,最新版 ...
- MATLAB/ SIMULINK模型在环MIL测试工具,自动化模型测试工具,自动生成测试报告
MATLAB/ SIMULINK模型在环MIL测试工具,自动化模型测试工具,自动生成测试报告. 软件纯自己编写,经过长时间测试,包教会. 使用简单,可以参考如下截图. ID:9720006772002 ...
最新文章
- Java学习lesson 09
- WindDbug应用
- Zabbix学习之路(一)之Zabbix安装
- 【Visual C++】游戏开发笔记之八——基础动画显示(二)游戏循环的使用
- python + selenium + Js 处理轮动条
- 重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境
- 前端学习(2667):退出编辑状态
- 如何快速在Github找到你想要的东西
- 如何快速地真正的融入IT行业
- 微信小程序实现活动倒计时
- kubeadm部署单Master节点kubernetes集群 1.21.0
- 整蛊系列——使小伙伴的电脑自动关机
- excel转换成html预览,Excel转换成html
- 解决电脑输入法无法切换的问题
- xxljob默认登录_XXL-JOB快速入门
- 运动蓝牙耳机怎么选、几款适合运动的运动耳机
- 【转】机器学习embedding
- Python math.fabs() 方法
- HIVE的搭建配置及关联MySQL
- 如是古籍数字化工具平台介绍---自动秒级识别古籍OCR
热门文章
- 智能文字识别技术-弯曲矫正概述
- 手写Spring-第三章-来填坑吧!有参bean的实例化策略
- NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections不受约束的照片集
- html实用的插件,辅助工具
- Matlab自动驾驶工具箱使用简介
- 用Excel删除列表重复值
- js将一句英文中每个单词的首字母大写,其余字母小写
- 学UI设计得拥有哪些条件才能学会?
- 简洁汉英字典制作(tkinter,开源cedict,python)
- 6_C# 实现VMS客户端——代码架构设计