我在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作业完成之前在无线网络上时才会这样做。如果我关闭无线网卡或切换到有线以太网连接,它会在预期的大约一秒钟内完成。
为什么mpirun
没有观察到我选择的BTL?
答案 0 :(得分:2)
为什么
mpirun
没有观察到我选择的BTL?
绝对可以观察您选择的BTL。但是还有另一个框架,即OOB,默认情况下也使用TCP。您应该禁用两个框架的tcp
组件,以防止Open MPI完全使用TCP:
mpirun -n 8 --mca btl ^tcp --mca oob ^tcp ...
请注意,完全禁用TCP可能会产生意外影响。
答案 1 :(得分:0)
为了完整起见,我想详细说明Hristo的答案。
如果我的模拟软件看似随机崩溃了。经过一些侦探工作,我发现,丢失网络连接会导致MPI中止/失败/崩溃。
随机崩溃的原因是我的笔记本电脑连接的易碎无线。因此,当偶尔掉线的wifi连接导致我的纯粹本地工作结束。
因此,在我的系统上,我从BTL和OOB中排除了我的Ubuntu机器上的无线网络(名为wlp3s0
。现在,并行运行无法禁用wifi。
mpirun --mca oob_tcp_if_exclude wlp3s0 --mca btl_tcp_if_exclude wlp3s0 -np 2 someApplication