windows-8 – MPI_Init()需要很长时间才能运行
我有一个问题的最小例子,我只是启动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,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(',') 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 程序输出第1部分和以下调用MPI_Init …,然后在打印完成之前和输出的其余部分之后长时间挂起.由于某种原因,这在MPI_Init上挂了很长时间,我无法弄清楚原因. 如果它真的很重要,我第一次运行它时,我的防火墙发出了一些奇怪的警告,声称我的计算机发生了某些事情(来自我认为的orted.exe),但我还没有得到那个错误. 我在Windows 8上通过cygwin64运行它并使用MPIf90进行编译. 谢谢. 解决方法
希望最后编辑:
我在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并导致这些问题的故事,但我没有运行这样的软件. 编辑: >关闭可能阻塞TCP-IP连接的程序> ping 127.0.0.1工作< 1ms>以管理员身份运行bash>从windows cmd运行orterun / mpirun而不是cygwin-bash>完全停止Windows防火墙服务和Windows Defender>使用MPI_Init(NULL,NULL);而不是MPI_Init(& argc,& argv);>用gcc而不是g编译>程序工作正常,如果我不用mpirun启动它,但它也不起作用,如果我用mpirun -n 1启动它>更新Windows>使用安全模式(带网络驱动程序)>尝试调试它(我无法获得对MPI_init调用的有用回溯) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 提交失败:在Windows上从Eclipse提交到Google Code时,“存储
- 如何在autohotkey中使用菜单窗口键?
- Windows下使用TortoiseGit的无法直接使用linux ssh-key的解
- windows – 如何配置Chocolatey以使用公司代理?
- windows-7 – 从Windows 7通过Webdav连接?
- 在Windows 8 Metro C#中显示StorageFile
- windows和mac一个可以共同使用的编码
- windows-server-2008 – Windows Server 2008上的管理工具中
- windows系统下同时安装mysql5.5和8.0.11
- 适用于Windows的最佳免费ISO安装软件
- windows-server-2008 – 您使用Windows Server 2
- windows-8 – Windows 8商店应用程序 – 使用哪种
- windows – 与findstr.exe进行逻辑OR比较
- windows-store-apps – 如何使用滑动动画以编程方
- windows-server-2008-r2 -svchost.exe -k netsvc
- windows-server-2008 – Windows Server 2008 R2
- windows – 命令行参数,解析的标准方法?
- windows-server-2008-r2 – 一个未知的工具正在擦
- operating-system – Windows内核模式驱动程序如
- windows – 如何删除本地管理员权限?