Jon,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I&#39;m acquainting myself with parallel IPython and have a couple of questions.<br>

<br>
1. Could someone please explain what it means that a TaskClient is &quot;fault<br>
tolerant&quot;?<br>
<a href="http://ipython.scipy.org/doc/stable/html/parallel/parallel_task.html" target="_blank">http://ipython.scipy.org/doc/stable/html/parallel/parallel_task.html</a><br>
<br></blockquote><div><br>Sure.  Basically if a task fails for any reason (raises an exception, the engine dies, etc.),<br>the task will be requeued and attempted again.  You can the number of retries <br>with arguments to the task objects:<br>
<br><a href="http://bazaar.launchpad.net/%7Eipython-dev/ipython/trunk/annotate/head%3A/IPython/kernel/task.py#L268">http://bazaar.launchpad.net/%7Eipython-dev/ipython/trunk/annotate/head%3A/IPython/kernel/task.py#L268</a><br>
 </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2. The task interface sounds useful for embarrassingly parallel computations.<br>
</blockquote><div><br>Yes, that is definitely true.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I&#39;m trying to follow the instructions at<br>

<a href="http://ipython.scipy.org/doc/stable/html/parallel/parallel_process.html#using-%0Aipcluster-in-pbs-mode" target="_blank">http://ipython.scipy.org/doc/stable/html/parallel/parallel_process.html#using-<br>
ipcluster-in-pbs-mode</a><br>
(PBS is the queueing system used by the computer cluster I&#39;m working with).<br>
<br>
I use the command<br>
ipcluster pbs -n 8 --pbs-script=pbs.template &amp;<br>
to run the following pbs script:<br>
<br>
#PBS -N ipython<br>
#PBS -j oe<br>
#PBS -l walltime=00:10:00<br>
#PBS -l nodes=${n/8}:ppn=8<br>
#PBS -q express<br>
cd $$PBS_O_WORKDIR<br>
mpiexec -n ${n} ipengine --logfile=$$PBS_O_WORKDIR/ipengine &amp;<br>
sleep 30<br>
python ipar.py<br>
<br>
...where ipar.py starts a MultiEngineClient and execute()&#39;s commands that use<br>
MPI on the ipengines. (I haven&#39;t tried using it with a TaskClient yet.)<br></blockquote><div><br>Is the &quot;python ipar.py&quot; in the PBS script?  If so, that is likely creating a problem...<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Note that I&#39;m starting mpiexec in the background; otherwise, it would never<br>
finish and my Python script would never get called. Also, I&#39;m backgrounding the<br>
call to ipcluster because that too never seems to finish. (Using mpiexec with<br>
&quot;python ipar.py&quot; does not seem to be required.)<br>
<br></blockquote><div>Ah, I understand your issue.  The command ipcluster starts the engine and controller.  The controller<br>is started on the head node and each engine is started on a compute node.  But, the code that uses<br>
the MultiEngineClient only runs in 1 process, usually on the head node.  The script that uses MultiEngineClient<br>itself is only run in serial.  But, it connects to the controller and submits tasks  which are then performed in parallel<br>
by the engines.<br> <br>I highly recommend first trying to run this in &quot;local&quot; mode on you workstation:<br><br>ipcluster local -n 2<br><br>Then fire up IPython, and create a multiengine client and play with it:<br>
<br><a href="http://ipython.scipy.org/doc/nightly/html/parallel/parallel_multiengine.html">http://ipython.scipy.org/doc/nightly/html/parallel/parallel_multiengine.html</a><br><br>Let us know how it goes.<br><br>Cheers,<br>
<br>Brian<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
However, the compute cluster&#39;s user instructions say I shouldn&#39;t start<br>
processes in the background, because then they escape the control of the job<br>
scheduler. Is there a way I can make TaskClient() work under this restriction?<br>
Otherwise, I&#39;m just going to manually &quot;killall ipcluster&quot; etc. once my job is<br>
done. (Or maybe that could go as the last lines of my pbs script?)<br>
<br>
I&#39;m a complete newbie in this, so any hints are highly appreciated.<br>
<br>
Best regards,<br>
Jon Olav Vik<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>