<div><meta http-equiv="content-type" content="text/html; charset=utf-8">The issue is resolved now, thanks for the pointer. </div><div><br></div><div>The story of what was up:</div>Your example didn&#39;t work and showed that the issue was with MPI and not IPython related. <div>
<br></div><div>I then tried a standard MPI hello world application and that did work. </div><div><br></div><div>This pointed the issue to what was between MPI and IPython, mpi4py.</div><div><br></div><div>When I first installed mpi4py my system had a not-perfectly-functioning MPI. I realized this was an issue a couple days ago and installed a fresh openmpi. This cleared up many issues. Bits of mpi4py unfortunately had been compiled with the old MPI and this was causing the confusion that I brought to the list. A quick &quot;pip install mpi4py --upgrade&quot; forced recompilation with the newer openmpi installation. Everything is now fine. Seeing the list [3, 2, 0, 1] has never brought me so much joy. </div>
<div><br></div><div>Thanks,</div><div>-Matt<br><br><div class="gmail_quote">On Fri, Jan 27, 2012 at 3:56 PM, MinRK <span dir="ltr">&lt;<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Fri, Jan 27, 2012 at 13:24, Matthew Rocklin &lt;<a href="mailto:mrocklin@gmail.com">mrocklin@gmail.com</a>&gt; wrote:<br>
&gt; Hi everyone,<br>
&gt;<br>
&gt; I&#39;ve been playing with using ipython parallel in mpi mode. On my laptop it&#39;s<br>
&gt; working swell but on a different machine I can&#39;t get the ipengines to be<br>
&gt; part of the same MPI world.<br>
&gt;<br>
&gt; I.e. after setting up either an ipcluster or ipcontroller + ipengine I run<br>
&gt; the following in python<br>
&gt;<br>
&gt; from IPython.parallel import Client<br>
&gt; rc = Client() #profile=&#39;mpi&#39;)<br>
&gt; view = rc[:]<br>
&gt; view.execute(&#39;from mpi4py import MPI&#39;)<br>
&gt; view.execute(&#39;comm = MPI.COMM_WORLD&#39;)<br>
&gt; view.execute(&#39;rank = comm.Get_rank()&#39;)<br>
&gt; print view[&#39;rank&#39;]<br>
<br>
</div>The above can be done a bit more conveniently with apply:<br>
<br>
def get_rank():<br>
    from mpi4py import MPI<br>
    return MPI.COMM_WORLD.Get_rank()<br>
view.apply_sync(get_rank)<br>
<div class="im"><br>
&gt;<br>
&gt; and get out a list of zeros, each of the engines is inside of its own mpi<br>
&gt; world.<br>
&gt;<br>
&gt; I set up the cluster either by using<br>
&gt; ipcluster start --n 4 --engines=MPI --controller=MPI<br>
<br>
</div>Side note: it&#39;s rarely useful to use MPI to start the controller - it<br>
will always be alone in its own MPI universe.  Only do this if it&#39;s<br>
required by your batch system/sysadmin somehow.<br>
<div class="im"><br>
&gt; or<br>
&gt; ipcluster start --n 4 --profile=mpi # config files set up as in the tutorial<br>
&gt;<br>
&gt; or directly using ipcontroller and ipengines<br>
&gt;<br>
&gt; ipcontroller --profile=mpi<br>
&gt; mpiexec --np 4 ipengine --profile=mpi<br>
<br>
</div>Even this, using mpiexec *directly* doesn&#39;t work?  I don&#39;t see how<br>
that would even be possible, unless your MPI setup is messed up.<br>
<br>
Try a simple test script:<br>
<br>
import os<br>
from mpi4py import MPI<br>
comm = MPI.COMM_WORLD<br>
<br>
rank = comm.Get_rank()<br>
print &quot;pid:%i, rank:%i\n&quot; % (os.getpid(),rank),<br>
<br>
And run this with `mpiexec -np 4 python test_script.py`.<br>
<div class="im"><br>
&gt;<br>
&gt; I&#39;m using ubuntu with the ipython that is packaged in the enthought<br>
&gt; distribution and linking to openmpi.<br>
&gt;<br>
&gt; Any thoughts on common mistakes I could be making?<br>
<br>
</div>You are doing the right thing by going straight to mpiexec.  Whenever<br>
ipcluster doesn&#39;t work, the first step for debugging is to try to do<br>
explicitly what you think ipcluster should be doing, and make sure<br>
that works.  ipcluster is convenient when it works, but it&#39;s a hassle<br>
to debug.<br>
<br>
The only thing I can think of is that you might still be running a<br>
controller/engines and are not actually connecting to your new ones<br>
started with MPI.  This seems unlikely, though, but you can check with<br>
`ps aux | grep ipengine`.<br>
<br>
-MinRK<br>
<br>
&gt;<br>
&gt; -Matt<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; IPython-User mailing list<br>
&gt; <a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
&gt;<br>
</blockquote></div><br></div>