0
有哪些工具可用于故障排除并行程序?并行代码故障排除
说我有一个比预期更差的代码(4次,而不是理论上的8倍的串行版本执行速度)。我怀疑原因是由访问共享变量的线程(比如共享向量的相邻元素)导致的某种锁定,或者由访问堆的线程(我认为它也是共享资源)导致的锁定。但我不知道有什么工具可用来检查可能导致过多的线程睡眠,线程切换等的原因。 profiler会告诉我哪个函数花了多少时间,也许有很多与线程管理有关的活动,但不是线程的原因和状态(或者我不知道如何使用它)。
我在C++工作在OS X
不错,但没有任何代码没有帮助。这里没有算命先生! – 2013-02-20 08:45:18
如果更多人会说真的很需要,我可以发布一些违规代码,但我在处理一系列问题时询问可用的工具,而不是针对特定问题的解决方案。 – Puchatek 2013-02-20 08:53:32
VS中有一个很好的用于dotnet的并行分析器(显示哪个线程正在等待什么),但我不知道任何其他平台的工具。您始终可以通过为每个可能等待的代码部分(如同步基元)进行计时开始。将测量的等待时间转储到日志。如果出现某种争议,您有机会计算出详细信息。 – 2013-02-20 08:54:55