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