MPI: ошибка при выполнении MPI_Finalize()

Это первый раз, когда я получаю сообщение об ошибке при выполнении MPI_Finalize(). Я думаю, что общение вызывает проблему, но я не знаю, что заставляет ее происходить.

Когда я запускаю его на 1 процессоре, он работает нормально, но на 2 или более процессорах я получаю ошибку сегментации.

Сообщение об ошибке

[seismicmstm:32604] *** Process received signal ***
[seismicmstm:32604] Signal: Segmentation fault (11)
[seismicmstm:32604] Signal code:  (128)
[seismicmstm:32604] Failing at address: (nil)
[seismicmstm:32604] [ 0] /lib64/libpthread.so.0 [0x311c60eb10]
[seismicmstm:32604] [ 1] /usr/local/openmpi-1.4.2/lib/libopen-pal.so.0(opal_memo ry_ptmalloc2_int_malloc+0x2f4) [0x2b6955551794]
[seismicmstm:32604] [ 2] /usr/local/openmpi-1.4.2/lib/libopen-pal.so.0 [0x2b6955 553543]
[seismicmstm:32604] [ 3] /lib64/libc.so.6(__libc_calloc+0x330) [0x311ba74bc0]
[seismicmstm:32604] [ 4] /lib64/ld-linux-x86-64.so.2 [0x311b609d65]
[seismicmstm:32604] [ 5] /lib64/ld-linux-x86-64.so.2 [0x311b605a9c]
[seismicmstm:32604] [ 6] /lib64/ld-linux-x86-64.so.2 [0x311b6076e1]
[seismicmstm:32604] [ 7] /lib64/ld-linux-x86-64.so.2 [0x311b610bb6]
[seismicmstm:32604] [ 8] /lib64/ld-linux-x86-64.so.2 [0x311b60ce06]
[seismicmstm:32604] [ 9] /lib64/ld-linux-x86-64.so.2 [0x311b6105bc]
[seismicmstm:32604] [10] /lib64/libc.so.6 [0x311bb08df0]
[seismicmstm:32604] [11] /lib64/ld-linux-x86-64.so.2 [0x311b60ce06]
[seismicmstm:32604] [12] /lib64/libc.so.6(__libc_dlopen_mode+0x47) [0x311bb08f57 ]
[seismicmstm:32604] [13] /lib64/libpthread.so.0 [0x311c60f1dc]
[seismicmstm:32604] [14] /lib64/libpthread.so.0 [0x311c60f2f0]
[seismicmstm:32604] [15] /lib64/libpthread.so.0(__pthread_unwind+0x40) [0x311c60 d160]
[seismicmstm:32604] [16] /lib64/libpthread.so.0 [0x311c607985]
[seismicmstm:32604] [17] /usr/local/openmpi-1.4.2/lib/openmpi/mca_btl_openib.so [0x2b695869d22b]
[seismicmstm:32604] [18] /lib64/libpthread.so.0 [0x311c60673d]
[seismicmstm:32604] [19] /lib64/libc.so.6(clone+0x6d) [0x311bad3f6d]
[seismicmstm:32604] *** End of error message ***
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 32604 on node seismicmstm.cluster exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

Все, что я делаю в коде, — это разбрасываю, собираю и транслирую данные. Может кто подскажет как его отлаживать....


mpi
person veda    schedule 20.01.2011    source источник
comment
Нам нужно увидеть ваш код. И можете ли вы гарантировать, что ваше коллективное общение действительно правильно передает данные?   -  person chrisaycock    schedule 21.01.2011
comment
Нам нужно увидеть ваш код, хотя часть Failing at address: (nil) заставляет меня думать, что вы где-то обращаетесь к нулевому указателю.   -  person suszterpatt    schedule 21.01.2011


Ответы (1)


Возможны две причины: 1) ваш MPI_Finalize неисправен: убедитесь, что библиотека MPI работает нормально, запустив пример кода, такой как CPI, включенный в дистрибутив MPI. Если у вас нет доступа к дистрибутиву, вы можете загрузить tar-файл и извлечь код CPI или загрузить любое простое приложение Hello World из Интернета. Я настоятельно рекомендую http://www.citutor.org/. Если пример кода работает, ваша библиотека MPI в порядке. и ваш код неверен. В противном случае библиотека не работает должным образом. Загрузите выбранную вами реализацию и скомпилируйте другую копию.

2) Код умирает (segfault) не в MPI_Finalize а где-то перед MPI_Finalize. Можете ли вы подтвердить, что segfault происходит в MPI_Finalize, а не раньше?

person powerrox    schedule 03.03.2011