我目前正在为学校做一个小型研究项目,我将测试Hypervisor的内存性能带宽,与其创建和管理的虚拟化机器相比。
由于项目的时间范围,将仅分析STREAM测试的一个矢量函数。我的思考过程是查看“复制”函数的结果,因为这是最基本的函数,它不执行算术,如https://www.cs.virginia.edu/stream/ref.html的底部所述。 毕竟,这是一个内存带宽性能测试。
我还没有发现任何证明或反驳我的理论的谷歌帖子。这里有没有人可以对这个话题有所启发?
答案 0 :(得分:0)
STREAM复制和其他三个测试通常用普通的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/