内存带宽读写工具 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#多核测试
测试结果如图


三.总结
以上仅为个人操作和使用流程,欢迎大家共同讨论
本文来自博客园,作者:{小马窝},转载请注明原文链接:{https://www.cnblogs.com/xiaomawo}

浙公网安备 33010602011771号