<div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Apr 23, 2012 at 12:03, Satrajit Ghosh <span dir="ltr">&lt;<a href="mailto:satra@mit.edu" target="_blank">satra@mit.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

hi min,<div><br><div><div class="gmail_extra"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote">



<div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

ps. the reason i couldn&#39;t make it another task is because of the distributed context. the engine on which the dependent task runs cannot be controlled (i think).</blockquote><div><br></div></div><div>Nope.  The engines can be controlled quite specifically.  LoadBalancedViews have a &#39;targets&#39; attribute, just like DirectViews, but they select which *subset* of targets across which the tasks may be distributed.  If this is a single engine, then you know exactly where it will run.</div>



</div></div></blockquote><div><br></div></div><div>this is more academic at this point, but just to be clear on the functionality.</div><div><br></div><div>i have X engines running on X machines. and i&#39;m distributing a task to some arbitrary engine using LoadBalancedView. is there a way for me to send task A and B and say run B on the same engine as A. </div>

</div></div></div></div></blockquote><div><br></div><div>No, </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div class="gmail_extra"><div class="gmail_quote">

<div> i don&#39;t want to run A on any particular engine.</div></div></div></div></div></blockquote><div><br></div><div>Yes, this is what the `follow` dependencies accomplish, and what Fernando referred to in his initial comment: Controlling the *destination* of tasks, as a function of the destination of prior tasks:</div>

<div><br></div><div>def task_one(b):</div><div>    &quot;store b in global a, for some reason&quot;</div><div>    global a</div><div>    a = b</div><div><br></div><div>def task_two(c):</div><div>    &quot;product of a and c, must be run following task_one&quot;</div>

<div>    return c*a</div><div><br></div><div>rc = parallel.Client()</div><div><br></div><div>view = rc.load_balanced_view()</div><div><br></div><div># submit task_one anywhere</div><div>ar_one = view.apply_async(task_one, 5)</div>

<div><br></div><div># submit task_two to the same engine as task_one (even though we don&#39;t know where that is, yet)</div><div>with view.temp_flags(follow=ar_one):</div><div>    ar_two = view.apply_async(task_two, 10)</div>

<div><br></div><div>ar_two.get()</div><div><br></div><div>print &quot;task one ran on engine %i&quot; % ar_one.engine_id</div><div>print &quot;task two ran on engine %i&quot; % ar_two.engine_id</div><div><br></div><div>We call these Graph Dependencies, and you can read a bit more about them <a href="http://ipython.org/ipython-doc/dev/parallel/parallel_task.html#graph-dependencies">in the docs</a>.</div>

<div><br></div><div>Not knowing how your code actually works, it&#39;s possible this could be done with functional dependencies (functions that run prior to the real one).  This may not be true for you, though, as the dependency function is called before the task is *run*, but not before it is unserialized.</div>

<div><br></div><div>&gt; if i remember target attributes were setup during creation of an engine?</div><div><br></div><div>I don&#39;t know what this could refer to.  Nothing is setup on the client side or in the schedulers during the creation of an engine.</div>

<div><br></div><div>-MinRK</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div class="gmail_extra"><div class="gmail_quote">

<div><br></div><div>cheers,</div><div><br></div><div>satra </div></div></div></div></div>
<br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br></div>