并行调试用什么软件好?

计算科学 软件 并行计算
2021-12-09 20:39:45

我现在没有运行任何并行代码,但我预计将来会使用 OpenMP 和 MPI 的混合体运行并行代码。在运行串行项目时,调试器对我来说是非常宝贵的工具。

谁能推荐一个并行调试器(或多个调试器)来调试并行软件?自由软件会更好,但不要犹豫提及有效的商业软件。

4个回答

基本上有两种主要的商业选择:来自 Allinea 的DDT(这是我们在TACC使用的)和 Totalview(如另一条评论中所述)。它们具有类似的功能,都在积极开发,并且是直接竞争对手。

Eclipse 有他们的Parallel Tools Platform,它应该包括 MPI 和 OpenMP 编程支持和一个并行调试器。

我必须给出脾气暴躁的答案。上述任何建议都没有提高我的工作效率。与我的首选并行选项相比,它们既慢又昂贵:每个进程一个 gdb 会话。每个 gdb 都可以连接到 MPI 进程并位于 xterm 中(这在 PETSc 中使用 自动发生-start_in_debugger)。我已经用了 15 年了,很高兴。异议:

1)我看不到全局数据

由于 MPI 是 shared-none 模型,因此没有全局数据,只有本地数据

2) 此策略不适用于大量流程

错误也没有。错误发生在单个进程上,可能来自 1 或 2 个邻居的输入。您可以轻松地仅在参与的进程上生成 gdb(例如,在您使用-debugger_nodes 0,5,17的 PETSc 中)。此外,上述系统在每个进程上运行时都会放弃很多,这使得它们变慢。实际上,gdb 方法的可扩展性要高得多。

gdb 也非常便携。它可以在任何地方运行,理解 C++ 和 Fortran,并允许您在运行中执行任意代码。我编写了特殊的函数来在其中运行时轻松显示数据。

我只对串行和并行程序使用两个调试器:

  1. Kernighan 调试器,即明智的打印语句和仔细的思考。
  2. 如http://www.open-mpi.org/faq/?category=debugging#serial-debuggers所述的 GDB 的多个实例

在(2)不能充分扩展的情况下,我参考(1b)。

英特尔 Parallel Studio包含一个并行调试器我从未使用过它,但我已经看到它在一些演示中使用过。这是一个视频教程,展示了一些功能。

我还看到了一些围绕 gdb 的包装器,它们在某些情况下工作得相当好。