我刚刚在两台计算机上安装了Linux和Intel MPI:
(1)非常老(约8年)的SuperMicro服务器,它具有24个内核(Intel Xeon X7542 X 4)。 32 GB内存。 操作系统:CentOS 7.5
(2)新型HP ProLiant DL380服务器,它具有32个内核(Intel Xeon Gold 6130 X 2)。 64 GB内存。 操作系统:OpenSUSE Leap 15
在安装操作系统和英特尔MPI之后,我编译并运行了英特尔MPI基准测试:
$ mpirun -np 4 ./IMB-EXT
运行IMB-EXT和IMB-RMA时,我发现相同的错误,这是非常令人惊讶的,尽管我的操作系统和其他功能都不同(即使用于编译Intel MPI基准测试的GCC版本也不同-在CentOS中,我使用了GCC 6.5.0,在OpenSUSE中,我使用了GCC 7.3.1)。
在CentOS机器上,我得到:
#---------------------------------------------------
# Benchmarking Unidir_Put
# #processes = 2
# ( 2 additional processes waiting in MPI_Barrier)
#---------------------------------------------------
#
# MODE: AGGREGATE
#
#bytes #repetitions t[usec] Mbytes/sec
0 1000 0.05 0.00
4 1000 30.56 0.13
8 1000 31.53 0.25
16 1000 30.99 0.52
32 1000 30.93 1.03
64 1000 30.30 2.11
128 1000 30.31 4.22
在OpenSUSE机器上,我得到
#---------------------------------------------------
# Benchmarking Unidir_Put
# #processes = 2
# ( 2 additional processes waiting in MPI_Barrier)
#---------------------------------------------------
#
# MODE: AGGREGATE
#
#bytes #repetitions t[usec] Mbytes/sec
0 1000 0.04 0.00
4 1000 14.40 0.28
8 1000 14.04 0.57
16 1000 14.10 1.13
32 1000 13.96 2.29
64 1000 13.98 4.58
128 1000 14.08 9.09
当我不使用mpirun时(这意味着只有一个进程可以运行IMB-EXT),基准测试一直在运行,但是Unidir_Put需要> = 2个进程,因此并没有太大帮助,我也发现MPI_Put和MPI_Get的功能比我预期的要慢得多(根据我的经验)。同样,在OpenSUSE计算机上使用MVAPICH也无济于事。输出为:
#---------------------------------------------------
# Benchmarking Unidir_Put
# #processes = 2
# ( 6 additional processes waiting in MPI_Barrier)
#---------------------------------------------------
#
# MODE: AGGREGATE
#
#bytes #repetitions t[usec] Mbytes/sec
0 1000 0.03 0.00
4 1000 17.37 0.23
8 1000 17.08 0.47
16 1000 17.23 0.93
32 1000 17.56 1.82
64 1000 17.06 3.75
128 1000 17.20 7.44
===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 49213 RUNNING AT iron-0-1
= EXIT CODE: 139
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
This typically refers to a problem with your application.
Please see the FAQ page for debugging suggestions
更新:我测试了OpenMPI,并且运行顺利(尽管我的应用程序不建议使用openmpi,但我仍然不明白为什么英特尔MPI或MVAPICH无法正常工作...)
#---------------------------------------------------
# Benchmarking Unidir_Put
# #processes = 2
# ( 2 additional processes waiting in MPI_Barrier)
#---------------------------------------------------
#
# MODE: AGGREGATE
#
#bytes #repetitions t[usec] Mbytes/sec
0 1000 0.06 0.00
4 1000 0.23 17.44
8 1000 0.22 35.82
16 1000 0.22 72.36
32 1000 0.22 144.98
64 1000 0.22 285.76
128 1000 0.30 430.29
256 1000 0.39 650.78
512 1000 0.51 1008.31
1024 1000 0.84 1214.42
2048 1000 1.86 1100.29
4096 1000 7.31 560.59
8192 1000 15.24 537.67
16384 1000 15.39 1064.82
32768 1000 15.70 2086.51
65536 640 12.31 5324.63
131072 320 10.24 12795.03
262144 160 12.49 20993.49
524288 80 30.21 17356.93
1048576 40 81.20 12913.67
2097152 20 199.20 10527.72
4194304 10 394.02 10644.77
是否有可能在这些服务器上安装MPI或安装操作系统时丢失了某些东西?实际上,我认为操作系统是问题所在,但不确定从哪里开始...
非常感谢
Jae
答案 0 :(得分:0)
尽管这个问题写得很好,但您并没有明确表示
要用不同的主机调试这种麻烦,使用多个Linux发行版和编译器版本可能会非常困难。在StackOverflow上进行远程调试更加困难。
首先确保可重复性。似乎是这样。我建议的一种调试方法之一是降低整个系统的复杂性,测试较小的子系统,并开始将责任转移给第三方。您可以将自己编译的可执行文件替换为分发软件/软件包存储库或Conda等第三方提供的软件包。
英特尔最近开始provide its libraries through YUM/APT repos as well as for Conda and PyPI。我发现这对于HPC群集甚至是运行时/开发环境的可重现部署有很大帮助。我建议将它用于CentOS 7.5。
用于英特尔MKL,英特尔IPP,英特尔DAAL和用于Python *(对于Linux *)的英特尔®发行版的YUM / APT存储库:
Conda *软件包/ Anaconda Cloud *支持(英特尔MKL,英特尔IPP,英特尔DAAL,英特尔Python发行版):
使用pip(英特尔MKL,英特尔IPP,英特尔DAAL)从Python软件包索引(PyPI)安装
我对OpenSUSE Leap 15不太了解。