我有一个编译和运行的 MPI 程序,但我想逐步完成它以确保没有发生任何奇怪的事情。理想情况下,我想要一种将 GDB 附加到任何特定进程的简单方法,但我不确定这是否可行或如何实现。另一种方法是让每个进程将调试输出写入单独的日志文件,但这并没有真正提供与调试器相同的自由。
有更好的方法吗?你如何调试 MPI 程序?
最佳答案
正如别人所说,TotalView是这个的标准。但它会花费你一条胳膊和一条腿。
OpenMPI 站点有一个很棒的 FAQ on MPI debugging . FAQ 中的第 6 项描述了如何将 GDB 附加到 MPI 进程。通读全文,有一些很棒的提示。
但是,如果您发现要跟踪的进程太多,请查看 Stack Trace Analysis Tool (STAT) .我们在 Livermore 使用它来从潜在的数十万个正在运行的进程中收集堆栈跟踪,并将它们智能地呈现给用户。它不是一个全功能的调试器(一个全功能的调试器永远不会扩展到 208k 核),但它会告诉你哪些进程组在做同样的事情。然后,您可以在标准调试器中逐步查看每个组的代表。
关于debugging - 如何调试 MPI 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/329259/