如何在mpi程序中使用ltrace?

时间:2014-09-05 04:19:05

标签: mpi ltrace

我想知道如何使用ltrace来获取mpi应用程序的库函数调用,但只是ltrace没有工作,我的mpirun无法成功。 有什么想法吗?

1 个答案:

答案 0 :(得分: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

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