On Jan 10, 2008 2:25 PM, Anand Patil &lt;<a href="mailto:anand.prabhakar.patil@gmail.com">anand.prabhakar.patil@gmail.com</a>&gt; wrote:<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;">
Hi all,<br><br>Just trying to figure out whether something is wrong with my installation: I&#39;m using mpi4py with mpich, on a machine with two quad-core 3.0Ghz intel processors. The following script takes 7.21s (wall time) with seven IPEngines, with almost all of the time spent in the scatterAll() operation:
<br><br><br>from numpy import *<br>from ipython1 import *<br>import ipython1.kernel.api as kernel<br>rc = kernel.RemoteController((&#39;<a href="http://127.0.0.1" target="_blank">127.0.0.1</a>&#39;,10105))<br><br>C=ones((5000,1000),dtype=float)
<br>rc.scatterAll(&#39;C&#39;,C)<br><br>rc.resetAll()<br><br><br>Is this fairly typical, and if not is there anything I can do to speed up the pushing and pulling?<br><br>Thanks,<br><font color="#888888">Anand Patil<br>
</font></blockquote></div><br><br>I got similar results with OpenMPI. Here are the profiler results:<br>
<br>
In [11]: run -p test<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2809230 function calls in 9.891 CPU seconds<br>
<br>
&nbsp;&nbsp; Ordered by: internal time<br>
<br>
&nbsp;&nbsp; ncalls&nbsp; tottime&nbsp; percall&nbsp; cumtime&nbsp; percall filename:lineno(function)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 618&nbsp;&nbsp;&nbsp; 6.075&nbsp;&nbsp;&nbsp; 0.010&nbsp;&nbsp;&nbsp; 6.075&nbsp;&nbsp;&nbsp; 0.010 {method &#39;recv&#39; of &#39;_socket.socket&#39; objects}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp; 1.484&nbsp;&nbsp;&nbsp; 0.247&nbsp;&nbsp;&nbsp; 1.484&nbsp;&nbsp;&nbsp; 0.247 &lt;string&gt;:1(sendall)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 0.980&nbsp;&nbsp;&nbsp; 0.980&nbsp;&nbsp;&nbsp; 1.855&nbsp;&nbsp;&nbsp; 1.855 base64.py:285(encode)<br>
&nbsp;&nbsp; 701757&nbsp;&nbsp;&nbsp; 0.371&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 0.371&nbsp;&nbsp;&nbsp; 0.000 {binascii.b2a_base64}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 0.216&nbsp;&nbsp;&nbsp; 0.216&nbsp;&nbsp;&nbsp; 0.216&nbsp;&nbsp;&nbsp; 0.216 {cPickle.dumps}<br>
&nbsp;&nbsp; 701759&nbsp;&nbsp;&nbsp; 0.205&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 0.205&nbsp;&nbsp;&nbsp; 0.000 {method &#39;read&#39; of &#39;cStringIO.StringI&#39; objects}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp; 0.183&nbsp;&nbsp;&nbsp; 0.003&nbsp;&nbsp;&nbsp; 0.183&nbsp;&nbsp;&nbsp; 0.003 {method &#39;join&#39; of &#39;str&#39; objects}<br>
&nbsp;&nbsp; 702494&nbsp;&nbsp;&nbsp; 0.173&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 0.173&nbsp;&nbsp;&nbsp; 0.000 {method &#39;append&#39; of &#39;list&#39; objects}<br>
&nbsp;&nbsp; 701798&nbsp;&nbsp;&nbsp; 0.125&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 0.125&nbsp;&nbsp;&nbsp; 0.000 {len}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; 0.040&nbsp;&nbsp;&nbsp; 0.013&nbsp;&nbsp;&nbsp; 2.079&nbsp;&nbsp;&nbsp; 0.693 xmlrpclib.py:1041(dumps)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 0.029&nbsp;&nbsp;&nbsp; 0.029&nbsp;&nbsp;&nbsp; 0.029&nbsp;&nbsp;&nbsp; 0.029 {method &#39;fill&#39; of &#39;numpy.ndarray&#39; objects}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; 0.002&nbsp;&nbsp;&nbsp; 0.001&nbsp;&nbsp;&nbsp; 9.642&nbsp;&nbsp;&nbsp; 3.214 xmlrpclib.py:1427(__request)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; 0.002&nbsp;&nbsp;&nbsp; 0.001&nbsp;&nbsp;&nbsp; 9.644&nbsp;&nbsp;&nbsp; 3.215 xmlrpclib.py:1146(__call__)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 0.001&nbsp;&nbsp;&nbsp; 0.001&nbsp;&nbsp;&nbsp; 9.815&nbsp;&nbsp;&nbsp; 9.815 multienginexmlrpc.py:946(scatterAll)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 6.076&nbsp;&nbsp;&nbsp; 0.289 socket.py:321(readline)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 0.000&nbsp;&nbsp;&nbsp; 9.891&nbsp;&nbsp;&nbsp; 9.891 test.py:2(&lt;module&gt;)<br><br>
Looks like it&#39;s pickling the array and sending it as a string. I think mpi4py can send numerical arrays without pickling, so perhaps I don&#39;t have it installed properly?<br>
<br>
Thanks,<br>
Anand<br>