On Sat, Sep 17, 2016 at 10:39 AM, Jonathan Bober <[email protected]> wrote:
> Ok, so I figured out what is going on here, at least. > > When S = CuspForms(N, k), a call to S.hecke_polynomial() passes through a > bunch of abstract layers and then eventually arrives at > S._compute_hecke_matrix_prime(self, p, prec=None), > in sage/modular/modform/space.py. To compute the hecke matrix, this > function computes a basis of cusp forms, explicitly computes the action of > the Hecke operator on this basis, and then does linear algebra to find the > matrix of this operator on this basis. Which is all rather roundabout, > since it ends up using modular symbols to compute hecke matrices to compute > a basis. I understand why this might take 5 hours. > > Maybe there is some sense to this very generic functionality, if, e.g., I > can use it to more efficiently compute the same thing for a small > dimensional subspace. > You should implement a more optimized approach in the case of just computing the Hecke polynomial. There's a million things in Sage (or any math software) where the most optimal strategy isn't implemented, so the system falls back to something generic that works. -- William > > On Sat, Sep 17, 2016 at 3:48 PM, Jonathan Bober <[email protected]> wrote: > >> What is going on with the timings in the following examples? >> >> sage: S = CuspForms(1728, 2) >> sage: %time f = S.hecke_polynomial(2) >> CPU times: user 17276.68 s, sys: 13.46 s, total: 17290.14 s >> Wall time: 17293.59 s >> sage: f >> x^253 + x^251 - 2*x^249 >> >> (Meanwhile, in a separate Sage session...) >> >> sage: %time M = ModularSymbols(1728, 2, 1) >> CPU times: user 0.47 s, sys: 0.03 s, total: 0.50 s >> Wall time: 0.54 s >> sage: %time S = M.cuspidal_subspace() >> CPU times: user 1.57 s, sys: 0.00 s, total: 1.57 s >> Wall time: 1.54 s >> sage: %time f = S.hecke_polynomial(2) >> CPU times: user 19.09 s, sys: 0.00 s, total: 19.09 s >> Wall time: 19.07 s >> sage: f >> x^253 + x^251 - 2*x^249 >> >> That's almost 5 hours using CuspForms() and just over 20 seconds using >> ModularSymbols() directly. To compute the same thing. Is this expected >> behavior? Am I being stupid somehow? >> >> (Note: I did this on a "very old" (2 years) version of Sage. But as other >> checks, I also tried the first method on a relatively up to date version on >> my laptop and stopped after about 7 minutes when it was using 15% of my >> ram. I also tried Magma, where the standard ModularForms(), >> CuspidalSubspace(), HeckePolynomial() commands complete quickly, and I >> tried cloud.sagemath.com, where I again killed the computation after a >> few minutes. Maybe if I find an old enough version of Sage the computations >> will be the same speed...) >> >> For a long time, and until recently, I would have just tried the first >> method, not knowing what I was doing, and would have said to myself >> something like "I guess Sage is probably pretty good at computations with >> trivial character, so this is probably just something that takes a long >> time." Now instead I would guess that for at least some functionality the >> ModularForms()/CuspForms() classes are so slow that they are effectively >> broken (or, at least, not much more than a toy) and have been for a long >> time. This is a shame, because I shouldn't even need to know that modular >> symbols are a thing that exist if I just want to do some simple >> computations like this. >> >> I would expect ModularForms/CuspForms to mostly be a light wrapper around >> ModularSymbols, but something else must be going on here. One explanation >> would be that for some reason the first computation triggers some large >> computation that would make all subsequent computations faster, but the >> computation of hecke_polynomial(3) didn't seem like it was going to be >> fast. (I didn't wait for it to finish.) >> > > -- > You received this message because you are subscribed to the Google Groups > "sage-nt" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sage-nt. > For more options, visit https://groups.google.com/d/optout. > -- William (http://wstein.org) -- You received this message because you are subscribed to the Google Groups "sage-nt" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send an email to [email protected]. Visit this group at https://groups.google.com/group/sage-nt. For more options, visit https://groups.google.com/d/optout.
