<br><br><div class="gmail_quote">On Sun, Oct 18, 2009 at 1:31 AM, Brian Granger <span dir="ltr">&lt;<a href="http://ellisonbg.net">ellisonbg.net</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div class="im"><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div>Thanks for the suggestion. multiprocessing module was also in my mind to experiment with alternative to IPython&#39;s approach. Actually, my original intention is to rebase the whole original code-base to Python. Freeing the source code from IDL license restriction, unifying under one umbrella (instead of using multi languages --IDL, C, Perl, Bash, Csh etc... More importantly much lowering the amount of code. The core processing code totals probably more than 25-30k code in the repo. I am assuming this would bring down to 5-6k levels and employing some parallel processing techniques and object orientalism. However this is not an easy take, and I need papers to read and posters to prepare :)<br>


<br></div></div></blockquote></div><div><br>Yes, multiprocessing might be a very good option for you.  Especially if you just have a multicore workstation.  But, for basic map style parallelism, either should be very easy.  Currently, on a multicore CPU where multiprocessing uses fork, it probably has a much lower overhead than Ipython.  But, given the fairly coarse grain of what you are doing I am not sure it would make a difference.<br>
</div></div></blockquote><div><br><br>I have more patience to carry out this task with IPython :)<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div>
<br>There are a number of usage cases where IPython excels though:<br><br>* If you want to scale up and run on a cluster that has a batch system, etc.<br>* If you want to use it interactively from within IPython.<br>* If you want need to pass data between processes (using MPI).  IPython has great integration with MPI through mpi4py.<br>

* If you really need robust exception propagation.<br><br>Cheers,<br><font color="#888888"><br>Brian<br><br><br> </font></div><div><div></div><div class="h5"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div class="gmail_quote"><div>If you are curious about the project please take a look at its SourceForge entry at: <a href="http://sourceforge.net/projects/adpaa/" target="_blank">http://sourceforge.net/projects/adpaa/</a><br>

<br>and this is for source code analysis: <a href="https://www.ohloh.net/p/adpaa/analyses/latest" target="_blank">https://www.ohloh.net/p/adpaa/analyses/latest</a><br>
<br>Besides most of the processing code is written in IDL, also there is a GUI written using IDL. For some reason my local IDL license doesn&#39;t work with Fedora 11 and my Cisco VPN client kills my regular internet access. I can access to license server this way, but then lose my net access :) <br>


<br><br> </div><div><div></div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div>
<br>
On Sun, Oct 18, 2009 at 1:15 AM, Gökhan Sever &lt;<a href="mailto:gokhansever@gmail.com" target="_blank">gokhansever@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Sat, Oct 17, 2009 at 11:56 PM, Brian Granger &lt;<a href="http://ellisonbg.net" target="_blank">ellisonbg.net</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Does each .sea file take the same amount of time?<br>
&gt;<br>
&gt; No, depends on the file size and content, each processing takes different<br>
&gt; amount of time.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; How many .sea files are there in total?<br>
&gt;<br>
&gt; 17 folders so in total 17 sea files. Actually the example dataset I am using<br>
&gt; here is just a small subset of the original dataset. There may be more than<br>
&gt; couple hundred folders lying inside the main archive. For now my main<br>
&gt; intention is only to parallelize (why my gmail shows this word with a red<br>
&gt; underlined fashion, google itself suggest this as right but gmail warns :))<br>
&gt; the small subset.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; How long for each .sea file?<br>
&gt;<br>
&gt; 3 to 5 minutes, again depends on the file size and content.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; What is the result?  A new file?<br>
&gt;<br>
&gt; Bunch of new files (50 to 100). For instance, a 60 MB sea file produces<br>
&gt; ~430MB data when it is processed mostly ASCII but there are Binary files<br>
&gt; outputted as well. Out of 430 MB there are also down-sampled data created<br>
&gt; using 25 Hz data down to 1 Hz equivalents. Later on combined data, using<br>
&gt; data from early stage of the processing to create higher level data, such as<br>
&gt; using voltage data to construct concentration data applying some equations<br>
&gt; etc...<br>
&gt;<br>
&gt; Hope it is more clear now.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt; Brian<br>
&gt;&gt;<br>
&gt;&gt; On Sat, Oct 17, 2009 at 9:17 PM, Gökhan Sever &lt;<a href="mailto:gokhansever@gmail.com" target="_blank">gokhansever@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sat, Oct 17, 2009 at 10:58 PM, Brian Granger &lt;<a href="http://ellisonbg.net" target="_blank">ellisonbg.net</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Sat, Oct 17, 2009 at 5:41 PM, Gökhan Sever &lt;<a href="mailto:gokhansever@gmail.com" target="_blank">gokhansever@gmail.com</a>&gt;<br>
&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Hello,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I want to experiment IPython&#39;s parallel computing functionality. This<br>
&gt;&gt;&gt;&gt;&gt; far I couldn&#39;t progress much because ipcluster instantiation stalls giving<br>
&gt;&gt;&gt;&gt;&gt; the following messages without dropping me into the main IPython shell.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; My intention is parallelise a small Python script that calls an<br>
&gt;&gt;&gt;&gt;&gt; external set of scripts that process the dataset I have in-hand. It is not a<br>
&gt;&gt;&gt;&gt;&gt; huge computing power demanding task but in my Intel 2.5Ghz Dual Core 2 it<br>
&gt;&gt;&gt;&gt;&gt; takes about 1.5 hours to process the whole dataset. Looking at the system<br>
&gt;&gt;&gt;&gt;&gt; monitor I see that the workload is not equally distributed in between CPUs<br>
&gt;&gt;&gt;&gt;&gt; (one of them usually much lazier than the other.) I am sure parallezing the<br>
&gt;&gt;&gt;&gt;&gt; code run would boost the processing speed. In my dataset I have 17 folders<br>
&gt;&gt;&gt;&gt;&gt; and each folder is independent from each other. My script visits each folder<br>
&gt;&gt;&gt;&gt;&gt; and calls the main external script via subprocess module&#39;s call function.<br>
&gt;&gt;&gt;&gt;&gt; Processing starts with the first folder, and doesn&#39;t work on the next folder<br>
&gt;&gt;&gt;&gt;&gt; unless the processing finishes with the previous folder. Basically, what I<br>
&gt;&gt;&gt;&gt;&gt; really want is to put externally called scripts into separate threads, so<br>
&gt;&gt;&gt;&gt;&gt; that I don&#39;t need to wait the previous job to be done during the processing<br>
&gt;&gt;&gt;&gt;&gt; process.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; From the IPython parallel computing documentation, it seems like what I<br>
&gt;&gt;&gt;&gt;&gt; want is doable in IPython. However I need some advice whether my<br>
&gt;&gt;&gt;&gt;&gt; understanding is correct in this aspect. Also for the solution of the below<br>
&gt;&gt;&gt;&gt;&gt; warning messages.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Yes, I think it would work just fine for that.  If you have the names of<br>
&gt;&gt;&gt;&gt; the folders and a function that will compute what you want, given the name<br>
&gt;&gt;&gt;&gt; of the folder, you should be able to just use MultiEngineClient.map<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This is the script in hand that I want to parallelize:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; import os<br>
&gt;&gt;&gt; from subprocess import call<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; init = os.getcwd()<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; for root, dirs, files in os.walk(&#39;.&#39;):<br>
&gt;&gt;&gt;     dirs.sort()<br>
&gt;&gt;&gt;     for file in files:<br>
&gt;&gt;&gt;         if file.endswith(&#39;.sea&#39;) == True:<br>
&gt;&gt;&gt;             print file<br>
&gt;&gt;&gt;             os.chdir(root)<br>
&gt;&gt;&gt;             print os.getcwd()<br>
&gt;&gt;&gt;             call([&#39;postprocessing_saudi&#39;, file])<br>
&gt;&gt;&gt;             os.chdir(init)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; From the top of the dataset folder hierarchy I call this script, and<br>
&gt;&gt;&gt; whenever a &quot;sea&quot; ended file encountered it executes set of external scripts<br>
&gt;&gt;&gt; starting with postprocessing_saudi bash script. And goes on with IDL, perl,<br>
&gt;&gt;&gt; python scripts till it finishes processing of that &quot;sea&quot; file and so on so<br>
&gt;&gt;&gt; forth till the directories exhaust.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If I can make parallel functionality working, will I need to make any<br>
&gt;&gt;&gt; changes in this code? If not could you be little more descriptive on the use<br>
&gt;&gt;&gt; of MultiEngineClient.map<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thanks for your comments.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Brian<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Thanks.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; [gsever@ccn Desktop]$  ipcluster local -n 4<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; /usr/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-i686.egg/twisted/python/filepath.py:12:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sha module is deprecated; use the hashlib module<br>
&gt;&gt;&gt;&gt;&gt; instead<br>
&gt;&gt;&gt;&gt;&gt;   import sha<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; /usr/lib/python2.6/site-packages/foolscap-0.4.2-py2.6.egg/foolscap/banana.py:2:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sets module is deprecated<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:37-0500 [-] Log opened.<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:37-0500 [-] Process [&#39;ipcontroller&#39;,<br>
&gt;&gt;&gt;&gt;&gt; &#39;--logfile=/home/gsever/.ipython/log/ipcontroller&#39;] has started with<br>
&gt;&gt;&gt;&gt;&gt; pid=11066<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:37-0500 [-] Waiting for controller to finish<br>
&gt;&gt;&gt;&gt;&gt; starting...<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:38-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-i686.egg/twisted/python/filepath.py:12:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sha module is deprecated; use the hashlib module<br>
&gt;&gt;&gt;&gt;&gt; instead\n  import sha\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:38-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/foolscap-0.4.2-py2.6.egg/foolscap/banana.py:2:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sets module is deprecated\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-] Controller started<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-] Process [&#39;ipengine&#39;,<br>
&gt;&gt;&gt;&gt;&gt; &#39;--logfile=/home/gsever/.ipython/log/ipengine11066-&#39;] has started with<br>
&gt;&gt;&gt;&gt;&gt; pid=11067<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-] Process [&#39;ipengine&#39;,<br>
&gt;&gt;&gt;&gt;&gt; &#39;--logfile=/home/gsever/.ipython/log/ipengine11066-&#39;] has started with<br>
&gt;&gt;&gt;&gt;&gt; pid=11068<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-] Process [&#39;ipengine&#39;,<br>
&gt;&gt;&gt;&gt;&gt; &#39;--logfile=/home/gsever/.ipython/log/ipengine11066-&#39;] has started with<br>
&gt;&gt;&gt;&gt;&gt; pid=11069<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-] Process [&#39;ipengine&#39;,<br>
&gt;&gt;&gt;&gt;&gt; &#39;--logfile=/home/gsever/.ipython/log/ipengine11066-&#39;] has started with<br>
&gt;&gt;&gt;&gt;&gt; pid=11070<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-] Engines started with pids: [11067, 11068,<br>
&gt;&gt;&gt;&gt;&gt; 11069, 11070]<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-i686.egg/twisted/python/filepath.py:12:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sha module is deprecated; use the hashlib module<br>
&gt;&gt;&gt;&gt;&gt; instead\n  import sha\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-i686.egg/twisted/python/filepath.py:12:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sha module is deprecated; use the hashlib module<br>
&gt;&gt;&gt;&gt;&gt; instead\n  import sha\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:39-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/foolscap-0.4.2-py2.6.egg/foolscap/banana.py:2:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sets module is deprecated\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:40-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/foolscap-0.4.2-py2.6.egg/foolscap/banana.py:2:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sets module is deprecated\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:40-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-i686.egg/twisted/python/filepath.py:12:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sha module is deprecated; use the hashlib module<br>
&gt;&gt;&gt;&gt;&gt; instead\n  import sha\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:40-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-i686.egg/twisted/python/filepath.py:12:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sha module is deprecated; use the hashlib module<br>
&gt;&gt;&gt;&gt;&gt; instead\n  import sha\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:40-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/foolscap-0.4.2-py2.6.egg/foolscap/banana.py:2:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sets module is deprecated\n&#39;<br>
&gt;&gt;&gt;&gt;&gt; 2009-10-17 18:59:40-0500 [-]<br>
&gt;&gt;&gt;&gt;&gt; &#39;/usr/lib/python2.6/site-packages/foolscap-0.4.2-py2.6.egg/foolscap/banana.py:2:<br>
&gt;&gt;&gt;&gt;&gt; DeprecationWarning: the sets module is deprecated\n&#39;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Here is my system info:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; ================================================================================<br>
&gt;&gt;&gt;&gt;&gt; Platform     :<br>
&gt;&gt;&gt;&gt;&gt; Linux-2.6.29.6-217.2.3.fc11.i686.PAE-i686-with-fedora-11-Leonidas<br>
&gt;&gt;&gt;&gt;&gt; Python       : (&#39;CPython&#39;, &#39;tags/r26&#39;, &#39;66714&#39;)<br>
&gt;&gt;&gt;&gt;&gt; IPython      : 0.10<br>
&gt;&gt;&gt;&gt;&gt; NumPy      : 1.4.0.dev<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; ================================================================================<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; Gökhan<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; IPython-user mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:IPython-user@scipy.org" target="_blank">IPython-user@scipy.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Gökhan<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Gökhan<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; IPython-user mailing list<br>
&gt; <a href="mailto:IPython-user@scipy.org" target="_blank">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>
&gt;<br>
</div></div></blockquote></div></div></div><br><br clear="all"><br>-- <br><font color="#888888">Gökhan<br>
</font></blockquote></div></div></div><br>
</blockquote></div><br><br clear="all"><br>-- <br>Gökhan<br>