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.

Reply via email to