#11521: Use weak references to cache homsets
--------------------------------------------------+-------------------------
Reporter: jpflori | Owner: robertwb
Type: defect | Status:
positive_review
Priority: major | Milestone: sage-5.5
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:
--------------------------------------------------+-------------------------
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 and #13447'''. Apply
>
> * the patches from #715
> * [attachment:trac_11521_homset_weakcache_combined.patch]
> * [attachment:trac_11521_callback.patch]
> * the patches from #13447
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]
--
Comment (by nbruin):
No, we do not need that merge. We should absolutely not add any more
dependencies to these tickets. They are good to go as is (modulo nasty
surprises). We can improve things afterwards. The bump to 5.5 is already
unfortunate, because that means we've already unnecessarily missed one
sailing.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11521#comment:168>
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.