我在Windows7上安装的Cygwin一直工作正常,直到我尝试安装一个新的软件包。包安装失败。然后,每次我想运行我的Open MPI程序时,我都会收到这个错误。我可以成功地编译程序,但不能运行它。我甚至删除并重新安装,但没有成功。
谢谢你的任何提示。下面是错误消息示例。
重新加载-PC:039003921,1,0] tcp_peer_send_blocking: send() to socket 13失败:传输终结点未连接(128)
重新加载-PC:039003921,1,0] tcp_peer_send_blocking: send() to socket 13失败:传输终结点未连接(128)
重新加载-PC:046763921,1,2] tcp_peer_send_blocking: send() to socket 13失败:传输终结点未连接(128)
重新加载-PC:046763921,1,2] tcp_peer_send_blocking: send() to socket 13失败:传输终结点未连接(128)
发布于 2016-04-29 14:32:51
通过在“控制面板”->“网络和Internet->网络连接”中禁用未使用的网络适配器,可以解决此问题。
原来未使用的网络适配器试图通过DHCP进行配置,当DHCP失败时,以"169.254.X.X“开头的IP地址被分配给此适配器。Cygwin上openmpi不知何故使用无效的IP地址在进程之间建立通信。
我通过查看/tmp/openmpi-sessions{用户名}/{PID of orterun}/contact.txt找到了它。
发布于 2016-10-09 18:14:17
我在OpenMPI 1.10.4的Cygwin上也遇到了同样的问题。
尝试将"-report-uri -“添加到mpirun命令,以查看它尝试用于连接的IP地址:
mpirun -report-uri - -np 2 a.exe它应该打印出如下所示的行:
568328192.0;tcp://192.168.10.103,169.254.247.11,0.0.0.0,0.0.0.0,0.0.0.0:55600如果"tcp://“后面的first IP地址不是您的机器的当前有效地址,这就是问题所在,事情很可能会崩溃(即使正确的IP出现在列表的后面)。显然,ORTE不够聪明,不能根据实际启用和在线的情况来订购界面。
如果错误的IP对应于旧的/禁用的接口,请使用windows网络连接控制面板卸载它(如果可能)。
在我的例子中,第一个地址是我很久以前删除并丢弃的旧硬件适配器的DHCP地址(但显然不是在软件中卸载)。Windows通常会在控制面板中隐藏此类已移除但未卸载的界面,但这些设置仍保留在注册表的以下位置:
HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\
在注册表子项中搜索伪造IP地址,很可能会找到有问题的接口。我通过更改注册表项中的IP地址来匹配我当前的静态IP来修复我的问题,但完全卸载接口可能也可以。
发布于 2015-12-15 08:28:36
我在openmpi v1.8.8(这是cygwin安装的包的默认版本)上也遇到了同样的问题。手动返回到版本1.8.6为我修复了这个问题。
https://stackoverflow.com/questions/34032655
复制相似问题