#11521: Use weak references to cache homsets
--------------------------------------------------+-------------------------
       Reporter:  jpflori                         |         Owner:  robertwb    
                 
           Type:  defect                          |        Status:  
positive_review              
       Priority:  major                           |     Milestone:  
sage-pending                 
      Component:  coercion                        |    Resolution:              
                 
       Keywords:  sd35                            |   Work issues:              
                 
Report Upstream:  N/A                             |     Reviewers:  Jean-Pierre 
Flori, Nils Bruin
        Authors:  Simon King                      |     Merged in:              
                 
   Dependencies:  #12969; to be merged with #715  |      Stopgaps:              
                 
--------------------------------------------------+-------------------------
Description changed by SimonKing:

Old description:

> Originally, this ticket was about the following memory leak when
> computing with elliptic curves:
>
> {{{
> sage: K = GF(1<<55,'t')
> sage: a = K.random_element()
> sage: while 1:
> ....:     E = EllipticCurve(j=a); P = E.random_point(); 2*P;
> }}}
> This example is in fact solved by #715. However, while working on that
> ticket, another leak has been found, namely
>
> {{{
> sage: for p in prime_range(10^5):
> ....:     K = GF(p)
> ....:     a = K(0)
> ....:
> sage: import gc
> sage: gc.collect()
> 0
> }}}
> So, I suggest to start with #715 and solve the second memory leak on top
> of it. It seems that a strong cache for homsets is to blame. I suggest to
> use the weak `TripleDict` instead, which were introduced in #715.
>
> '''To be merged with #715'''. Apply
>
> * the patches from #715
> * [attachment:trac_11521_homset_weakcache_combined.patch]
> * [attachment:trac_11521_callback.patch]

New description:

 Originally, this ticket was about the following memory leak when computing
 with elliptic curves:

 {{{
 sage: K = GF(1<<55,'t')
 sage: a = K.random_element()
 sage: while 1:
 ....:     E = EllipticCurve(j=a); P = E.random_point(); 2*P;
 }}}
 This example is in fact solved by #715. However, while working on that
 ticket, another leak has been found, namely

 {{{
 sage: for p in prime_range(10^5):
 ....:     K = GF(p)
 ....:     a = K(0)
 ....:
 sage: import gc
 sage: gc.collect()
 0
 }}}
 So, I suggest to start with #715 and solve the second memory leak on top
 of it. It seems that a strong cache for homsets is to blame. I suggest to
 use the weak `TripleDict` instead, which were introduced in #715.

 '''To be merged with #715 and #13447'''. Apply

 * the patches from #715
 * [attachment:trac_11521_homset_weakcache_combined.patch]
 * [attachment:trac_11521_callback.patch]
 * the patches from #13447

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11521#comment:164>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to