我在Windows 7机器上使用Cygwin上的Open MPI(1.8.3)。 我想在这台机器上独占运行MPI代码,而无需在任何外部网络上进行通信。 我知道我应该能够使用MCA选项将mpirun
限制为自我和共享内存通信,如下所示:
mpirun -n 8 --mca btl sm,self ./hello.exe
但是,当我尝试这个时,Windows会问我是否要设置防火墙例外,这表明我的工作是尝试通过TCP进行外部通信。 此外,mpirun将在完成前大约一分钟挂起,并且只有在hello world job完成之前我在无线网络上。 如果我关闭无线网卡或切换到有线以太网连接,它会在预期的大约一秒钟内完成。
为什么mpirun
没有观察我选择的BTL?
为什么
mpirun
没有观察我选择的BTL?
它肯定会观察您选择的BTL。 但是还有另一个框架,即OOB,默认情况下也使用TCP。 您应该为两个框架禁用tcp
组件,以防止Open MPI完全使用TCP:
mpirun -n 8 --mca btl ^tcp --mca oob ^tcp ...
请注意,完全禁用TCP可能会产生意外影响。
为了完整起见 ,我想详细说明Hristo的答案。
如果我的模拟软件看似随机崩溃了。 经过一些侦探工作,我发现,丢失网络连接可能导致MPI中止/失败/崩溃。
随机崩溃的原因是我的笔记本电脑连接的易碎无线。 因此,偶尔掉线的wifi连接导致我的纯粹本地工作结束。
因此,在我的系统上,我排除了wifi网络(在我的Ubuntu机器上从BTL和OOB命名为wlp3s0
。现在,并行运行仍然存在,禁用了wifi。
mpirun --mca oob_tcp_if_exclude wlp3s0 --mca btl_tcp_if_exclude wlp3s0 -np 2 someApplication
以上就是c/c++开发分享为什么mpirun不尊重我选择的BTL?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/518864.html