STREAM基准测试的矢量函数

时间:2015-12-03 19:16:36

标签: testing memory stream benchmarking memory-bandwidth

我目前正在为学校做一个小型研究项目,我将测试Hypervisor的内存性能带宽,与其创建和管理的虚拟化机器相比。

由于项目的时间范围,将仅分析STREAM测试的一个矢量函数。我的思考过程是查看“复制”函数的结果,因为这是最基本的函数,它不执行算术,如https://www.cs.virginia.edu/stream/ref.html的底部所述。 毕竟,这是一个内存带宽性能测试。

我还没有发现任何证明或反驳我的理论的谷歌帖子。这里有没有人可以对这个话题有所启发?

1 个答案:

答案 0 :(得分:0)

STREAM复制和其他三个测试通常用普通的C编写,没有明确的向量化。但循环很简单,大多数编译器都能够将它们优化为矢量化变体。 https://www.cs.virginia.edu/stream/ref.html中的内核行是完整的循环代码,有三个数组:abc,大小相同;用一些浮点数据预初始化。向量元素是双(典型的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/