`sympy.printing.theanocode.theano_function` calls `theano.function` The result of `theano_function` is a compiled theano function.
On Tue, Nov 5, 2013 at 9:27 AM, Jason Moore <moorepa...@gmail.com> wrote: > > > > Jason > moorepants.info > +01 530-601-9791 > > > On Tue, Nov 5, 2013 at 8:46 AM, Frédéric Bastien <no...@nouiz.org> wrote: > >> Hi, >> >> Just to know, witch version of Theano did you used? I have speed up a >> little the optimization phase of the compilation and I have a PR that >> will optimize this more. >> > > I'm using the master branch of Theano as of last week. > > >> >> Also, Theano cache the compilation of the c code. Where this timming >> done with a empty theano cache or a filled Theano cache? If you ran >> the same benchmark multiple time on the same computer, only the first >> time Theano will compile the c code, the other time it will reuse what >> is in the cache. >> > > I time two things wrt to Theano: > > 1. The time it takes to call sympy.printing.theanocode.theano_function > > and > > 2. The time it takes to call the function generated from 1. > > When does the Theano compilation happen? Is it in the call to > theano_function or the first time I use the generated function? > > If it is the latter then my timing comparisons aren't really comparing > apples to apples. > > >> >> thanks >> >> Frédéric >> >> On Sun, Nov 3, 2013 at 3:22 PM, Ronan Lamy <ronan.l...@gmail.com> wrote: >> > Le 03/11/13 14:19, Jason Moore a écrit : >> > >> >> Ronan, >> >> >> >> Thanks for looking at the derivation code. We haven't ever really had >> >> any review of it outside of our mechanical engineer group, so this very >> >> helpful. >> >> >> >> I'll review your PR and look into the second two items. >> >> >> >> Why do you think the dictionary representation will be so much faster? >> > >> > >> > Using a dict would make Vector.__eq__ a lot less expensive, and make >> > canonicalisation (as currently done in Vector.__init__) O(len(args)) >> instead >> > of O(len(args)**2). >> > >> > However, it seems that the main performance issue is that instantiating >> > Matrix objects is expensive. Using a dict isn't strictly required to >> solve >> > this, but the structure I suggest would allow e.g. dot products of >> vectors >> > to be decomposed as combinations of multiplications of components and >> dot >> > products of base vectors, which can be optimised or cached separately. >> There >> > would be no need for intermediate Matrix objects. >> > >> > >> >> >> >> On Sat, Nov 2, 2013 at 10:11 PM, Ronan Lamy <ronan.l...@gmail.com >> >> <mailto:ronan.l...@gmail.com>> wrote: >> >> >> >> Le 01/11/13 11:54, Jason Moore a écrit : >> >> >> >> I've been tinkering with code generation for ODE's that >> >> sympy.physics.mechanics spits out and have some results: >> >> >> >> http://www.moorepants.info/__blog/pydy-code-gen.html >> >> >> >> <http://www.moorepants.info/blog/pydy-code-gen.html> >> >> >> >> Several people have posted topics on this recently. We need to >> >> build in >> >> a code generator for solving ODE's into SymPy that would play >> >> well with >> >> the codegen and autowrap modules. I think I can use this code I >> >> wrote as >> >> a base to start working on that but would need some help >> >> generalizing it >> >> beyond our systems. Feedback is welcome. >> >> >> >> >> >> I've only looked at the derivation part, it's an interesting >> >> real-world(ish) benchmark for expression manipulation. However, it >> >> incurs a lot of avoidable overhead: >> >> * Extracting some loop constants out of their loops cuts down the >> >> run-time by 40%, cf. https://github.com/sympy/__sympy/pull/2570 >> >> >> >> <https://github.com/sympy/sympy/pull/2570> >> >> * The creation of temporary objects by the Vector class takes up >> >> most of the run-time. >> >> * The internal representation of Vector objects seems inefficient. >> I >> >> think it should be switched to a dict-based representation as a >> >> linear combination of base vectors (e.g. using {I.x: l0, B.y: -l1} >> >> for l0 * I.x - l1 * B.y). >> >> >> >> >> >> -- >> >> 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 sympy+unsubscribe@__googlegroups.com >> >> <mailto:sympy%2bunsubscr...@googlegroups.com>. >> >> >> >> To post to this group, send email to sympy@googlegroups.com >> >> <mailto:sympy@googlegroups.com>. >> >> Visit this group at http://groups.google.com/__group/sympy >> >> <http://groups.google.com/group/sympy>. >> >> For more options, visit https://groups.google.com/__groups/opt_out >> >> <https://groups.google.com/groups/opt_out>. >> >> >> >> >> >> >> >> -- >> >> 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 sympy+unsubscr...@googlegroups.com. >> >> To post to this group, send email to sympy@googlegroups.com. >> >> Visit this group at http://groups.google.com/group/sympy. >> >> For more options, visit https://groups.google.com/groups/opt_out. >> > >> > >> > -- >> > 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 sympy+unsubscr...@googlegroups.com. >> > To post to this group, send email to sympy@googlegroups.com. >> > Visit this group at http://groups.google.com/group/sympy. >> > For more options, visit https://groups.google.com/groups/opt_out. >> >> -- >> 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 sympy+unsubscr...@googlegroups.com. >> To post to this group, send email to sympy@googlegroups.com. >> Visit this group at http://groups.google.com/group/sympy. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > 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 sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at http://groups.google.com/group/sympy. > For more options, visit https://groups.google.com/groups/opt_out. > -- 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 sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy. For more options, visit https://groups.google.com/groups/opt_out.