[Numpy-discussion] Transonic Vision: unifying Python-Numpy accelerators

Ralf Gommers ralf.gommers at gmail.com
Wed Nov 6 23:49:08 EST 2019


On Mon, Nov 4, 2019 at 4:54 PM PIERRE AUGIER <
pierre.augier at univ-grenoble-alpes.fr> wrote:

> Dear Python-Numpy community,
>
> Transonic is a pure Python package to easily accelerate modern
> Python-Numpy code with different accelerators (currently Cython, Pythran
> and Numba).
>
> I'm trying to get some funding for this project. The related work would
> benefit in particular to Cython, Numba, Pythran and Xtensor.
>
> To obtain this funding, we really need some feedback from some people
> knowing the subject of performance with Python-Numpy code.
>
> That's one of the reason why we wrote this long and serious text on
> Transonic Vision: http://tiny.cc/transonic-vision. We describe some
> issues (perf for numerical kernels, incompatible accelerators, community
> split between experts and simple users, ...) and possible improvements.
>

Thanks Pierre, that's a very interesting vision paper.

In case you haven't seen it, there was a discussion on the pandas-dev
mailing list a couple of weeks ago about adopting Numba as a dependency
(and issues with that).

Your comment on my assessment from 1.5 years ago being a little unfair to
Pythran may be true - not sure it was at the time, but Pythran seems to
mature nicely.

The ability to switch between just-in-time and ahead-of-time compilation is
nice. One thing I noticed is that this actual switching is not completely
fluent: the jit and boost decorators have different signatures, and there's
no way to globally switch behavior (say with an env var, as for backend
selection).


> Help would be very much appreciated.
>

I'd be interested to help think about adoption and/or funding.

Cheers,
Ralf


>
> Now a coding riddle:
>
> import numpy as np
> from transonic import jit
>
> @jit(native=True, xsimd=True)
> def fxfy(ft, fn, theta):
>     sin_theta = np.sin(theta)
>     cos_theta = np.cos(theta)
>     fx = cos_theta * ft - sin_theta * fn
>     fy = sin_theta * ft + cos_theta * fn
>     return fx, fy
>
> @jit(native=True, xsimd=True)
> def fxfy_loops(ft, fn, theta):
>     n0 = theta.size
>     fx = np.empty_like(ft)
>     fy = np.empty_like(fn)
>     for index in range(n0):
>         sin_theta = np.sin(theta[index])
>         cos_theta = np.cos(theta[index])
>         fx[index] = cos_theta * ft[index] - sin_theta * fn[index]
>         fy[index] = sin_theta * ft[index] + cos_theta * fn[index]
>     return fx, fy
>
> How can be compared the performances of these functions with pure Numpy,
> Numba and Pythran ?
>
> You can find out the answer in our note http://tiny.cc/transonic-vision
> :-)
>
> Pierre
>
> > Message: 1
> > Date: Thu, 31 Oct 2019 21:16:06 +0100 (CET)
> > From: PIERRE AUGIER <pierre.augier at univ-grenoble-alpes.fr>
> > To: numpy-discussion at python.org
> > Subject: [Numpy-discussion] Transonic Vision: unifying Python-Numpy
> >       accelerators
> > Message-ID:
> >       <
> 1080118635.5930814.1572552966711.JavaMail.zimbra at univ-grenoble-alpes.fr>
> >
> > Content-Type: text/plain; charset=utf-8
> >
> > Dear Python-Numpy community,
> >
> > Few years ago I started to use a lot Python and Numpy for science. I'd
> like to
> > thanks all people who contribute to this fantastic community.
> >
> > I used a lot Cython, Pythran and Numba and for the FluidDyn project, we
> created
> > Transonic, a pure Python package to easily accelerate modern
> Python-Numpy code
> > with different accelerators. We wrote a long and serious text to explain
> why we
> > think Transonic could have a positive impact on the scientific Python
> > ecosystem.
> >
> > Here it is: http://tiny.cc/transonic-vision
> >
> > Feedback and discussions would be greatly appreciated!
> >
> > Pierre
> >
> > --
> > Pierre Augier - CR CNRS                 http://www.legi.grenoble-inp.fr
> > LEGI (UMR 5519) Laboratoire des Ecoulements Geophysiques et Industriels
> > BP53, 38041 Grenoble Cedex, France                tel:+33.4.56.52.86.16
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20191106/05bcfd57/attachment.html>


More information about the NumPy-Discussion mailing list