I should have been a little less lazy before I posted this, I guess. I found out where the leak is (the fpLLL wrapper) on my first try. I don't know what is causing it, though. This is now at
http://trac.sagemath.org/sage_trac/ticket/10179 On Wed, 2010-10-27 at 14:24 -0400, Jonathan Bober wrote: > Dear all, > > There seems to be a memory leak in some code below, in at least versions > 4.5 and 4.5.3. For example, if I call it with > > sage: L = find_candidates_for_large_value(5000) > > It prints something like: > > current memory usage: 836.73046875 > current memory usage: 836.73046875 > current memory usage: 836.73046875 > current memory usage: 836.73046875 > current memory usage: 836.73046875 > current memory usage: 836.73046875 > current memory usage: 836.73046875 > current memory usage: 836.98046875 > current memory usage: 836.98046875 > current memory usage: 836.98046875 > current memory usage: 836.98046875 > current memory usage: 836.98046875 > current memory usage: 836.98046875 > current memory usage: 836.98046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.23046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.48046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.73046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 837.98046875 > current memory usage: 838.2578125 > current memory usage: 838.2578125 > current memory usage: 838.2578125 > current memory usage: 838.2578125 > current memory usage: 838.2578125 > current memory usage: 838.515625 > current memory usage: 838.515625 > current memory usage: 838.515625 > current memory usage: 838.515625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 838.81640625 > current memory usage: 839.06640625 > current memory usage: 839.06640625 > current memory usage: 839.1953125 > current memory usage: 839.1953125 > current memory usage: 839.1953125 > current memory usage: 839.1953125 > current memory usage: 839.1953125 > current memory usage: 839.1953125 > current memory usage: 839.1953125 > current memory usage: 839.453125 > current memory usage: 839.453125 > current memory usage: 839.453125 > current memory usage: 839.6796875 > current memory usage: 839.6796875 > current memory usage: 839.6796875 > current memory usage: 839.6796875 > current memory usage: 839.6796875 > current memory usage: 839.6796875 > current memory usage: 839.6796875 > current memory usage: 839.9375 > current memory usage: 839.9375 > current memory usage: 840.06640625 > [...] > > > It is a little complicated, so we need a smaller example to figure out > what is causing the memory leak. Before I try making a smaller example, > I thought I would write here to see if anyone happens to know what is > leaking memory, or at least to see if anyone has a good guess. > > Some things used are: > > prime_range() > nth_prime() > symbolic arithmetic > fast_callable(domain=ComplexField(250)) > ZZ.random_element() > RR.random_element() > copy(MatrixSpace(ZZ, n).zero()) > A.LLL(), where A is a modification of the above copy(MatrixSpace(ZZ, > n).zero()) > > > import sys > > def find_candidates_for_large_value(repeat=1): > """ > Find values of t where zeta(1/2 + it) is expected to be big. > """ > possible_t = [] > X = var('X') > > p_start = 20 > p_end = 40 > > euler_product1 = 1 > euler_product2 = 1 > for p in prime_range(nth_prime(p_start) + 1): > euler_product1 = euler_product1 / (1 - 1/p^(1/2 + i * X)) > > euler_product2 = euler_product1 > > for p in prime_range(nth_prime(p_start) + 1, nth_prime(p_end) + 1): > euler_product2 = euler_product2 / (1 - 1/p^(1/2 + i * X)) > > euler_product1 = fast_callable(euler_product1, domain=ComplexField(250), > vars='X') > euler_product2 = fast_callable(euler_product2, domain=ComplexField(250), > vars='X') > > for l in xrange(repeat): > n = ZZ.random_element(p_start, p_end) > m = ZZ.random_element(120, 150) > r = ZZ.random_element(40, 50) > delta = RR.random_element(.9, .9999) > > last_prime = nth_prime(n) > primes = prime_range(last_prime + 1) > > weights = [p^(-1/4) for p in primes] > #print weights > > A = copy(MatrixSpace(ZZ, n+1).zero()) > for k in xrange(0, n): > A[0,k] = floor(weights[k] * primes[k].log() * 2^(m - r)) > > A[0,n] = 1 > > for k in xrange(0, n): > A[k + 1, k] = floor(2 * pi * weights[k] * 2^m) > B = A.LLL(delta=delta) > > R = RealField(250) > for k in xrange(0, n + 1): > t = R(abs(B[n,k])/2^r) > v1 = euler_product1(t) > v2 = euler_product2(t) > possible_t.append( (abs(v2), abs(v1), t, floor(abs(t)) - 20) ) > > possible_t.sort() > possible_t = possible_t[-10:] > #print "On try number", l, " best candidates so far are" > #for _ in possible_t[-10:]: > # print _ > print "current memory usage:", get_memory_usage() > sys.stdout.flush() > > return possible_t > -- To post to this group, send an email to [email protected] To unsubscribe from this group, send an email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org
