Тест производительности Intel MPI завершается с ошибкой, когда # байтов> 128: IMB-EXT

Я только что установил Linux и Intel MPI на две машины:

(1) Довольно старый (~8 лет) сервер SuperMicro, имеющий 24 ядра (Intel Xeon X7542 X 4). 32 ГБ памяти. ОС: CentOS 7.5

(2) Новый сервер HP ProLiant DL380, имеющий 32 ядра (Intel Xeon Gold 6130 X 2). 64 ГБ памяти. ОС: OpenSUSE Leap 15

После установки ОС и Intel MPI я скомпилировал эталонный тест Intel MPI и запустил его:

$ mpirun -np 4 ./IMB-EXT

Весьма удивительно, что я нахожу ту же ошибку при запуске IMB-EXT и IMB-RMA, хотя у меня другая ОС и все (даже версия GCC, используемая для компиляции теста Intel MPI, отличается - в 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 работает намного медленнее, чем я ожидал (из моего опыта). Кроме того, использование MVAPICH на машине OpenSUSE не помогло. Выход:

#---------------------------------------------------
# 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, и я до сих пор не понимаю, почему Intel 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 ответ

Although this question is well written, you were not explicit about

  • Intel MPI benchmark (please add header)
  • Intel MPI
  • Open MPI
  • MVAPICH
  • supported host network fabrics - for each MPI distribution
  • selected fabric while running MPI benchmark
  • Compilation settings

Debugging this kind of trouble with disparate host machines, multiple Linux distributions and compiler versions can be quite hard. Remote debugging on Stackru is even harder.

Прежде всего, обеспечить воспроизводимость. Кажется, это так. Один из многих подходов к отладке, который я бы порекомендовал, - это уменьшить сложность системы в целом, протестировать небольшие подсистемы и начать перекладывать ответственность на третьих лиц. Вы можете заменить самоскомпилированные исполняемые файлы на пакеты программ, предоставляемые дистрибутивами программного обеспечения / репозиториев пакетов или сторонними организациями, такими как Conda.

Недавно Intel начала предоставлять свои библиотеки через репозитории YUM/APT, а также для Conda и PyPI. Я обнаружил, что это очень помогает в воспроизводимых развертываниях кластеров HPC и даже сред выполнения / разработки. Я рекомендую использовать его для CentOS 7.5.

Хранилище YUM/APT для Intel MKL, Intel IPP, Intel DAAL и Intel® Distribution для Python* (для Linux *):

Пакет Conda * / поддержка Anaconda Cloud * (Intel MKL, Intel IPP, Intel DAAL, Intel Distribution для Python):

Установить из индекса пакетов Python (PyPI) с помощью pip (Intel MKL, Intel IPP, Intel DAAL)

Я не очень разбираюсь в OpenSUSE Leap 15.

Другие вопросы по тегам