我有一个问题的最小例子,我只是启动4个进程(在具有8个线程的四核Intel Core i7 cpu上)并且由于某种原因MPI_Init
似乎需要非常长的时间
这是我的代码:
1 program smear_sfs
2
3 integer, parameter :: ikind = 4
4 integer, parameter :: rkind = 8
5
6 integer(kind = ikind) :: isize, iproc, ierr
7 integer(kind = ikind) :: i, j
8
9 include "mpif.h"
10 integer(kind = ikind) :: istat(MPI_STATUS_SIZE)
11
12 print*, 'Section 1'
13
14 ! initialize mpi
15 write(*, '(a)', advance='no'), 'Calling MPI_Init ...'
16 call MPI_Init(ierr)
17 write(*, '(a)') 'done'
18 print*, 'ierr = ', ierr
19 call MPI_Barrier(MPI_COMM_WORLD, ierr)
20 call MPI_Comm_Rank(MPI_COMM_WORLD, iproc, ierr)
21 call MPI_Comm_Size(MPI_COMM_WORLD, isize, ierr)
22 do i = 0,isize
23 call MPI_Barrier(MPI_COMM_WORLD, ierr)
24 if(iproc.eq.i) write(*, '(a, i3, a)') 'rank(', iproc, ') reporting'
25 call MPI_Barrier(MPI_COMM_WORLD, ierr)
26 enddo
27
28 ! shutdown MPI
29 call MPI_Barrier(MPI_COMM_WORLD, ierr)
30 call MPI_Finalize(ierr)
31
32 end program smear_sfs
这是输出的(定时)版本:
Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ...done
ierr = 0
rank( 0) reporting
done
ierr = 0
rank( 1) reporting
done
ierr = 0
rank( 2) reporting
done
ierr = 0
rank( 3) reporting
real 0m45.350s
user 1m25.794s
sys 1m31.731s
程序会立即输出Section 1
和以下Calling MPI_Init ...
,但之后会在打印done
和其余输出之前挂起很长时间。出于某种原因,这在MPI_Init
上悬挂了很长时间,我无法弄清楚原因。
如果真的很重要,我第一次跑这个时,我的防火墙发出了一些奇怪的警告,声称我的电脑上发生了一些事情(来自orted.exe
我认为是)但是我没有得到那个错误了。
我在Windows 8上通过cygwin64运行此程序并使用MPIf90进行编译。
感谢。
答案 0 :(得分:1)
希望最后一次编辑:
我在OpenMPI用户邮件列表中询问过。在那里我得到了建议,它也可能是我的WLAN。
确实!这是我的WLAN,至少是我测试它的一半时间。另一次是我的局域网,我也用它来访问互联网。
所以:尝试在开始时停用LAN和WLAN>控制面板>网络和互联网>网络和共享中心>更改适配器设置 不过,这只是一种解决方法。
这不是一个真正的答案,但我想与这个令人烦恼的主题分享我5个小时的经验。 (我不时有问题)
我遇到了同样的问题:在编译和运行程序之后,它似乎挂了,但它最终会在一两分钟后起作用。
虽然我的笔记本电脑出现了问题,但我的台式电脑却没有。两者都运行在Win 7,cygwin 64位,OpenMPI版本1.8.3 r32794(ompi_info),g ++ v 4.8.3。我实际上后来同步了cygwin安装,它仍然无法正常工作,但它在重新启动后完成,所以我无法排除问题是某种程度上拙劣的cygwin安装。
当我在桌面PC上启动程序时,我的防火墙Comodo 5.10通知我关于orterun.exe(mpirun只是orterun的符号链接)和myprogram.exe。在我(永久)允许这两个程序后,启动的程序仍然没有恢复执行。取消程序并重新启动程序后,程序运行没有问题,这意味着它运行得很快。因此,在我看来,如果OpenMPI无法立即连接,它可能只有足够的错误处理。也许这与问题有某种关系。
我正在使用Comodo Firewall 5.10。在我的桌面上,绝对没有防火墙,甚至我的笔记本电脑上的Windows防火墙(停用)也没有。在我的笔记本上安装Comodo 5.10也没有任何帮助。但重启后一切正常,所以防火墙可能还没有完全到位吗?但安装程序没有提示我重新启动,防火墙已经工作,所以......
我的桌面电脑的编译版本确实在我的笔记本上运行了mpirun ......我想。唉,我无法复制这个,我现在试了几个小时。因此,我认为错误在于编译器或OpenMPI库。
将我的笔记本上的cygwin安装与桌面上的安装同步后,安装防火墙,我允许所有受影响的程序并重新启动我的笔记本终于工作了...我不确定究竟是什么解决了问题以及为什么要重启是必要的。
显然问题在我的笔记本上存在了几个月,所以我在没有问题解决的情况下重新启动笔记本。
其他人也有他们的VPN软件干扰OpenMPI并导致这些问题的故事,但我没有运行这样的软件。
编辑: 几个小时后问题又回来了! 我也毫无结果地尝试过的事情: