SageMath 9.7.beta3: hecke_series takes forever

37 views
Skip to first unread message

G. M.-S.

unread,
Jun 19, 2022, 3:08:51 PM6/19/22
to sage-...@googlegroups.com

I am not sure if I should open a ticket or add to a ticket.

This is on SageMath 9.7.beta3 built from source on Apple Silicon (both macOS 11.6.7 and macOS 12.4).

This test, taken from
src/sage/modular/overconvergent/hecke_series.py
takes forever:

sage: hecke_series(5, 7, 10000, 5, modformsring=True) # long time (3.4s)


FWIW, on SageMath 9.7.beta2 the same thing takes less than a second.


Guillermo


G. M.-S.

unread,
Jun 19, 2022, 4:47:36 PM6/19/22
to sage-...@googlegroups.com

After waiting for more than an hour of CPU time (1 core at 100%), here are the results of interrupting.

macOS 11.6.7 (Big Sur) with Xcode 13.2.1:

$ ./sage 

┌────────────────────────────────────────────────────────────────────┐

│ SageMath version 9.7.beta3, Release Date: 2022-06-19               │

│ Using Python 3.9.13. Type "help()" for help.                       │

└────────────────────────────────────────────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

┃ Warning: this is a prerelease version, and it may be unstable.     ┃

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

sage: hecke_series(5, 7, 10000, 5, modformsring=True) # long time (3.4s)

^C---------------------------------------------------------------------------

KeyboardInterrupt                         Traceback (most recent call last)

<ipython-input-1-7da51b444066> in <module>

----> 1 hecke_series(Integer(5), Integer(7), Integer(10000), Integer(5), modformsring=True) # long time (3.4s)


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in hecke_series(p, N, klist, m, modformsring, weightbound)

   1187         Alist = level1_UpGj(p, klist, m)

   1188     else:

-> 1189         Alist = higher_level_UpGj(p, N, klist, m, modformsring, weightbound)

   1190 

   1191     Plist = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in higher_level_UpGj(p, N, klist, m, modformsring, bound, extra_data)

    748     # Steps 2 and 3

    749 

--> 750     e, Ep1 = higher_level_katz_exp(p, N, k0, m, mdash, elldash, elldashp,

    751                                    modformsring, bound)

    752     ell = dimension(transpose(e)[0].parent())


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in higher_level_katz_exp(p, N, k0, m, mdash, elldash, elldashp, modformsring, bound)

    582 

    583     n = floor(((p + 1) / (p - 1)) * (m + 1))

--> 584     Wjs = complementary_spaces(N, p, k0, n, mdash, elldashp, elldash, modformsring, bound)

    585 

    586     Basis = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in complementary_spaces(N, p, k0, n, mdash, elldashp, elldash, modformsring, bound)

    519     LWBModp = [ [ f.change_ring(GF(p)).truncate_powerseries(elldash) for f in x] for x in LWB]

    520 

--> 521     CompSpacesCode = complementary_spaces_modp(N, p, k0, n, elldash, LWBModp, bound)

    522 

    523     Ws = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in complementary_spaces_modp(N, p, k0, n, elldash, LWBModp, bound)

    457 

    458     for i in range(n + 1):

--> 459         NewBasisCodemi = random_new_basis_modp(N, p, k0 + i * (p - 1), LWBModp, TotalBasisModp, elldash, bound)

    460         # TotalBasisModp is passed by reference and updated in function

    461         CompSpacesCode.append(NewBasisCodemi)


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in random_new_basis_modp(N, p, k, LWBModp, TotalBasisModp, elldash, bound)

    406                     TotalBasisi = TotalBasisi * LWBModp[j][a]

    407                     TotalBasisiCode.append([j, a])

--> 408             TotalBasisModp[rk] = [TotalBasisi[j] for j in range(elldash)]

    409             TotalBasisModp.echelonize()

    410             rk = TotalBasisModp.rank()


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in <listcomp>(.0)

    406                     TotalBasisi = TotalBasisi * LWBModp[j][a]

    407                     TotalBasisiCode.append([j, a])

--> 408             TotalBasisModp[rk] = [TotalBasisi[j] for j in range(elldash)]

    409             TotalBasisModp.echelonize()

    410             rk = TotalBasisModp.rank()


src/cysignals/signals.pyx in cysignals.signals.python_check_interrupt()


KeyboardInterrupt

sage: 


macOS 12.4 (Monterey) with Xcode 13.4.1:

% ./sage 

┌────────────────────────────────────────────────────────────────────┐

│ SageMath version 9.7.beta3, Release Date: 2022-06-19               │

│ Using Python 3.9.13. Type "help()" for help.                       │

└────────────────────────────────────────────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

┃ Warning: this is a prerelease version, and it may be unstable.     ┃

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

sage: hecke_series(5, 7, 10000, 5, modformsring=True) # long time (3.4s)

^C---------------------------------------------------------------------------

KeyboardInterrupt                         Traceback (most recent call last)

<ipython-input-1-7da51b444066> in <module>

----> 1 hecke_series(Integer(5), Integer(7), Integer(10000), Integer(5), modformsring=True) # long time (3.4s)


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in hecke_series(p, N, klist, m, modformsring, weightbound)

   1187         Alist = level1_UpGj(p, klist, m)

   1188     else:

-> 1189         Alist = higher_level_UpGj(p, N, klist, m, modformsring, weightbound)

   1190 

   1191     Plist = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in higher_level_UpGj(p, N, klist, m, modformsring, bound, extra_data)

    748     # Steps 2 and 3

    749 

--> 750     e, Ep1 = higher_level_katz_exp(p, N, k0, m, mdash, elldash, elldashp,

    751                                    modformsring, bound)

    752     ell = dimension(transpose(e)[0].parent())


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in higher_level_katz_exp(p, N, k0, m, mdash, elldash, elldashp, modformsring, bound)

    582 

    583     n = floor(((p + 1) / (p - 1)) * (m + 1))

--> 584     Wjs = complementary_spaces(N, p, k0, n, mdash, elldashp, elldash, modformsring, bound)

    585 

    586     Basis = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in complementary_spaces(N, p, k0, n, mdash, elldashp, elldash, modformsring, bound)

    519     LWBModp = [ [ f.change_ring(GF(p)).truncate_powerseries(elldash) for f in x] for x in LWB]

    520 

--> 521     CompSpacesCode = complementary_spaces_modp(N, p, k0, n, elldash, LWBModp, bound)

    522 

    523     Ws = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in complementary_spaces_modp(N, p, k0, n, elldash, LWBModp, bound)

    457 

    458     for i in range(n + 1):

--> 459         NewBasisCodemi = random_new_basis_modp(N, p, k0 + i * (p - 1), LWBModp, TotalBasisModp, elldash, bound)

    460         # TotalBasisModp is passed by reference and updated in function

    461         CompSpacesCode.append(NewBasisCodemi)


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in random_new_basis_modp(N, p, k, LWBModp, TotalBasisModp, elldash, bound)

    398         while (rk < diminus1 + i):

    399             # take random product of basis elements

--> 400             exps = random_solution(bound // 2, k // 2)

    401             TotalBasisi = R(1)

    402             TotalBasisiCode = []


~/SageMath/Git/sage/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/modular/overconvergent/hecke_series.py in random_solution(B, K)

    282         ai = ZZ.random_element((K // i) + 1)

    283         a.append(ai)

--> 284         K = K - ai*i

    285     a.append(K)

    286     a.reverse()


src/cysignals/signals.pyx in cysignals.signals.python_check_interrupt()


KeyboardInterrupt

sage: 


HTH,

Guillermo

G. M.-S.

unread,
Jun 19, 2022, 5:38:55 PM6/19/22
to sage-...@googlegroups.com

As suggested by Vincent Delecrois, this is due to #33876. David Ayotte is taking care of it.

Guillermo

davida...@gmail.com

unread,
Jun 19, 2022, 9:56:53 PM6/19/22
to sage-devel
This is now #34025

David A.

G. M.-S.

unread,
Jun 20, 2022, 3:30:55 AM6/20/22
to sage-...@googlegroups.com

Vincent Delecroix, sorry.

Guillermo

--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/2da6cecc-027f-47fe-8b7f-facd0ecf561cn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages