2

我想知道如何使用 ltrace 来获取 mpi 应用程序的库函数调用,但只是 ltrace 不起作用,我的 mpirun 无法成功。任何的想法?

4

1 回答 1

5

您应该能够简单地使用:

$ mpiexec -n 4 -other_mpiexec_options ltrace ./executable

但这会造成巨大的混乱,因为不同等级的输出会合并。一个更好的选择是将输出重定向ltrace到每个等级的单独文件。使用一些 MPI 实现很容易获得排名。例如,Open MPI 在环境变量中导出世界排名OMPI_COMM_WORLD_RANK。以下包装脚本会有所帮助:

#!/bin/sh

ltrace --output trace.$OMPI_COMM_WORLD_RANK $*

用法:

$ mpiexec -n 4 ... ltrace_wrapper ./executable

这将生成 4 个跟踪文件,每个等级一个:trace.0trace.1trace.2trace.3.

对于基于它并使用 Hydra PM 导出PMI_RANK的 MPICH 和其他 MPI 实现,上面给出的脚本必须修改并OMPI_COMM_WORLD_RANK替换为PMI_RANK. 还可以编写一个通用包装器,它可以与两个 MPI 实现系列一起使用。

于 2014-09-05T07:54:42.907 回答