On Jan 10, 2008 2:25 PM, Anand Patil <<a href="mailto:anand.prabhakar.patil@gmail.com">anand.prabhakar.patil@gmail.com</a>> 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'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(('<a href="http://127.0.0.1" target="_blank">127.0.0.1</a>',10105))<br><br>C=ones((5000,1000),dtype=float)
<br>rc.scatterAll('C',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>
         2809230 function calls in 9.891 CPU seconds<br>
<br>
   Ordered by: internal time<br>
<br>
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)<br>
      618    6.075    0.010    6.075    0.010 {method 'recv' of '_socket.socket' objects}<br>
        6    1.484    0.247    1.484    0.247 <string>:1(sendall)<br>
        1    0.980    0.980    1.855    1.855 base64.py:285(encode)<br>
   701757    0.371    0.000    0.371    0.000 {binascii.b2a_base64}<br>
        1    0.216    0.216    0.216    0.216 {cPickle.dumps}<br>
   701759    0.205    0.000    0.205    0.000 {method 'read' of 'cStringIO.StringI' objects}<br>
       60    0.183    0.003    0.183    0.003 {method 'join' of 'str' objects}<br>
   702494    0.173    0.000    0.173    0.000 {method 'append' of 'list' objects}<br>
   701798    0.125    0.000    0.125    0.000 {len}<br>
        3    0.040    0.013    2.079    0.693 xmlrpclib.py:1041(dumps)<br>
        1    0.029    0.029    0.029    0.029 {method 'fill' of 'numpy.ndarray' objects}<br>
        3    0.002    0.001    9.642    3.214 xmlrpclib.py:1427(__request)<br>
        3    0.002    0.001    9.644    3.215 xmlrpclib.py:1146(__call__)<br>
        1    0.001    0.001    9.815    9.815 multienginexmlrpc.py:946(scatterAll)<br>
       21    0.000    0.000    6.076    0.289 socket.py:321(readline)<br>
        1    0.000    0.000    9.891    9.891 test.py:2(<module>)<br><br>
Looks like it's pickling the array and sending it as a string. I think mpi4py can send numerical arrays without pickling, so perhaps I don't have it installed properly?<br>
<br>
Thanks,<br>
Anand<br>