排除并行代码

时间:2013-02-20 08:36:39

标签: c++ multithreading macos parallel-processing profiling

对并行程序进行故障排除有哪些工具?

假设我的代码表现比预期差(4倍,而不是理论8倍的串行版本执行速度)。我怀疑原因是由于线程访问共享变量(比如共享向量的相邻元素)导致的某些锁定,或者线程访问堆(我认为它也是共享资源)导致的锁定。但我不知道有哪些工具可用于检查线程休眠过多,线程切换等原因可能是什么。分析器会告诉我什么函数花了多少时间,也许有很多与线程管理相关的活动,但不是线程的原因和状态是什么(或者我不知道如何使用一个井)。

我在OS X上使用C ++。

1 个答案:

答案 0 :(得分:2)

以下可能是有意义的

Vampir - 花钱

DTrace - 已安装在您的Mac上,提供您需要的工具,但远非开箱即用的解决方案

TAU

这些只是我想到的前三个工具,我相信一些更勤奋的谷歌搜索会出现更多。

您的最终评论或许我不知道如何使用一个做得很好,这些工具通常需要做出重大承诺才能使用它们,了解他们告诉您的内容并做出适当的准备以及对您的计划的性能增强修改。