<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 13, 2017 at 6:16 PM, Stefan van der Walt <span dir="ltr"><<a href="mailto:stefanv@berkeley.edu" target="_blank">stefanv@berkeley.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi everyone,<br>
<br>
As many of you know, speed has been a point of contention in<br>
scikit-image for a long time. We've made a very deliberate decision to<br>
focus on writing high-level, understandable code (via Python and<br>
Cython): both to lower the barrier to entry for newcomers, and to lessen<br>
the burden on maintainers. But execution time comparisons, vs OpenCV<br>
e.g., left much to be desired.<br>
<br>
I think we have hit a turning point in the road. Binary wheels for<br>
Numba (actually, llvmlite) were recently uploaded to PyPi, making this<br>
technology available to users on both pip and conda installations. The<br>
importance of this release on pypi should not be dismissed, and I am<br>
grateful to the numba team and Continuum for making that decision.<br></blockquote><div><br></div><div>Agreed. Note that there are no Windows wheels up on PyPI (yet, or not coming?). Given that there are no SciPy wheels for Windows either I don't think that that changes your argument much - people should just use a binary distribution on Windows - but I thought I'd point it out anway.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
So, how does that impact scikit-image? Well, imagine we choose to<br>
optimize various procedures via numba (see Juan's blog post for exactly<br>
how impactful this can be:<br>
<a href="https://ilovesymposia.com/2017/03/15/prettier-lowlevelcallables-with-numba-jit-and-decorators/" rel="noreferrer" target="_blank">https://ilovesymposia.com/<wbr>2017/03/15/prettier-<wbr>lowlevelcallables-with-numba-<wbr>jit-and-decorators/</a>).<br></blockquote><div><br></div><div>That's a great post. @Juan: get yourself on Planet Python!<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The only question we have to answer (from a survival point of view)<br>
needs to be: if, somehow, something happens to numba, will an<br>
alternative will be available at that time? Looking at the Python JIT<br>
landscape (which is very active), and the current state of numba<br>
development, I think this is likely. And, if we choose to use numba, of<br>
course we'll help to keep it healthy, as far as we can.<br>
<br>
I'd love to hear your thoughts. </blockquote><div><br></div><div>I'm only an occasional user at the moment, so won't express an opinion either way. But will be following this thread with interest.<br><br></div><div>Cheers,<br></div><div>Ralf<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I, for one, am excited about the<br>
prospect of writing kernels as simply as:<br>
<br>
>>> @jit_filter_function<br>
... def fmin(values):<br>
... result = np.inf<br>
... for v in values:<br>
... if v < result:<br>
... result = v<br>
... return result<br>
<br>
>>> ndi.generic_filter(image, fmin, footprint=fp)<br>
<br>
Best regards<br>
Stéfan<br>
______________________________<wbr>_________________<br>
scikit-image mailing list<br>
<a href="mailto:scikit-image@python.org">scikit-image@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-image" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/scikit-image</a><br>
</blockquote></div><br></div></div>