Yeah the idea for a first pass is to only support Static Single Assignment codes and then iterate upon that.
-- Andy On Tue, Mar 20, 2012 at 2:47 PM, Nikhilesh Sigatapu <[email protected]> wrote: > The idea is interesting. You would have to consider side-effects and other > similar complications that make optimization hard for the C compiler in the > first place. For example, '*x += *y; *x += *y;' is different from '*x += 2 * > (*y)' if x and y point to the same thing. > > > On 03/20/2012 01:55 PM, Matthew Rocklin wrote: >> >> Ah, I see. So we would need to parse C code, do some optimization in >> sympy, and then spit C code back out and presumably give it to a compiler. >> >> SymPy does have the ability to reason about code in a way that is quite >> different from a traditional compiler. (I.e. we know that sin(x)**2 + >> cos(x)**2 is 1, a compiler won't). It would be interesting to hook in >> some SymPy system into some standard compiler tool-chain and see what we >> could do. >> >> As a first pass we could skip over any control stuff (this might be >> hard) and just look at simpler expressions. We could run over some large >> body of code and tweak expressions at a local level. We might also want >> to consider simplifying based on numerical issues. There was a >> scicomp.stackexchange question about this >> >> http://scicomp.stackexchange.com/questions/527/is-there-software-that-can-autogenerate-numerically-accurate-floating-point-c-ro >> >> Really, all of these questions would be accessible once we had a code >> parser. Perhaps the GSoC idea is to build a code parser for SymPy? >> Anyone out there familiar with building parsers? >> >> On Tue, Mar 20, 2012 at 10:35 AM, Andy Ray Terrel <[email protected] >> <mailto:[email protected]>> wrote: >> >> Well I was thinking more of taking a piece of c code, but it could be >> take a python function, grab the code object and manipulate that. >> >> What I really want is to play around with symbolic code optimizations >> and since we have quite a few tools to go from symbolics to code, it >> seems easy to do simple things in the other directions. I realize >> this isn't super well formed but after seeing a number of these >> symbolic executor papers, I think it is probably a good way to go. >> >> -- Andy >> >> On Tue, Mar 20, 2012 at 11:28 AM, Aaron Meurer <[email protected] >> <mailto:[email protected]>> wrote: >> > Isn't this just a matter of turning some variables into Symbols and >> > wrapping your literals in sympify() calls, so that everything comes >> > out symbolically? >> > >> > Aaron Meurer >> > >> > On Tue, Mar 20, 2012 at 9:44 AM, Matthew Rocklin >> <[email protected] <mailto:[email protected]>> wrote: >> >> I'm confused. >> >> >> >> Are you talking about turning a python function into a sympy >> expression, >> >> optimizing the sympy expression and then going back? >> >> >> >> What's an example use case? >> >> >> >> -Matt >> >> >> >> >> >> On Tue, Mar 20, 2012 at 7:52 AM, Andy Ray Terrel >> <[email protected] <mailto:[email protected]>> >> >> >> wrote: >> >>> >> >>> We have code printer's it would be nice to take a function and >> turn it >> >>> into a symbolic expression. This would allow for symbolically >> >>> exploring optimizations. Lots of publishing on this, I can find a >> >>> reference or two (John Gunnels thesis is certainly a good read). >> >>> AFAIK this is how John optimizes codes for IBM and has won him 5 >> >>> Gordon Bell prizes. >> >>> >> >>> -- Andy >> >>> >> >>> -- >> >>> You received this message because you are subscribed to the >> Google Groups >> >>> "sympy" group. >> >>> To post to this group, send email to [email protected] >> <mailto:[email protected]>. >> >> >>> To unsubscribe from this group, send email to >> >>> [email protected] >> <mailto:sympy%[email protected]>. >> >> >>> For more options, visit this group at >> >>> http://groups.google.com/group/sympy?hl=en. >> >>> >> >> >> >> -- >> >> You received this message because you are subscribed to the >> Google Groups >> >> "sympy" group. >> >> To post to this group, send email to [email protected] >> <mailto:[email protected]>. >> >> >> To unsubscribe from this group, send email to >> >> [email protected] >> <mailto:sympy%[email protected]>. >> >> >> For more options, visit this group at >> >> http://groups.google.com/group/sympy?hl=en. >> > >> > -- >> > You received this message because you are subscribed to the >> Google Groups "sympy" group. >> > To post to this group, send email to [email protected] >> <mailto:[email protected]>. >> >> > To unsubscribe from this group, send email to >> [email protected] >> <mailto:sympy%[email protected]>. >> >> > For more options, visit this group at >> http://groups.google.com/group/sympy?hl=en. >> > >> >> -- >> You received this message because you are subscribed to the Google >> Groups "sympy" group. >> To post to this group, send email to [email protected] >> <mailto:[email protected]>. >> >> To unsubscribe from this group, send email to >> [email protected] >> <mailto:sympy%[email protected]>. >> >> For more options, visit this group at >> http://groups.google.com/group/sympy?hl=en. >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "sympy" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/sympy?hl=en. > > > > -- > Nikhilesh S > http://www.nikhilesh.info > > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sympy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
