如何将ltrace用于mpi程序?

如何将ltrace用于mpi程序?,mpi,ltrace,Mpi,Ltrace,我想知道如何使用ltrace来获取mpi应用程序的库函数调用,但ltrace根本不起作用,我的mpirun也无法成功。 有什么想法吗?您应该能够简单地使用: $ mpiexec -n 4 -other_mpiexec_options ltrace ./executable 但这将造成一个巨大的混乱,因为不同级别的输出将合并。更好的选择是将ltrace的输出重定向到每个列组的单独文件。使用一些MPI实现很容易获得排名。例如,Open MPI导出环境变量OMPI\u COMM\u world\u

我想知道如何使用ltrace来获取mpi应用程序的库函数调用,但ltrace根本不起作用,我的mpirun也无法成功。
有什么想法吗?

您应该能够简单地使用:

$ mpiexec -n 4 -other_mpiexec_options ltrace ./executable
但这将造成一个巨大的混乱,因为不同级别的输出将合并。更好的选择是将
ltrace
的输出重定向到每个列组的单独文件。使用一些MPI实现很容易获得排名。例如,Open MPI导出环境变量
OMPI\u COMM\u world\u rank
中的世界排名。以下包装器脚本将有所帮助:

#/垃圾箱/垃圾箱
ltrace—输出跟踪。$OMPI\U COMM\U WORLD\U RANK$*
用法:

$ mpiexec -n 4 ... ltrace_wrapper ./executable
这将生成4个跟踪文件,每个列组一个:
trace.0
trace.1
trace.2
trace.3

对于基于它并使用Hydra PM exports的MPICH和其他MPI实现,必须修改上述脚本,并将其替换为
PMI\u RANK
。还可以编写一个通用包装器,用于两个MPI实现系列