My roommate who's a C guy suggested that CSE was a waste of time if you
have a good compiler. He claimed that the compiler will do CSE anyways, so
doing it in the C code was not useful. I need to compare my Cython code
output with and without CSE (it currently uses CSE).

How would I use CSE with theano_function? I'm not doing that currently and
it wasn't apparent to me how to go about that.


Jason
moorepants.info
+01 530-601-9791


On Tue, Nov 5, 2013 at 1:30 PM, Matthew Rocklin <mrock...@gmail.com> wrote:

> In my experiments with sympy-theano earlier this year I found that it was
> competitive with our Fortran code generation (autowrap.ufuncify) on single
> array outputs and outperformed it when CSE were involved.  I don't have
> anything recorded that profiles scalar operations.
>
> Frederic might have some intuition on Theano's performance on large scalar
> computations.  I've brought this up in the past and don't actually remember
> the answer.
>
>
> On Tue, Nov 5, 2013 at 9:51 AM, Jason Moore <moorepa...@gmail.com> wrote:
>
>> Ok, so I think I'm comparing things correctly then. It is surprising that
>> the compiled Theano code doesn't seem to execute that fast. The functions
>> I'm generating are essentially evaluating very long sympy expressions,
>> maybe Theano isn't great at that...
>>
>>
>> Jason
>> moorepants.info
>> +01 530-601-9791
>>
>>
>> On Tue, Nov 5, 2013 at 12:48 PM, Matthew Rocklin <mrock...@gmail.com>wrote:
>>
>>> `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.
>>>
>>
>>  --
>> 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.

Reply via email to