我目前正在为学校做一个小型研究项目,与它创建和管理的虚拟机相比,我要测试 Hypervisor 的内存性能带宽。
由于项目的时间框架,将只分析 STREAM 测试的向量函数之一。我的思考过程是查看“复制”函数的结果,因为这是最基本的函数,它不执行任何算术运算,如https://www.cs.virginia.edu/stream/ref 底部所述。 html 毕竟这是内存带宽性能测试。
我还没有找到任何可以证明或反驳我的理论的谷歌帖子。这里有没有人可以对这个话题有所了解?
我目前正在为学校做一个小型研究项目,与它创建和管理的虚拟机相比,我要测试 Hypervisor 的内存性能带宽。
由于项目的时间框架,将只分析 STREAM 测试的向量函数之一。我的思考过程是查看“复制”函数的结果,因为这是最基本的函数,它不执行任何算术运算,如https://www.cs.virginia.edu/stream/ref 底部所述。 html 毕竟这是内存带宽性能测试。
我还没有找到任何可以证明或反驳我的理论的谷歌帖子。这里有没有人可以对这个话题有所了解?
STREAM Copy 和其他三个测试通常用纯 C 编写,没有显式矢量化。但是循环很简单,大多数编译器都能够将它们优化为矢量化变体。https://www.cs.virginia.edu/stream/ref.html中的内核行是循环的完整代码,共有三个数组:a
, b
,c
大小相同;用一些浮点数据预初始化。向量的元素是双精度的(典型值为 8 字节)。
下表显示了在 STREAM 循环的每次迭代中计算了多少字节和 FLOP。该测试由四个内核的多次重复组成,并选择(通常)10 次试验的最佳结果。
------------------------------------------------------------------
name kernel bytes/iter FLOPS/iter
------------------------------------------------------------------
COPY: a(i) = b(i) 16 0
SCALE: a(i) = q*b(i) 16 1
SUM: a(i) = b(i) + c(i) 24 1
TRIAD: a(i) = b(i) + q*c(i) 24 2
------------------------------------------------------------------
该测试的最新变体是 NERSC: http: //www.nersc.gov/users/computational-systems/cori/nersc-8-procurement/trinity-nersc-8-rfp/nersc-8-trinity-benchmarks/stream /和 HPCC: http: //icl.cs.utk.edu/hpcc/均基于http://www.cs.virginia.edu/stream/