MPI可以超额订购会导致系统崩溃吗?

时间:2012-07-28 04:36:59

标签: c++ boost multiprocessing mpi message-passing

我已经使用Producer和Consumer实现了一个示例MPI应用程序。生产者在排名为0的进程上运行,而消费者将在所有非零排名上运行。消费者将产生消费者工作者线程来处理生产者生成的消息。消费者线程分为接收者线程和工作线程。

消费者接收者线程执行recv,并在接收时传递消费者工作者消费的消息,消费者工作者在执行计算后,将处理后的消息发送回生产者(root)。

我在双核机器上运行此代码。我注意到的是,当我使用mpirun -np 2执行我的应用程序时,应用程序对生产者生成的任意数量的消息执行得很好。当我尝试使用mpirun -np 4运行应用程序时,应用程序在处理几次运行后崩溃。

之前有人遇到过这个问题吗?能够深入了解为什么会发生这种情况会很棒。

编辑: 这是我每次运行我的应用程序时得到的异常:

*** glibc detected *** application: free(): invalid pointer: 0x00007f67d1f9f9e0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7e626)[0x7f67d0671626]
/usr/lib/openmpi/lib/openmpi/mca_pml_ob1.so(+0x9041)[0x7f67cc790041]
/usr/lib/openmpi/lib/openmpi/mca_pml_ob1.so(+0x5a00)[0x7f67cc78ca00]
/usr/lib/libmpi.so.0(MPI_Recv+0x154)[0x7f67d1d531e4]
/usr/local/lib/libboost_mpi.so.1.50.0(_ZN5boost3mpi6detail19packed_archive_recvEP19ompi_communicator_tiiRNS0_15packed_iarchiveER20ompi_status_public_t+0x33)[0x7f67d1fcb223]
/usr/local/lib/libboost_mpi.so.1.50.0(_ZNK5boost3mpi12communicator4recvINS0_15packed_iarchiveEEENS0_6statusEiiRT_+0x45)[0x7f67d1fc4755]
application(_ZNK5boost3mpi12communicator9recv_implI7MessageEENS0_6statusEiiRT_N4mpl_5bool_ILb0EEE+0x74)[0x464d98]
application(_ZNK5boost3mpi12communicator4recvI7MessageEENS0_6statusEiiRT_+0x3b)[0x46479b]
application(_ZN12WorkerReceiver3runEv+0xac)[0x46b1da]
/usr/local/lib/libPocoFoundation.so.12(_ZN4Poco10ThreadImpl13runnableEntryEPv+0x96)[0x7f67d26fcb16]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7f67d09b7e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f67d06e54bd]

谢谢

0 个答案:

没有答案
相关问题