#715: Parents probably not reclaimed due to too much caching
------------------------+---------------------------------------------------
   Reporter:  robertwb  |          Owner:  somebody                      
       Type:  defect    |         Status:  needs_review                  
   Priority:  major     |      Milestone:  sage-5.0                      
  Component:  coercion  |       Keywords:  weak cache coercion Cernay2012
Work_issues:            |       Upstream:  N/A                           
   Reviewer:            |         Author:  Simon King                    
     Merged:            |   Dependencies:  #9138, #11900                 
------------------------+---------------------------------------------------

Old description:

> Here is a small example illustrating the issue.
>
> The memory footprint of the following piece of code grows indefinitely.
>
> {{{
> sage: K = GF(1<<55,'t')
> sage: a = K.random_element()
> sage: while 1:
> ....:     E = EllipticCurve(j=a); P = E.random_point(); 2*P; del E, P;
>
> }}}
> E and P get deleted, but when 2*P is computed, the action of integers on
> A, the abelian group of rational points of the ellitpic curve, gets
> cached in the corecion model.
>
> A key-value pair is left in coercion_model._action_maps dict:
>
> (ZZ,A,*) : IntegerMulAction
>
> Moreover there is at least also references to A in the IntegerMulAction
> and one in ZZ._action_hash.
>
> So weak refs should be used in all these places if it does not slow
> things too much.
>
> Apply [attachment:trac715_one_triple_dict.patch]

New description:

 Here is a small example illustrating the issue.

 The memory footprint of the following piece of code grows indefinitely.

 {{{
 sage: K = GF(1<<55,'t')
 sage: a = K.random_element()
 sage: while 1:
 ....:     E = EllipticCurve(j=a); P = E.random_point(); 2*P; del E, P;

 }}}
 E and P get deleted, but when 2*P is computed, the action of integers on
 A, the abelian group of rational points of the ellitpic curve, gets cached
 in the corecion model.

 A key-value pair is left in coercion_model._action_maps dict:

 (ZZ,A,*) : IntegerMulAction

 Moreover there is at least also references to A in the IntegerMulAction
 and one in ZZ._action_hash.

 So weak refs should be used in all these places if it does not slow things
 too much.

 Apply:

  * [attachment:trac715_one_triple_dict.patch]
  * [attachment:trac_715-reviewer.patch]

--

Comment(by jpflori):

 I've added warning blocks at the top of files modified by Simon (and fixed
 minor typos without introducing new ones I hope). The generated doc looks
 ok.

 All tests pass on my computer and the numerical evidence we've gathered so
 far points that there is no speed regression.

 If Simon or someone else could have a look at my "reviewer patch", this
 can be put to positive review.

 Personally, I'm happy with Simon patches.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/715#comment:152>
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