Jason moorepants.info +01 530-601-9791
On Tue, Nov 5, 2013 at 8:46 AM, Frédéric Bastien <[email protected]> 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 <[email protected]> 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 <[email protected] > >> <mailto:[email protected]>> 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%[email protected]>. > >> > >> To post to this group, send email to [email protected] > >> <mailto:[email protected]>. > >> 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 [email protected]. > >> To post to this group, send email to [email protected]. > >> 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 [email protected]. > > To post to this group, send email to [email protected]. > > 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 [email protected]. > To post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. For more options, visit https://groups.google.com/groups/opt_out.
