【问题标题】:Classifying a program as compute intensive based on performance counters根据性能计数器将程序分类为计算密集型程序
【发布时间】:2014-05-08 17:16:17
【问题描述】:

我试图将少数并行程序归类为计算/内存/数据密集型。我可以根据从 perf 等性能计数器获得的值对它们进行分类吗?这个命令给出了几个值,比如我认为可以用来知道程序是否需要频繁访问内存的页面错误数,否则。

这种方法是否正确且可行。如果没有,有人可以指导我将程序分类为各个类别。

干杯, 克里斯

【问题讨论】:

  • 根据您正在寻找的详细信息的深度,您可能会发现存在的软件包可以满足您的需求。我公司开发的 Allinea 性能报告 (allinea.com/products/performance) 提供了这种分类和分析——它不关注页面错误之类的事情,但它确实分析指令——比如向量操作、内存读取——它还测量并行(MPI ) 沟通。

标签: linux performance parallel-processing profiling perf


【解决方案1】:

是的,理论上你应该能够通过 perf 做到这一点。如果您想分析内存活动,我认为页面错误事件不是要观察的事件。为此,在 Intel 处理器上,您应该使用允许您计算内存流量(分别读/写)的非核心事件。在我的 Westmere-EP 上,这些计数器是 UNC_QMC_NORMAL_READS.ANYUNC_QMC_WRITES_FULL.ANY

以下文章完全解决了您的问题(在英特尔处理器上):

http://spiral.ece.cmu.edu:8080/pub-spiral/pubfile/ispass-2013_177.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    相关资源
    最近更新 更多