Ok, nice!

On Fri, Aug 2, 2013 at 7:39 PM, Jason Moore <[email protected]> wrote:
> There isn't any reason not to make a pull request. You can always close it
> after the tests run.
>
>
> Jason
> moorepants.info
> +01 530-601-9791
>
>
> On Fri, Aug 2, 2013 at 12:48 PM, Cristóvão Sousa <[email protected]> wrote:
>>
>> Hi,
>>
>> Is it possible to execute the Travis or SymPyBot tests without making a
>> PR?
>>
>> I would like to run the whole test set prior to make a PR, however, tests
>> are too slow my poor laptop (and they seem to burn it :/ ).
>>
>> On Friday, July 12, 2013 8:36:48 PM UTC+1, Ondřej Čertík wrote:
>>>
>>> Hi Cristóvão,
>>>
>>> Excellent. Let us know if you need help with submitting a PR.
>>>
>>> Ondrej
>>>
>>> On Fri, Jul 12, 2013 at 1:32 PM, Cristóvão Sousa <[email protected]>
>>> wrote:
>>> > Ok, I've added CSE of Add and Mul arguments (only commutative terms):
>>> > http://nbviewer.ipython.org/5986996
>>> >
>>> > It runs faster compared to current sympy.cse, even more if applying it
>>> > to
>>> > large expressions.
>>> > However, it still lacks a lot of features, which I'll try to address
>>> > using
>>> > sympy.cse unit tests.
>>> >
>>> >
>>> > On Wednesday, July 3, 2013 2:52:13 PM UTC+1, Cristóvão Sousa wrote:
>>> >>
>>> >> Forwarded from PyDy mailing list,
>>> >> https://groups.google.com/forum/#!topic/pydy/PjZ9SP8PYDA .
>>> >>
>>> >>
>>> >>
>>> >> Hi,
>>> >>
>>> >> I'm posting here because of one of GSoC 2013 ideas, "Efficient Code
>>> >> Generation".
>>> >>
>>> >> You stated that "Common subexpression elimination (cse) takes a long
>>> >> time
>>> >> (>1 hour) to run on systems of equations that are derived in a very
>>> >> short
>>> >> period of time (< 1 minute). This needs to be improved."
>>> >> [https://pydy.org/gsoc_2013_ideas#efficient_code_generation]
>>> >>
>>> >> Indeed, I've verified that myself on my work on SymPyBotics
>>> >> (https://github.com/cdsousa/sympybotics), a tool I'm developing to
>>> >> help me
>>> >> on my PhD studies.
>>> >> So, I've developed a kind of CSE, faster than SymPy CSE though less
>>> >> general and with some quirks.
>>> >> Such CSE functionality is implemented in SymCode package
>>> >> (https://github.com/cdsousa/symcode).
>>> >>
>>> >> Be aware that both SymPyBotics and SymCode are badly documented and
>>> >> probably reimplement some functionalities which could be taken from
>>> >> SymPy/PyDy (and I probably implement them in worse ways :)
>>> >>
>>> >> The cse core function is "fast_cse()" which can be found in
>>> >> symcode/subexprs.py
>>> >> (https://github.com/cdsousa/symcode/blob/master/symcode/subexprs.py.)
>>> >> (It uses Subexprs class, which can be used alone to store intermediate
>>> >> variables in recursive computations).
>>> >>
>>> >> I've profiled SymPy cse and noticed that the main time consumption is
>>> >> due
>>> >> to "count" and "subs" functions, so I tried a different approach.
>>> >> First, fast_cse function reversely parses the expression tree and
>>> >> recreate
>>> >> each unique operation with non-atom arguments substituted by temporary
>>> >> symbols (this is the "collect" phase).
>>> >> Each unique operation is stored on an "unique_op:tmp_symbol"
>>> >> dictionary.
>>> >> For example,
>>> >> a + b*c + cos(b*c)
>>> >> is transformed into
>>> >> t2
>>> >> while the dictionary holds
>>> >> a + t0 + t1 : t2
>>> >> cos(t0) : t1
>>> >> b * c : t0
>>> >> Additional, match of multiple argument Mul and Add operations is made,
>>> >> in
>>> >> a similar way to SymPy cse, although argument commutativity is always
>>> >> assumed.
>>> >> Then, in the "get" phase, the expression tree is recreated from the
>>> >> dictionary while temporary "used more than once" symbols are
>>> >> maintained.
>>> >> The example output will be
>>> >> ( [(t0, b*c)],  a + t0 + cos(t0) )
>>> >> This is much faster than SymPy CSE although output is generally
>>> >> different.
>>> >> Also, it still doesn't work with "iterable" arguments, and, as said,
>>> >> non-commutativity is not respected .
>>> >>
>>> >>
>>> >> I would love to have time to work on this, or to work on SymPy CSE
>>> >> optimization directly, but I'm currently in work overload.
>>> >> Nevertheless, I'm showing you this since some ideas can be useful.
>>> >>
>>> >> Best regards,
>>> >> Cristóvão Sousa
>>> >>
>>> > --
>>> > 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 a topic in the
> Google Groups "sympy" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sympy/mNsEVVLFVGU/unsubscribe.
> To unsubscribe from this group and all its topics, 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