This looks like good work to do. I don't know how these applications
are evaluated but my thought if I was reviewing this would be that it
seems quite vague. This would probably be a more enticing proposal if
it had some specific suggestions of changes that would speed things
up.

I can tell you now what is slow in the ODE module: currently even for
the simplest ODEs all matching code is run for all the possible
methods even after a suitable method has been found. It would be much
better to identify the most immediately usable solver and then use
that without matching all the others. This needs a refactor of the
module though and a redesign of the basic approach used by dsolve. I
want that to happen as an ultimate goal but I would like to see better
test coverage first.

On Wed, 27 Mar 2019 at 09:56, Shiksha Rawat <shiksharawa...@gmail.com> wrote:
>
> https://github.com/sympy/sympy/wiki/GSoC-2019-Application-SHIKSHA-RAWAT-:-Benchmarks-and-performance
>
> I have designed a proposal for Benchmarks and Perfromance idea, though it is 
> not complete yet.
>
> Can Jason Moore, Aaron and Oscar please review that and suggest changes?
>
>
> On Tue, Mar 19, 2019 at 11:53 PM Shiksha Rawat <shiksharawa...@gmail.com> 
> wrote:
>>
>> I did further digging on the idea mentioned by Jason Moore.
>>
>> Figuring out the main bottlenecks for sympy : The best way to figure out 
>> these bottlenecks would be to designing a typical problem for each module 
>> for example mass spring damper for physics and computing time taken by sympy 
>> to give the output.If it is greater then expected than or a predefined 
>> threshold than analyzing the codebase of that module for possible changes to 
>> decrease computation time. And the results of predefined benchmarks could 
>> also be used.
>>
>> Creating benchmarks :  https://media.readthedocs.org/pdf/asv/v0.1.1/asv.pdf
>> I think this documentation could come in handy for creating the benchmarks. 
>> The requirement of a particular benchmark could be made on the basis of the 
>> bottlenecks which we will figure out.
>>
>> Improving performance:  I think the best way to improve performance would be 
>> cleaning up the codebase first and then making changes in the algorithms 
>> used according to the requirements.
>>
>> Future Scope: Figuring out a method by which each PR also has to give 
>> information about the time the modules related to that PR will take to give 
>> output of problems associated with that module. (those mentioned in figuring 
>> out the bottlenecks point).
>>
>> I might be wrong about the ideas mentioned above. So I want suggestions from 
>> the mentors.
>>
>> Thanks.
>>
>> On Fri, Mar 15, 2019 at 9:48 PM Shiksha Rawat <shiksharawa...@gmail.com> 
>> wrote:
>>>
>>> I am really interested in taking up that idea. Can you suggest where or how 
>>> should I start from because up till now I was just focusing on the physics 
>>> module and benchmarks related to it?
>>> I am still trying to find how could we optimize matrix operations.
>>>
>>>
>>> On Fri, Mar 15, 2019 at 8:46 PM Jason Moore <moorepa...@gmail.com> wrote:
>>>>
>>>> The mechanics speedup idea is really just a narrow version of the 
>>>> profiling and benchmarking idea (focuses on just a couple of packages). 
>>>> Maybe a proposal that focuses on figuring out the main bottlenecks for 
>>>> sympy, creating benchmarks for them, and then improving performance is a 
>>>> good proposal idea that will ultimately help all the packages. I'm happy 
>>>> to support and mentor on that idea if someone wants to submit.
>>>>
>>>> Jason
>>>> moorepants.info
>>>> +01 530-601-9791
>>>>
>>>>
>>>> On Thu, Mar 14, 2019 at 2:19 PM Aaron Meurer <asmeu...@gmail.com> wrote:
>>>>>
>>>>> I agree. The biggest challenge with symbolic matrices is expression
>>>>> blow up. In some cases it is unavoidable, for instance, symbolic
>>>>> eigenvalues/eigenvectors use the symbolic solutions to polynomials,
>>>>> which are complicated in the general case for n > 2.
>>>>>
>>>>> One thing I meant by "overhead" is that if the type of a matrix's
>>>>> entries is known to all be rational numbers, for instance, we can
>>>>> operate directly on those numbers, ideally using fast number types
>>>>> like gmpy.mpq. If they are all rational functions, we can use
>>>>> polynomial algorithms that operate on rational functions. These always
>>>>> keep rational functions in canonical form, and the zero equivalence
>>>>> testing becomes literally "expr == 0" (no simplification required).
>>>>> These can be more efficient than general symbolic manipulation.
>>>>>
>>>>> This is how the polys module is structured. See
>>>>> https://docs.sympy.org/latest/modules/polys/internals.html. It would
>>>>> be nice to have a similar structure in the matrices, where a matrix
>>>>> can have a ground domain (or type) associated with its underlying
>>>>> data.
>>>>>
>>>>> Aaron Meurer
>>>>>
>>>>> On Thu, Mar 14, 2019 at 2:52 PM Oscar Benjamin
>>>>> <oscar.j.benja...@gmail.com> wrote:
>>>>> >
>>>>> > (Replying on-list)
>>>>> >
>>>>> > On Thu, 14 Mar 2019 at 20:37, Alan Bromborsky <abrombo...@gmail.com> 
>>>>> > wrote:
>>>>> > >
>>>>> > > Since most pc these days have multiple cores and threads what not use
>>>>> > > parallel algorithyms.  For honesty I must state I have a vested 
>>>>> > > interest
>>>>> > > since I have a pc with a threadripper cpu with 16 cores and 32 
>>>>> > > threads.
>>>>> >
>>>>> > Parallel algorithms can offer improvement. Your 16 cores might amount
>>>>> > to a 10x speed up if used well for this kind of thing. The
>>>>> > double-threading probably can't be exploited in CPython.
>>>>> >
>>>>> > However I think that many of the things that SymPy is slow for have
>>>>> > *really* bad asymptotic performance: think O(N!) rather than O(N^2).
>>>>> > Many orders of magnitude improvements can be made by spotting these
>>>>> > where more efficient methods are possible. It's not hard in a CAS to
>>>>> > accidentally generate enormous expressions and end up simplifying them
>>>>> > down again. This leads to many situations where it would be vastly
>>>>> > more efficient to somehow take a more direct route.
>>>>> >
>>>>> > --
>>>>> > 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 https://groups.google.com/group/sympy.
>>>>> > To view this discussion on the web visit 
>>>>> > https://groups.google.com/d/msgid/sympy/CAHVvXxTeAGZUv1kdtKCvBRodMZPyX5jHh76G0M49VshwMziJZA%40mail.gmail.com.
>>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>> --
>>>>> 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 https://groups.google.com/group/sympy.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/sympy/CAKgW%3D6JGfKjgHP3EaoX%3DXW_SMfnbGOZgi9LLJoUT3Ty7%3Dutd%2BA%40mail.gmail.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>> --
>>>> 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 https://groups.google.com/group/sympy.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/sympy/CAP7f1AiMm_i%2BJBLBnv3_xzG_8Czag10DWvAUfiAhe-QUzUANiw%40mail.gmail.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>
> --
> 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 https://groups.google.com/group/sympy.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/CAKVsmS7P3w9nL%2BA9UJOnpZ4oBmc7UjGUdVjpmcFyog%2B5QwuP5g%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAHVvXxRXE%2BF%2BWVk2pY%2Bsbzem6ZTG6QrDZXh24qPtYnjdojoDmA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to