<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Oct 6, 2015 at 1:14 AM, Daπid <span dir="ltr"><<a href="mailto:davidmenhur@gmail.com" target="_blank">davidmenhur@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">One idea: what about creating a "parallel numpy"? There are a few algorithms that can benefit from parallelisation. This library would mimic Numpy's signature, and the user would be responsible for choosing the single threaded or the parallel one by just changing np.function(x, y) to pnp.function(x, y)</div></div></div></blockquote><div><br></div><div>I would recommend taking a look at dask.array [1], which in many cases works exactly like a parallel NumPy, though it also does lazy and out-of-core computation. It's a new project, but it's remarkably mature -- we use it as an alternative array backend (to numpy) in xray, and it's also being used by scikit-image.</div><div><br></div><div>[1] <a href="http://dask.pydata.org/en/latest/array.html">http://dask.pydata.org/en/latest/array.html</a> </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra">If that were deemed a good one, what would be the best parallelisation scheme? OpenMP? Threads?</div></div></blockquote><div><br></div><div>Dask uses threads. That works pretty well as long as all the hard work is calling into something that releases the GIL (which includes NumPy, of course).</div></div></div></div>