进行循环分析的最佳方法
Posted
技术标签:
【中文标题】进行循环分析的最佳方法【英文标题】:Best way to make loop profiling 【发布时间】:2013-04-18 11:43:28 【问题描述】:我必须更改一个 C/C++ 程序,其中一个函数中有很多循环。我必须添加 cuda 功能。
在我开始进行更改之前,我想花时间检查所有发现的循环。但我没有找到任何能做到这一点的分析程序。最好的方法是什么。我在linux上。如果您有任何解决方案,请告诉我。
在这里你会找到一个工具的例子,它可以制作出我想要的东西,但我还没有找到它或类似的东西:http://carbon.ucdenver.edu/~dconnors/papers/wbia06-loopprof.pdf
【问题讨论】:
为什么不只分析包含循环的函数呢?它们(希望)不包含比循环本身更多的代码,是吗? 您是否已经看过 gprof(假设您使用 gcc 进行 cpming)? 因为结尾只有一个函数,而这个函数包含很多循环。 @ogni42 是的,我看过 gprof,但输出并不是我想要的。 【参考方案1】:我会使用gperftools
,并找出代码大部分时间花在哪里。一旦你确定了一个函数或函数的一部分,你可能就完成了。准确了解函数中哪些指令是“最重的”将需要针对该特定循环长时间运行的测试用例,以便分析器可以为循环中的每条指令(或至少大多数指令)获取足够的数据。但是,如果您想用另一种技术替换代码,实际上分析到指令可能并不相关——替换几行代码的一个循环不太可能有太大帮助,因为开销太大。相反,您想占用更大的块并将其移至 CUDA。
【讨论】:
以上是关于进行循环分析的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章