<br><br><div class="gmail_quote">On Wed, Aug 29, 2012 at 7:07 AM, Jon Olav Vik <span dir="ltr">&lt;<a href="mailto:jonovik@gmail.com" target="_blank">jonovik@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">

I am using IPython.parallel for load-balanced, fault-tolerant computation on a<br>
shared cluster running a PBS batch system. However, when I scale into hundreds<br>
of engines it seems that the number of TCP connections becomes a limiting<br>
factor, to the extent of slowing down the job submission system and bothering<br>
other users. System admins tell me the cluster is really intended for MPI-based<br>
jobs. I am not transferring large messages, only workpiece indexes, but it<br>
seems the sheer number of messages is the problem.<br></blockquote><div><br></div><div>How many engines starts to cause trouble?  I don&#39;t have access to hardware to test this sort of things,</div><div>and would love data points.  I have found that it behaves fairly well at least up to 128 engines,</div>

<div>which is the most I have run.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Can IPython.parallel use MPI instead of TCP for its communication between<br>
ipcontroller and ipengine?<br></blockquote><div><br></div><div>No, it cannot.  The answer to this will be to shard schedulers across multiple machines, which is not yet implemented.  The Client and Engine already would have no problem, it&#39;s only starting the cloned Schedulers that needs to be added.</div>

<div><br></div><div>The best you can do right now is to limit your IPython jobs, such that you have one IPython cluster per N engines, where N is a reasonable number that you find performs adequately.  Then you would, in your client code, have to distribute work chunks across your P/N clients.</div>

<div> </div><div>-MinRK</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Previously, I ran into a &quot;too many open files&quot; limitation on another cluster:<br>
<a href="http://thread.gmane.org/gmane.comp.python.ipython.user/8503/focus=8514" target="_blank">http://thread.gmane.org/gmane.comp.python.ipython.user/8503/focus=8514</a><br>
On this one, the ulimit is higher, so I&#39;m not hitting a hard limit, but instead<br>
I seem to be competing with the batch system&#39;s monitoring of nodes.<br>
<br>
<br>
Googling for IPython and MPI, what I&#39;ve found mostly seems to be about<br>
*explicitly* using MPI for message passing, e.g.:<br>
<br>
<a href="http://ipython.org/ipython-doc/dev/parallel/parallel_mpi.html" target="_blank">http://ipython.org/ipython-doc/dev/parallel/parallel_mpi.html</a><br>
<br>
What I would like instead is to take my existing program and just switch the<br>
transport of ZMQ messages over to MPI, just by changing the configuration of<br>
IPython. Is that possible?<br>
<br>
An example program is given below -- ideally, I would like to get away with at<br>
most one mention of &quot;MPI&quot; in the code 8-)<br>
<br>
Thanks in advance,<br>
Jon Olav<br>
<br>
<br>
&quot;&quot;&quot;Distributed, load-balanced computation with IPython.parallel.&quot;&quot;&quot;<br>
<br>
from IPython.parallel import Client<br>
<br>
c = Client()<br>
lv = c.load_balanced_view()<br>
<br>
@lv.parallel(ordered=False, retries=10)<br>
def busywait(workpiece_id, seconds):<br>
    &quot;&quot;&quot;Task to be run on engines. Return i and process id.&quot;&quot;&quot;<br>
    # Imports that will be executed on the client.<br>
    import os<br>
    import time<br>
<br>
    t0 = time.time()<br>
    while (time.time() - t0) &lt; seconds:<br>
        pass<br>
    return workpiece_id, seconds, os.getpid()<br>
<br>
workpiece_id = range(15)<br>
seconds = [2 + i % 5 for i in workpiece_id]  # percent sign means &#39;modulus&#39;<br>
async = busywait.map(workpiece_id, seconds)<br>
async.wait_interactive()<br>
<br>
<br>
_______________________________________________<br>
IPython-User mailing list<br>
<a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
</blockquote></div><br>