Hello,

We’re trying to do a part of this in the TACO team, and with a Python wrapper 
in the form of PyData/Sparse. It will allow an abstract array/scheduling to 
take place, but there are a bunch of constraints, the most important one being 
that a C compiler cannot be required at runtime.

However, this may take a while to materialize, as we need an LLVM backend, and 
a Python wrapper (matching the NumPy API), and support for arbitrary functions 
(like universal functions).

https://github.com/tensor-compiler/taco
http://fredrikbk.com/publications/kjolstad-thesis.pdf

--
Sent from Canary (https://canarymail.io)

> On Dienstag, Nov. 24, 2020 at 7:22 PM, YueCompl <compl....@icloud.com 
> (mailto:compl....@icloud.com)> wrote:
> Is there some community interest to develop fusion based high-performance 
> array programming? Something like 
> https://github.com/AccelerateHS/accelerate#an-embedded-language-for-accelerated-array-computations
>  , but that embedded DSL is far less pleasing compared to Python as the 
> surface language for optimized Numpy code in C.
>
> I imagine that we might be able to transpile a Numpy program into fused LLVM 
> IR, then deploy part as host code on CPUs and part as CUDA code on GPUs?
>
> I know Numba is already doing the array part, but it is too limited in 
> addressing more complex non-array data structures. I had been approaching 
> ~20K separate data series with some intermediate variables for each, then it 
> took up to 30+GB RAM keep compiling yet gave no result after 10+hours.
>
> Compl
>
>
> > On 2020-11-24, at 23:47, PIERRE AUGIER 
> > <pierre.aug...@univ-grenoble-alpes.fr 
> > (mailto:pierre.aug...@univ-grenoble-alpes.fr)> wrote:
> > Hi,
> >
> > I recently took a bit of time to study the comment "The ecological impact 
> > of high-performance computing in astrophysics" published in Nature 
> > Astronomy (Zwart, 2020, https://www.nature.com/articles/s41550-020-1208-y, 
> > https://arxiv.org/pdf/2009.11295.pdf), where it is stated that "Best 
> > however, for the environment is to abandon Python for a more 
> > environmentally friendly (compiled) programming language.".
> >
> > I wrote a simple Python-Numpy implementation of the problem used for this 
> > study (https://www.nbabel.org) and, accelerated by Transonic-Pythran, it's 
> > very efficient. Here are some numbers (elapsed times in s, smaller is 
> > better):
> >
> > | # particles | Py | C++ | Fortran | Julia |
> > |-------------|-----|-----|---------|-------|
> > | 1024 | 29 | 55 | 41 | 45 |
> > | 2048 | 123 | 231 | 166 | 173 |
> >
> > The code and a modified figure are here: https://github.com/paugier/nbabel 
> > (There is no check on the results for https://www.nbabel.org, so one still 
> > has to be very careful.)
> >
> > I think that the Numpy community should spend a bit of energy to show what 
> > can be done with the existing tools to get very high performance (and low 
> > CO2 production) with Python. This work could be the basis of a serious 
> > reply to the comment by Zwart (2020).
> >
> > Unfortunately the Python solution in https://www.nbabel.org is very bad in 
> > terms of performance (and therefore CO2 production). It is also true for 
> > most of the Python solutions for the Computer Language Benchmarks Game in 
> > https://benchmarksgame-team.pages.debian.net/benchmarksgame/ (codes here 
> > https://salsa.debian.org/benchmarksgame-team/benchmarksgame#what-else).
> >
> > We could try to fix this so that people see that in many cases, it is not 
> > necessary to "abandon Python for a more environmentally friendly (compiled) 
> > programming language". One of the longest and hardest task would be to 
> > implement the different cases of the Computer Language Benchmarks Game in 
> > standard and modern Python-Numpy. Then, optimizing and accelerating such 
> > code should be doable and we should be able to get very good performance at 
> > least for some cases. Good news for this project, (i) the first point can 
> > be done by anyone with good knowledge in Python-Numpy (many potential 
> > workers), (ii) for some cases, there are already good Python 
> > implementations and (iii) the work can easily be parallelized.
> >
> > It is not a criticism, but the (beautiful and very nice) new Numpy website 
> > https://numpy.org/ is not very convincing in terms of performance. It's 
> > written "Performant The core of NumPy is well-optimized C code. Enjoy the 
> > flexibility of Python with the speed of compiled code." It's true that the 
> > core of Numpy is well-optimized C code but to seriously compete with C++, 
> > Fortran or Julia in terms of numerical performance, one needs to use other 
> > tools to move the compiled-interpreted boundary outside the hot loops. So 
> > it could be reasonable to mention such tools (in particular Numba, Pythran, 
> > Cython and Transonic).
> >
> > Is there already something planned to answer to Zwart (2020)?
> >
> > Any opinions or suggestions on this potential project?
> >
> > Pierre
> >
> > PS: Of course, alternative Python interpreters (PyPy, GraalPython, Pyjion, 
> > Pyston, etc.) could also be used, especially if HPy 
> > (https://github.com/hpyproject/hpy) is successful (C core of Numpy written 
> > in HPy, Cython able to produce HPy code, etc.). However, I tend to be a bit 
> > skeptical in the ability of such technologies to reach very high 
> > performance for low-level Numpy code (performance that can be reached by 
> > replacing whole Python functions with optimized compiled code). Of course, 
> > I hope I'm wrong! IMHO, it does not remove the need for a successful HPy!
> >
> > --
> > 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@python.org (mailto:NumPy-Discussion@python.org)
> > https://mail.python.org/mailman/listinfo/numpy-discussion
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to