<br><br><div class="gmail_quote">On Mon, Feb 11, 2013 at 9:33 AM, Moritz Emanuel Beber <span dir="ltr">&lt;<a href="mailto:moritz.beber@gmail.com" target="_blank">moritz.beber@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Dear all,<br>
<br>
I&#39;m trying to parallalize the computation of all pairwise inner products of the column vectors of a matrix. Unfortunately, I have some issues:<br>
<br>
Since I want to avoid passing the large matrix many times, I pushed the matrix to the engines, making it available to the namespace there. I can access that matrix as a global just fine using a function defined in the notebook, doing the same in a module fails... (Please have a look at the two attached files.)<br>


<br>
When I use an IPython.parallel.Reference to the global matrix and pass that to the function, that works in the external module. Of course, this means I have to pass a large list containing the reference to the map function.<br>

</blockquote><div><br></div><div>This is the most common confusion when working with IPython.parallel.</div><div><br></div><div>The gist: interactively defined functions and objects are in the `__main__` module, so `globals()` in those scopes points to the same namespace.</div>

<div>When you move something to a module, you change what `globals()` points to.  You can use the @interactive decorator (in IPython.parallel)</div><div>to make functions defined in modules behave as if they were interactively defined (i.e. globals will be __main__ rather than the defining module).</div>

<div><br></div><div>So basically, in your code all you need to add is:</div><div><br></div><div>from IPython.parallel import require, interactive</div><div><br></div><div><div>@interactive</div><div>@require(&quot;numpy&quot;)</div>

<div>def parallel_inner(i, j):</div></div><div>    ...</div><div><br></div><div>Also note that to decorate with require, you need the `@`, which is missing in your code.</div><div><br></div><div>More detail <a href="http://stackoverflow.com/questions/10857250/python-name-space-issues-with-ipython-parallel">here</a> and <a href="http://stackoverflow.com/questions/12304847/ipython-parallel-computing-namespace-issues">here</a>.</div>

<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Insights and advice is appreciated,<br>
Moritz<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>
<br></blockquote></div><br>