我想知道如何使用 ltrace 获取 mpi 应用程序的库函数调用,但 ltrace 不起作用,我的 mpirun 无法成功。
任何想法?
您应该能够简单地使用:
$ 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 $*
Usage:
$ mpiexec -n 4 ... ltrace_wrapper ./executable
这将生成 4 个跟踪文件,每个等级一个:trace.0
, trace.1
, trace.2
, and trace.3
.
对于 MPICH 和其他基于它并使用 Hydra PM 导出的 MPI 实现PMI_RANK
并且上面给出的脚本必须修改并且OMPI_COMM_WORLD_RANK
替换为PMI_RANK
。人们还可以编写一个适用于这两个 MPI 实现系列的通用包装器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)