我正在運行HPC基準測試(IOR - http://sourceforge.net/projects/ior-sio/)。我編譯了IOR的源代碼並使用openmpi 1.5.3運行它。openmpi:MPI_recv掛起特定進程數
問題是,當進程數(-np
)小於6時,它會掛起,這是奇數。刪除所有其他的事情我周圍的人,我運行的實際命令歸結爲:
/usr/lib64/openmpi/bin/mpirun --machinefile mpi_hosts --bynode -np 16 /path/to/IOR -F -u -t 1m -b 16g -i 1 -o /my/file/system/out_file
附加的過程GDB顯示過程掛起,在MPI_RECV:
#0 0x00007f3ac49e95fe in mlx4_poll_cq() from /usr/lib64/libmlx4-m-rdmav2.so
#1 0x00007f3ac6ce0918 in ??() from /usr/lib64/openmpi/lib/openmpi/mca_btl_openib.so
#2 0x000000385a6f0d5a in opal_progress() from /usr/lib64/openmpi/lib/libmpi.so.1
#3 0x00007f3ac7511e05 in ??() from /usr/lib64/openmpi/lib/openmpi/mca_pml_ob1.so
#4 0x000000385a666cac in PMPI_Recv() from /usr/lib64/openmpi/lib/libmpi.so.1
#5 0x0000000000404bd7 in CountTasksPerNode (numTasks=16, comm=0x628a80) at IOR.c:526
#6 0x0000000000407d53 in SetupTests (argc=11, argv=0x7fffe61fa2a8) at IOR.c:1402
#7 0x0000000000402e96 in main (argc=11, argv=0x7fffe61fa2a8) at IOR.c:134
纔會出現這種問題當-np
是2/3/4/5時。它適用於1/6/7/8/16等
如果我使用簡單的命令,如date
或ls
,我不能重現此問題。所以我不確定這是否是我編譯的環境或IOR二進制文件的問題(非常不可能,因爲同樣發生在舊的/穩定的IOR二進制文件中)。
此外,使用openmpi1.4.3而不是openmpi1.5.3時,會觀察到精確的行爲。
我也嘗試了使用不同數量的主機(--machinefile
參數),並觀察到上述-np
值的相同行爲。 它掛的源代碼行是這樣的:
MPI_Recv(hostname, MAX_STR, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG, comm, &status);
基本上我尋找線索,爲什麼當-np
爲2/3/4/5 MPI_recv()
可能會掛起。請讓我知道是否需要其他信息。謝謝。
它似乎是與InfiniBand相關的問題。調用'mlx4_poll_cq'來輪詢IB HCA的完成隊列,並且由於它掛在接收操作中,這意味着另一方(例如另一個等級)沒有完成發送。檢查您的InfiniBand設備和內核參數。或者,更好的辦法是將問題發佈到[Open MPI Users](http://www.open-mpi.org/community/lists/ompi.php)郵件列表。 –
我也懷疑過。我在當地檢查了HCA,他們似乎沒問題。我不是國際文憑組織的專家,我會向我的工程師尋求幫助。我會在週一再試一次,然後從那裏拿下。感謝您的時間和有用的建議:) –
IOR已經有很長很長的時間了。我懷疑IOR是否存在問題,儘管IOR或任何文件系統基準測試都非常擅長揭露硬件故障。你可能會發現來自github的IOR有一些更好的報告:https://github.com/chaos/ior –