如何观察MPI程序所有进程的经过时间?

问题描述 投票:1回答:1

我想在linux中使用time命令观察我的MPI程序的性能,它只显示程序的实际值、用户值和系统值。它只显示程序的实际值、用户值和系统值。但是,我应该检查每个进程的情况。那么,有什么方法可以看到我的程序在每个进程上分别花费了多长时间?

linux time parallel-processing mpi
1个回答
2
投票

如果你在前面加上 timempiexecmpirun 命令,它将向您显示有关该命令本身的统计数据。

$ /usr/bin/time -p mpiexec -n 3 sleep 1
real 3.54
user 0.42
sys 0.15

要想让它报告每个MPI等级的统计数字,你应该在前面加上... time 到MPI可执行文件的名称。

$ mpiexec -n 3 /usr/bin/time -p sleep 1
real 1.00
user 0.00
sys 0.00
real 1.00
user 0.00
sys 0.00
real 1.00
user 0.00
sys 0.00

为了从所有的等级中分离输出,并确定哪一个是哪一个,以及哪一个等级的测量结果,你可以在Open MPI中使用以下方法。

$ mpiexec --tag-output -n 3 /usr/bin/time -p sleep 1
[1,1]<stderr>:real 
[1,1]<stderr>:1.00
[1,1]<stderr>:user 0.00
[1,1]<stderr>:sys 0.00
[1,0]<stderr>:real 1.00
[1,0]<stderr>:user 0.00
[1,0]<stderr>:sys 0.00
[1,2]<stderr>:real 1.00
[1,2]<stderr>:user 0.00
[1,2]<stderr>:sys 0.00

现在每一行的前缀是 [1,rank]<stream>:. 你也可以写一个名为 mpitime.sh 该电话 time 的选项,将信息写入文本文件,例如。

#!/bin/sh
/usr/bin/time -o timing.$OMPI_COMM_WORLD_RANK $*

运行与 mpiexec -n 3 mpitime.sh sleep 1 将产生三个文件。timing.0, timing.1timing.2,包含0、1、2级的时间。包装脚本必须适应其他实现。参见 此处.

© www.soinside.com 2019 - 2024. All rights reserved.