Тест производительности 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 *):
- Установка библиотек производительности Intel® и дистрибутива Intel® для Python* с использованием репозитория YUM
- Установка библиотек производительности Intel® и Intel® Distribution для Python* с использованием репозитория APT
Пакет Conda * / поддержка Anaconda Cloud * (Intel MKL, Intel IPP, Intel DAAL, Intel Distribution для Python):
- Установка дистрибутива Intel для Python и библиотек производительности Intel с Anaconda
- Доступные пакеты Intel можно посмотреть здесь
Установить из индекса пакетов Python (PyPI) с помощью pip (Intel MKL, Intel IPP, Intel DAAL)
Я не очень разбираюсь в OpenSUSE Leap 15.