Windows上的MPICH - 信号量超时期限已过期

时间:2014-10-06 10:39:47

标签: windows semaphore mpich

我有这个奇怪的问题,我不知道如何解决,我会感激一些帮助...

我在多台本地连接的计算机上运行Windows 7,这些计算机安装了MPICH(版本1.4.1p1)。我已经检查过标准的cpi.exe示例适用于每台计算机。但是,在多台机器上进行测试时,我发现了一个奇怪的问题。假设我有三台机器:localhost,HOST1,HOST2。

如果我执行以下命令(来自localhost)

mpiexec -n 2 -host HOST1 .\cpi.exe

mpiexec -n 2 -host HOST2 .\cpi.exe

mpiexec -n 2 -host HOST1 .\cpi.exe : -n 2 -host HOST2 .\cpi.exe

然后他们执行得很好。但是,如果我从最后一个交换主机的顺序,即

mpiexec -n 2 -host HOST2 .\cpi.exe : -n 2 -host HOST1 .\cpi.exe

然后我收到以下错误:

Fatal error in PMPI_Bcast: Other MPI error, error stack: PMPI_Bcast(1478)......................: MPI_Bcast(buf=0018FE48, count=1, MPI_INT , root=0, MPI_COMM_WORLD) failed MPIR_Bcast_impl(1321).................: MPIR_Bcast_intra(1119)................: MPIR_Bcast_scatter_ring_allgather(962): MPIR_Bcast_binomial(213)..............: Failure during collective MPIR_Bcast_scatter_ring_allgather(955): MPIR_Bcast_binomial(189)..............: MPIC_Send(66).........................: MPIC_Wait(540)........................: MPIDI_CH3I_Progress(402)..............: MPID_nem_mpich2_blocking_recv(905)....: MPID_nem_newtcp_module_poll(37).......: MPID_nem_newtcp_module_connpoll(2656).: gen_cnting_fail_handler(1739).........: connect failed - The semaphore timeout p eriod has expired. (errno 121)

在后一种情况下,如果我在HOST2上关闭防火墙,那么它可以工作。不幸的是,我对防火墙和网络的总体经验很少,所以我不知道如何解决这个问题。

我唯一可以弄清楚的是它在第一次集体MPI呼叫(广播)上失败了。

请帮忙!

1 个答案:

答案 0 :(得分:0)

好的,解决了我自己的问题 - 基本上我在HOST1上添加了cpi.exe程序的异常,但在HOST2上没有。解决方案是确保将异常添加到BOTH机器中!