在related question笔者近日了解到,一个具有使用MPI与多个线程沟通要非常小心。由于我使用不支持MPI_THREAD_MULTIPLE
实施,我刚刚结束的每MPI::COMM_WORLD
调用了std::lock_guard<std::mutex>
。线程安全的MPI通信
我现在的问题:这是大材小用?具体而言:我可以在Send
准确时间我Recv
?
I与两种std::mutex
,一个尝试了用于发送,一个用于接收。在我的测试机器上,我进行了多次测试,没有出现错误,但这不是保证,这可能只是巧合。
此外:现在 - 有数百次测试运行 - 实际上发生了一个糟糕的分段故障,但我不是100%确定是否由于同时发送/接收。
你是否在网络上试过这个?在本地测试机器上它可能表现不同,消息发送/接收时间不是确定性的,互斥锁/解锁也不是确定性的。 – pyCthon 2013-02-23 06:21:41
@pyCthon我只在本地执行了这个操作,但似乎甚至失败了。可悲的是,不同的传播者也不是解决方案。 – stefan 2013-02-23 14:18:24