ошибка сегментации с использованием заданий openMPI с SLURM

У меня проблема при попытке использовать задания SBATCH slurm или задания SRUN с MPI через infiniband.

OpenMPI установлен, и если я запускаю следующую тестовую программу (называемую hello) с mpirun -n 30 ./hello, она работает.

// compilation: mpicc -o helloMPI helloMPI.c
#include <mpi.h>
#include <stdio.h>
int main ( int argc, char * argv [] )
{
   int myrank, nproc;
   MPI_Init ( &argc, &argv );
   MPI_Comm_size ( MPI_COMM_WORLD, &nproc );
   MPI_Comm_rank ( MPI_COMM_WORLD, &myrank );
  printf ( "hello from rank %d of %d\n", myrank, nproc );
   MPI_Barrier ( MPI_COMM_WORLD );
   MPI_Finalize (); 
   return 0;
}

so :

user@master:~/hello$ mpicc -o hello hello.c
user@master:~/hello$ mpirun -n 30 ./hello
--------------------------------------------------------------------------
[[5627,1],2]: A high-performance Open MPI point-to-point messaging module
was unable to find any relevant network interfaces:

Module: usNIC
  Host: master

Another transport will be used instead, although this may result in
lower performance.
--------------------------------------------------------------------------
hello from rank 25 of 30
hello from rank 1 of 30
hello from rank 6 of 30
[...]
hello from rank 17 of 30

Когда я пытаюсь запустить его через SLURM, я получаю такие ошибки сегментации:

user@master:~/hello$ srun -n 20 ./hello
[node05:01937] *** Process received signal ***
[node05:01937] Signal: Segmentation fault (11)
[node05:01937] Signal code: Address not mapped (1)
[node05:01937] Failing at address: 0x30
[node05:01937] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0)[0x7fcf6bf7ecb0]
[node05:01937] [ 1] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x244c6)[0x7fcf679b64c6]
[node05:01937] [ 2] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x254cb)[0x7fcf679b74cb]
[node05:01937] [ 3] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(ompi_btl_openib_connect_base_select_for_local_port+0xb1)[0x7fcf679b2141]
[node05:01937] [ 4] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x10ad0)[0x7fcf679a2ad0]
[node05:01937] [ 5] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_btl_base_select+0x114)[0x7fcf6c209b34]
[node05:01937] [ 6] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_bml_r2.so(mca_bml_r2_component_init+0x12)[0x7fcf67bca652]
[node05:01937] [ 7] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_bml_base_init+0x69)[0x7fcf6c209359]
[node05:01937] [ 8] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_pml_ob1.so(+0x5975)[0x7fcf65d1b975]
[node05:01937] [ 9] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_pml_base_select+0x35c)[0x7fcf6c21a0bc]
[node05:01937] [10] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(ompi_mpi_init+0x4ed)[0x7fcf6c1cb89d]
[node05:01937] [11] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(MPI_Init+0x16b)[0x7fcf6c1eb56b]
[node05:01937] [12] /home/user/hello/./hello[0x400826]
[node05:01937] [13] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7fcf6bbd076d]
[node05:01937] [14] /home/user/hello/./hello[0x400749]
[node05:01937] *** End of error message ***
[node05:01938] *** Process received signal ***
[node05:01938] Signal: Segmentation fault (11)
[node05:01938] Signal code: Address not mapped (1)
[node05:01938] Failing at address: 0x30
[node05:01940] *** Process received signal ***
[node05:01940] Signal: Segmentation fault (11)
[node05:01940] Signal code: Address not mapped (1)
[node05:01940] Failing at address: 0x30
[node05:01938] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0)[0x7f68b2e10cb0]
[node05:01938] [ 1] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x244c6)[0x7f68ae8484c6]
[node05:01938] [ 2] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x254cb)[0x7f68ae8494cb]
[node05:01940] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0)[0x7f8af1d82cb0]
[node05:01940] [ 1] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x244c6)[0x7f8aed7ba4c6]
[node05:01940] [ 2] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x254cb)[0x7f8aed7bb4cb]
[node05:01940] [ 3] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(ompi_btl_openib_connect_base_select_for_local_port+0xb1)[0x7f8aed7b6141]
[node05:01940] [ 4] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x10ad0)[0x7f8aed7a6ad0]
[node05:01938] [ 3] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(ompi_btl_openib_connect_base_select_for_local_port+0xb1)[0x7f68ae844141]
[node05:01938] [ 4] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_btl_openib.so(+0x10ad0)[0x7f68ae834ad0]
[node05:01938] [ 5] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_btl_base_select+0x114)[0x7f68b309bb34]
[node05:01938] [ 6] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_bml_r2.so(mca_bml_r2_component_init+0x12)[0x7f68aea5c652]
[node05:01940] [ 5] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_btl_base_select+0x114)[0x7f8af200db34]
[node05:01940] [ 6] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_bml_r2.so(mca_bml_r2_component_init+0x12)[0x7f8aed9ce652]
[node05:01938] [ 7] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_bml_base_init+0x69)[0x7f68b309b359]
[node05:01938] [ 8] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_pml_ob1.so(+0x5975)[0x7f68acbad975]
[node05:01940] [ 7] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_bml_base_init+0x69)[0x7f8af200d359]
[node05:01940] [ 8] /opt/cluster/spool/openMPI/1.8/gcc/lib/openmpi/mca_pml_ob1.so(+0x5975)[0x7f8aebb1f975]
[node05:01940] [ 9] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_pml_base_select+0x35c)[0x7f8af201e0bc]
[node05:01938] [ 9] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(mca_pml_base_select+0x35c)[0x7f68b30ac0bc]
[node05:01938] [10] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(ompi_mpi_init+0x4ed)[0x7f68b305d89d]
[node05:01940] [10] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(ompi_mpi_init+0x4ed)[0x7f8af1fcf89d]
[node05:01938] [11] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(MPI_Init+0x16b)[0x7f68b307d56b]
[node05:01938] [12] /home/user/hello/./hello[0x400826]
[node05:01940] [11] /opt/cluster/spool/openMPI/1.8/gcc/lib/libmpi.so.1(MPI_Init+0x16b)[0x7f8af1fef56b]
[node05:01940] [12] /home/user/hello/./hello[0x400826]
[node05:01938] [13] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7f68b2a6276d]
[node05:01938] [14] /home/user/hello/./hello[0x400749]
[node05:01938] *** End of error message ***
[node05:01940] [13] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7f8af19d476d]
[node05:01940] [14] /home/user/hello/./hello[0x400749]
[node05:01940] *** End of error message ***
[node05:01939] *** Process received signal ***
[node05:01939] Signal: Segmentation fault (11)
[node05:01939] Signal code: Address not mapped (1)
[node05:01939] Failing at address: 0x30
[...]etc

Кто-нибудь знает, в чем проблема? Я построил openMPI с поддержкой Slurm и установил ту же версию компиляторов и библиотек, фактически все библиотеки находятся в общей папке NFS, которая монтируется на каждом узле.

примечания:

Он должен использовать infiniband, как он установлен. Но когда я запускаю openmpi с помощью mpirun, я замечаю

[[5627,1],2]: A high-performance Open MPI point-to-point messaging module
was unable to find any relevant network interfaces:

Module: usNIC
  Host: cluster

что, я полагаю, означает "не прохождение бесконечной полосы". Я установил драйверы Infiniband и настроил IP через Infiniband. Slurm настроен для работы с IP-адресами Infiniband: правильная ли это конфигурация?

Заранее спасибо С уважением

РЕДАКТИРОВАТЬ :

Я только что попытался скомпилировать его с помощью MPICH2 вместо openMPI, и он работает с SLURM. Значит, проблема, вероятно, связана с openMPI, а не с конфигурацией Slurm?

РЕДАКТИРОВАТЬ 2: На самом деле, я видел, что при использовании openMPI 1.6.5 (вместо 1.8) с командой SBATCH вместо SRUN мой сценарий выполняется (т.е. он возвращает номер потока, ранг и хост. Но он показывает предупреждения, связанные с поставщиком openfabric и выделение зарегистрированной памяти:

The OpenFabrics (openib) BTL failed to initialize while trying to
allocate some locked memory.  This typically can indicate that the
memlock limits are set too low.  For most HPC installations, the
memlock limits should be set to "unlimited".  The failure occured
here:

  Local host:    node05
  OMPI source:   btl_openib_component.c:1216
  Function:      ompi_free_list_init_ex_new()
  Device:        mlx4_0
  Memlock limit: 65536

You may need to consult with your system administrator to get this
problem fixed.  This FAQ entry on the Open MPI web site may also be
helpful:

    http://www.open-mpi.org/faq/?category=openfabrics#ib-locked-pages
--------------------------------------------------------------------------
--------------------------------------------------------------------------
WARNING: There was an error initializing an OpenFabrics device.

  Local host:   node05
  Local device: mlx4_0
--------------------------------------------------------------------------
Hello world from process 025 out of 048, processor name node06
Hello world from process 030 out of 048, processor name node06
Hello world from process 032 out of 048, processor name node06
Hello world from process 046 out of 048, processor name node07
Hello world from process 031 out of 048, processor name node06
Hello world from process 041 out of 048, processor name node07
Hello world from process 034 out of 048, processor name node06
Hello world from process 044 out of 048, processor name node07
Hello world from process 033 out of 048, processor name node06
Hello world from process 045 out of 048, processor name node07
Hello world from process 026 out of 048, processor name node06
Hello world from process 043 out of 048, processor name node07
Hello world from process 024 out of 048, processor name node06
Hello world from process 038 out of 048, processor name node07
Hello world from process 014 out of 048, processor name node05
Hello world from process 027 out of 048, processor name node06
Hello world from process 036 out of 048, processor name node07
Hello world from process 019 out of 048, processor name node05
Hello world from process 028 out of 048, processor name node06
Hello world from process 040 out of 048, processor name node07
Hello world from process 023 out of 048, processor name node05
Hello world from process 042 out of 048, processor name node07
Hello world from process 018 out of 048, processor name node05
Hello world from process 039 out of 048, processor name node07
Hello world from process 021 out of 048, processor name node05
Hello world from process 047 out of 048, processor name node07
Hello world from process 037 out of 048, processor name node07
Hello world from process 015 out of 048, processor name node05
Hello world from process 035 out of 048, processor name node06
Hello world from process 020 out of 048, processor name node05
Hello world from process 029 out of 048, processor name node06
Hello world from process 016 out of 048, processor name node05
Hello world from process 017 out of 048, processor name node05
Hello world from process 022 out of 048, processor name node05
Hello world from process 012 out of 048, processor name node05
Hello world from process 013 out of 048, processor name node05
Hello world from process 000 out of 048, processor name node04
Hello world from process 001 out of 048, processor name node04
Hello world from process 002 out of 048, processor name node04
Hello world from process 003 out of 048, processor name node04
Hello world from process 006 out of 048, processor name node04
Hello world from process 009 out of 048, processor name node04
Hello world from process 011 out of 048, processor name node04
Hello world from process 004 out of 048, processor name node04
Hello world from process 007 out of 048, processor name node04
Hello world from process 008 out of 048, processor name node04
Hello world from process 010 out of 048, processor name node04
Hello world from process 005 out of 048, processor name node04
[node04:04390] 47 more processes have sent help message help-mpi-btl-openib.txt / init-fail-no-mem
[node04:04390] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
[node04:04390] 47 more processes have sent help message help-mpi-btl-openib.txt / error in device init

Из этого я понимаю, что а) v.1.6.5 лучше обрабатывает ошибки и б) мне нужно настроить драйверы openMPI и / или infiniband с большим размером зарегистрированной памяти. Я вижу эту страницу и, видимо, только нужно изменить материал openMPI? Я должен это проверить ...


person Danduk82    schedule 18.04.2014    source источник


Ответы (2)


Две вещи: чтобы «srun ... mpi_app», вам нужно сделать специальные вещи в OMPI. См. http://www.open-mpi.org/faq/?category=slurm о том, как запускать задания Open MPI в SLURM.

Сообщение usnic выглядит как законный отчет об ошибке, который вы должны отправить в список рассылки пользователя Open MPI:

http://www.open-mpi.org/community/lists/ompi.php

В частности, я хотел бы увидеть некоторые детали, чтобы понять, почему вы получаете предупреждающее сообщение о usNIC (я предполагаю, что вы не работаете на платформе Cisco UCS с установленным usNIC, но если у вас установлен IB , вы не должны видеть это сообщение).

person Jeff Squyres    schedule 19.04.2014
comment
Спасибо за ваш ответ, на самом деле я видел страницы, которые вы предлагаете, и использую его таким образом. Но я видел в журналах, что при использовании его через slurm возникают некоторые проблемы с регистрацией памяти через ткань Infiniband. Я нашел эту страницу: open-mpi.org/ faq /? category = openfabrics # ib-low-reg-mem, и я пытаюсь решить эту проблему. На данный момент я не понимаю, нужно ли мне изменить некоторые параметры inifniband (возможно, перекомпилировать модуль ядра с дополнительными параметрами) или мне нужно изменить некоторые конфигурации openMPI ... - person Danduk82; 23.04.2014
comment
Вероятно, вы захотите увидеть этот элемент часто задаваемых вопросов: open- mpi.org/faq/?category=openfabrics#ib-locked-pages-more Я предполагаю, что ваш демон ресурсов SLURM не запускается с правильными ограничениями заблокированных страниц. Вам не нужно перекомпилировать ядро; просто позвольте SLURM использовать всю заблокированную память. Когда вы работаете под MPICH, вы не используете InfiniBand; вот почему вы не получаете таких же предупреждений / ошибок. Кстати, если вам интересно, мы только что исправили предупреждение usnic, которое вы видели; который будет включен в 1.8.2: svn.open-mpi.org/trac / ompi / changeset / 31490 - person Jeff Squyres; 23.04.2014
comment
Хм, как вы думаете, почему я не использую inifinband с mpich? Что мне смотреть? Я предполагаю, что они есть, поскольку infiniband ip - это те, которые установлены в slurm.conf ... нет? - person Danduk82; 23.04.2014
comment
MPICH не поддерживает (собственный) InfiniBand. IB поддерживает уровень эмуляции IP (т. Е. Вы можете иметь IP-адреса в сети IB), но его производительность значительно ниже, чем у встроенной поддержки IB. Таким образом, MPICH может использовать IP-адреса в вашей сети IB. Open MPI использует встроенную поддержку IB, поэтому ему нужен доступ к заблокированной памяти и т. Д. - person Jeff Squyres; 24.04.2014
comment
Ха-ха! Итак, вы говорите, что мне не нужен IPoIB в моем файле конфигурации slurm, и что openMPI должен сам понимать, как использовать IB? Я думаю, мне не хватает одного кирпича в моем понимании конфигурации ... - person Danduk82; 24.04.2014
comment
Это правильно. Для дальнейших объяснений IB вам, вероятно, следует прочитать документацию вашего поставщика IB. FWIW, Cisco перестала устанавливать IB несколько лет назад - я давно не принимал активного участия в работе с IB. - person Jeff Squyres; 24.04.2014
comment
Я разместил пару вопросов на форуме Mellanox (мой поставщик IB), но до сих пор не получил ответа ... В любом случае, я думаю, что вопрос можно считать ответом: Это проблема Конфигурация бесконечной полосы. Спасибо за ответы. - person Danduk82; 24.04.2014

  1. Мое решение: перейти на Slurm 14.03.2-1, OpenMPI 1.8.1.

  2. Как ни странно, я столкнулся именно с этой проблемой на некоторых из моих узлов (segfault на btl openib) после реорганизации сети Infiniband. Я использовал Slurm 2.6.9 и OpenMPI 1.8.

На стойках с Dell / AMD Opteron / Mellanox произошел сбой (и он работал до реорганизации сети).

Стойки с HP / Intel / Mellanox продолжают работать до и после реорганизации.

Это может иметь какое-то отношение к топологии Infiniband.

person AAlba    schedule 06.05.2014
comment
Я обновился до Slurm 2.6.10, и он работает. Я использую openMPI 1.6.5 и 1.8. Мне пришлось скомпилировать драйвер mellanox с поддержкой MXM и slurm с PMI. Затем настройте openMPI для использования обоих (MXM и PMI) с настраиваемыми местами. Теперь я должен сказать, что это неплохо. Меня удивляет пропускная способность, потому что я попробовал несколько тестовых кодов, которые нашел в сети, и, очевидно, моя пропускная способность составляет 4 Гбит / с, тогда как она должна быть 10 Гбит / с. И я до сих пор не знаю почему. - person Danduk82; 06.05.2014