I am using Open MPI (1.8.3) on Cygwin on a Windows 7 machine. I would like to run MPI codes on this machine exclusively, without talking on any external network. I understand I should be able to restrict mpirun
to self and shared memory communication using MCA options like so:
mpirun -n 8 --mca btl sm,self ./hello.exe
However, when I try this, Windows asks me if I'd like to make a firewall exception, indicating my job is trying to talk externally over TCP. Additionally, mpirun will hang for roughly one minute before completing if and only if I'm on a wireless network before the hello world job completes. If I turn off my wireless card or switch to a wired ethernet connection, it completes in around one second as expected.
Why is mpirun
not observing my choice of BTL?
Why is
mpirun
not observing my choice of BTL?
It is definitely observing your choice of BTL. But there is another framework, namely OOB, which is also using TCP by default. You should disable the tcp
component for both frameworks in order to prevent Open MPI from using TCP altogether:
mpirun -n 8 --mca btl ^tcp --mca oob ^tcp ...
Note that completely disabling TCP might have unexpected effects.