##> 128时,英特尔MPI基准测试失败:IMB-EXT

时间:2018-11-01 07:45:47

标签: parallel-processing mpi openmpi mvapich2 intel-mpi

我刚刚在两台计算机上安装了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

1 个答案:

答案 0 :(得分:0)

尽管这个问题写得很好,但您并没有明确表示

  • 英特尔MPI基准测试(请添加标题)
  • 英特尔MPI
  • 打开MPI
  • MVAPICH
  • 受支持的主机网络结构-用于每个MPI分发
  • 运行MPI基准测试时选择的结构
  • 编译设置

要用不同的主机调试这种麻烦,使用多个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不太了解。