我正在尝试使用intel vtune Amplifier估算我的应用程序的FLOPS,我在这里使用这篇文章作为指导:https://software.intel.com/en-us/articles/estimating-flops-using-event-based-sampling-ebs/
问题是我在vtune gui中找不到FP_COMP_OPS_EXE事件。当我使用此事件配置运行amplxe-cl时,我收到以下错误:
amplxe:错误:无效事件FP_COMP_OPS_EXE.X87被丢弃。
我正在使用CentOS,我的处理器是intel Xeon
任何帮助将不胜感激
答案 0 :(得分:2)
可用事件集可以在处理器代之间更改。确切地知道您的处理器名称非常重要。 您提到的事件适用于Intel Xeon v2(基于Ivybridge),您可以使用以下公式来衡量浮点运算的数量: FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + 4 * FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + 8 * SIMD_FP_256.PACKED_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE + 2 * FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + 4 * SIMD_FP_256.PACKED_DOUBLE + FP_COMP_OPS_EXE.X87
对于基于Haswell的处理器(Xeon v3),没有此类事件,并且无法进行FLOP计算。
对于以Broadwell为基础的公式将如下: FP_ARITH_INST_RETIRED.SCALAR_SINGLE + 4 * FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + INST_RETIRED.X87