1
我想在linux中使用time命令观察我的MPI程序的性能。它仅显示程序的实际值,用户值和系统值。但是,我应该检查每个进程发生了什么。那么,有没有办法看到我的程序分别为每个进程分配多长时间?如何观察MPI程序所有进程的运行时间
我想在linux中使用time命令观察我的MPI程序的性能。它仅显示程序的实际值,用户值和系统值。但是,我应该检查每个进程发生了什么。那么,有没有办法看到我的程序分别为每个进程分配多长时间?如何观察MPI程序所有进程的运行时间
如果你在前面加上time
到mpiexec
/mpirun
命令,它会告诉你有关命令本身的统计数据:
$ /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
为了分离来自各级的输出,并确定哪个是哪个,并从中排名测量降临时,你可以使用下面的机智H打开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>:
前缀。您也可以编写与选项调用time
写信息到一个文本文件,如包装:
#!/bin/sh
/usr/bin/time -o timing.$OMPI_COMM_WORLD_RANK $*
与mpiexec -n 3 mpitime.sh sleep 1
运行会产生三个文件:timing.0
,timing.1
和timing.2
,包含行列的时机0,1和2.封装脚本必须适用于其他实现。见here。
你是否被限制使用'time'命令(或其他OS命令)?如果你能够改变代码,使用'MPI_Wtime'是一件非常简单的事情,这可能会更准确。 –
我已经使用了下面的解决方案。非常感谢你。 –