2
我想知道如何使用ltrace获取mpi应用程序的库函数调用,但只是ltrace不起作用,我的mpirun无法成功。 有什么想法?如何为mpi程序使用ltrace?
我想知道如何使用ltrace获取mpi应用程序的库函数调用,但只是ltrace不起作用,我的mpirun无法成功。 有什么想法?如何为mpi程序使用ltrace?
你应该能够简单地使用:
$ 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.0
,trace.1
,trace.2
和trace.3
。
对于基于MPICH和其他MPI实现并使用Hydra PM输出PMI_RANK
和上面给出的脚本必须修改并OMPI_COMM_WORLD_RANK
用PMI_RANK
替换。人们也可以编写一个通用包装器,与两个MPI系列实现一起工作。