I would also love to hear from those of you who are using SymPy to do code generation or would like to use SymPy to do code generation, what is your wishlist for SymPy? What do you wish it could do that it can't do or what do you wish it could do better?
Aaron Meurer On Fri, Oct 30, 2015 at 4:23 PM, Anthony Scopatz <[email protected]> wrote: > Hello All, > > As many of you probably know, earlier this month Aaron joined my research > group at the University of South Carolina. He'll be working on adding / > improving SymPy's capabilities with respect to being an optimizing compiler. > > There are more details about this vision below, but right now we are in the > process of doing a literature review of sorts, and trying to figure out what > (SymPy-specific) is out there. What has been done already. Aaron et al, have > started putting together a page on the wiki that compiles some of this > information. We'd really appreciate it if you know of anything that is not > on this page if you could let us know. > > We also would be grateful if you could let us know (publicly or privately) > about any use cases that you might have for a symbolic optimizing compiler. > There are many examples where different folks have done various pieces of > this (chemreac, dengo, pydy, some stuff in pyne), but these examples tend to > be domain specific. This effort is supposed to target a general scientific > computing audience, and to do that we want to have as many possible > scenarios in mind at the outset. > > And of course, we'd love it if other folks dived in and helped us put this > thing together :). > > Thanks a million! > Be Well > Anthony > > Vision > ------------ > Essentially, what we want to build is an optimizing compiler for symbolic > mathematical expressions in order to solve simple equations, ODEs, PDEs, and > perhaps more. This compiler should be able to produce very fast code, though > the compiler itself may be expensive. > > Ultimately, it is easy to imagine a number of backend targets, such as C, > Fortran, LLVM IR, Cython, pure Python, etc. It is also easy to imagine a > couple of meaningful frontends - SymPy objects (for starters) and LaTeX > (which could then be parsed into SymPy). > > We are aiming to have an optimization pipeline that is highly customizable > (but with sensible defaults). This would allow folks to tailor the result to > their problem or add their own problem-specific optimizations. There are > likely different levels to this (such as on an expression vs at full > function scope). Some initial elements of this pipeline might include CSE, > simple rule-based rewriting (like a/b/c -> a/(b*c) or a*exp(b*x) -> > A*2^(B*x)), and replacing non-analytic sub-expressions with approximate > expansions (taylor, pade, chebychev, etc) out to an order computed based on > floating point precision. > > That said, we aren't the only ones thinking in this area. The chemora > (http://arxiv.org/pdf/1410.1764.pdf, h/t Matt Turk) code does something like > the vision above but using Mathematica, for HPC applications only, and with > an astrophysical bent. > > I think a tool like this is important because it allows the exploration of > more scientific models more quickly and with a higher degree of > verification. The current workflow for most scientific modeling is to come > up with a mathematical representation of the problem, a human then > translates that into a programming language of choice, they may or may not > test this translation, and then execution of that model. This compiler aims > to get rid of the time-constrained human in those middle steps. It won't > tell you if the model is right or not, but you'll sure be able to pump out a > whole lot more models :). > > > -- > > Asst. Prof. Anthony Scopatz > Nuclear Engineering Program > Mechanical Engineering Dept. > University of South Carolina > [email protected] > Office: (803) 777-7629 > Cell: (512) 827-8239 > Check my calendar > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAPk-6T453AxDYt1UCmBj_7vrzr_HikC2U03UP%2Bzz5_RtDA9NDA%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6KHT%3DpZq7reB5%3D0t9XE71wWFPBWz1o2awkFdX9KpmymyA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
