我正在尝试将少数并行程序归类为计算/内存/数据密集型。我可以根据从 perf 等性能计数器获得的值对它们进行分类。这个命令给出了一些值,比如我认为可以用来知道程序是否需要频繁访问内存的页面错误数,否则。
这种方法是否正确且可行。如果没有,有人可以指导我将程序分类到各自的类别。
干杯, 克里斯
答案 0 :(得分:0)
是的,你应该在理论上用perf来做到这一点。如果您想分析内存活动,我认为不会发现页面错误事件。为此,在Intel处理器上,您应该使用允许您计算内存流量的非核心事件(单独读/写)。在我的Westmere-EP上,这些计数器是UNC_QMC_NORMAL_READS.ANY
和UNC_QMC_WRITES_FULL.ANY
以下文章完全解决了您的问题(在英特尔处理器上):
http://spiral.ece.cmu.edu:8080/pub-spiral/pubfile/ispass-2013_177.pdf