2011-01-20 6 views
0

Это первый раз, когда я получаю сообщение об ошибке при выполнении MPI_Finalize(). Я думаю, что сообщение вызывает проблему, но я не знаю, что это значит.MPI: Ошибка при выполнении 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). 
-------------------------------------------------------------------------- 

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

+3

Нам действительно нужно увидеть ваш код. И можете ли вы гарантировать, что ваша коллективная связь действительно правильно передает данные? – chrisaycock

+0

Нам нужно будет увидеть ваш код, хотя элемент 'Failed at address: (nil)' заставляет меня думать, что вы обращаетесь к нулевому указателю где-то. – suszterpatt

ответ

0

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

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

Смежные вопросы