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'是一件非常簡單的事情,這可能會更準確。 –
我已經使用了下面的解決方案。非常感謝你。 –