Open wbhart opened 3 years ago
We've made definite progress in the last year.
Here's the improvement over our last release on my machine, with #930 and #937 merged:
Flint-2.7.1 Current
P1 143 ms 16 ms (8.9x faster)
P2 275 ms 33 ms (8.3x faster)
P3: 512 ms 65 ms (7.9x faster)
P4: 2325 ms 579 ms (4.0x faster)
P5: 17 ms 19 ms (0.9x faster)
P6: 125 ms 28 ms (4.5x faster)
P7: 925 ms 649 ms (1.4x faster)
P8: 341 ms 332 ms (1.0x faster)
M12_5: 1173 ms 996 ms (1.2x faster)
M12_6: 37056 ms 15905 ms (2.3x faster)
T1: 317 ms 297 ms (1.1x faster)
T2: 350 ms 315 ms (1.1x faster)
T3: 26561 ms 9832 ms (2.7x faster)
H1: 4521 ms 3381 ms (1.3x faster)
S7: 278 ms 260 ms (1.1x faster)
S8: 4284 ms 3686 ms (1.2x faster)
S9, S10 and H2 still take forever.
(Note: #937 also adds the new test polynomial C1 from #907 to the test suite. This takes 680 ms with the latest improvements, previously ~forever.)
Correction: S9 doesn't take forever, it only takes 12 minutes!
To get a sense of what is going on, I put a printout in factor_van_hoeij to show each call to LLL and how long it takes:
S5:
LLL 17 x 17, 35 bits : 0.00021 s
LLL 17 x 18, 35 bits : 0.000162 s
LLL 17 x 19, -35 bits : 0.000411 s
LLL 10 x 20, -35 bits : 0.000158 s
LLL 8 x 21, -35 bits : 0.000217 s
S6:
LLL 17 x 17, 35 bits : 0.000198 s
LLL 17 x 18, -35 bits : 0.000843 s
LLL 18 x 19, -35 bits : 0.000288 s
LLL 18 x 20, -35 bits : 0.001144 s
LLL 33 x 33, 54 bits : 0.00122 s
LLL 33 x 34, -54 bits : 0.001891 s
LLL 30 x 35, -54 bits : 0.002212 s
LLL 31 x 36, -54 bits : 0.001956 s
LLL 15 x 37, -54 bits : 0.000606 s
LLL 5 x 38, -54 bits : 0.00014 s
S7:
LLL 33 x 33, 54 bits : 0.000697 s
LLL 33 x 34, -54 bits : 0.001945 s
LLL 24 x 35, -54 bits : 0.00034 s
LLL 24 x 36, -54 bits : 0.002197 s
LLL 25 x 37, -54 bits : 0.000594 s
LLL 25 x 38, -54 bits : 0.002948 s
LLL 65 x 65, 103 bits : 0.004933 s
LLL 65 x 66, -103 bits : 0.031963 s
LLL 66 x 67, -103 bits : 0.00867 s
LLL 62 x 68, -103 bits : 0.01468 s
LLL 63 x 69, -103 bits : 0.092595 s
LLL 31 x 70, -103 bits : 0.069487 s
LLL 30 x 71, -103 bits : 0.010149 s
S8:
LLL 65 x 65, 103 bits : 0.004821 s
LLL 65 x 66, -103 bits : 0.030986 s
LLL 66 x 67, -103 bits : 0.050655 s
LLL 54 x 68, -103 bits : 0.050977 s
LLL 55 x 69, -103 bits : 0.053301 s
LLL 129 x 129, 200 bits : 0.084153 s
LLL 129 x 130, -200 bits : 0.084978 s
LLL 125 x 131, -200 bits : 0.402601 s
LLL 126 x 132, -200 bits : 0.132055 s
LLL 114 x 133, -200 bits : 0.145725 s
LLL 115 x 134, -200 bits : 1.60024 s
LLL 54 x 135, -200 bits : 0.79608 s
LLL 54 x 136, -200 bits : 0.181834 s
S9:
LLL 129 x 129, 200 bits : 0.082886 s
LLL 129 x 130, -200 bits : 0.21772 s
LLL 130 x 131, -200 bits : 0.435493 s
LLL 114 x 132, -200 bits : 0.759173 s
LLL 115 x 133, -200 bits : 1.62082 s
LLL 116 x 134, -200 bits : 1.38855 s
LLL 117 x 135, -200 bits : 1.49151 s
LLL 257 x 257, 393 bits : 0.670866 s
LLL 257 x 258, -393 bits : 3.12472 s
LLL 252 x 259, -393 bits : 3.86854 s
LLL 253 x 260, -393 bits : 91.2537 s
LLL 237 x 261, -393 bits : 1.93611 s
LLL 238 x 262, -393 bits : 7.50094 s
LLL 198 x 263, -393 bits : 303.488 s
LLL 199 x 264, -393 bits : 335.692 s
LLL 86 x 265, -393 bits : 2.05302 s
(This is with MPFR disabled.)
It looks like LLL is taking a long time to finish for some input.
My best guess is that LLL should only be called if it is worth it. Flint1 had a function to determine if this was the case. I'm quite surprised this made so much difference if it was the real reason for the better performance there.
Playing with LLL parameters makes some difference (up to a factor two):
Note that the defaults are delta = 0.99, eta = 0.51.
delta = 0.75, eta = 0.51
LLL 129 x 129, 200 bits : 0.085197 s
LLL 129 x 130, -200 bits : 0.118409 s
LLL 130 x 131, -200 bits : 0.3499 s
LLL 114 x 132, -200 bits : 0.415874 s
LLL 115 x 133, -200 bits : 0.693953 s
LLL 116 x 134, -200 bits : 0.915278 s
LLL 117 x 135, -200 bits : 0.845167 s
LLL 257 x 257, 393 bits : 0.692637 s
LLL 257 x 258, -393 bits : 3.23055 s
LLL 252 x 259, -393 bits : 1.78256 s
LLL 253 x 260, -393 bits : 60.4798 s
LLL 237 x 261, -393 bits : 1.25693 s
LLL 238 x 262, -393 bits : 2.3563 s
LLL 239 x 263, -393 bits : 240.758 s
LLL 240 x 264, -393 bits : 253.835 s
LLL 127 x 265, -393 bits : 3.27139 s
delta = 0.75, eta = 0.6
LLL 129 x 129, 200 bits : 0.089295 s
LLL 129 x 130, -200 bits : 0.113068 s
LLL 130 x 131, -200 bits : 0.332855 s
LLL 114 x 132, -200 bits : 0.284462 s
LLL 115 x 133, -200 bits : 0.546179 s
LLL 116 x 134, -200 bits : 0.611776 s
LLL 117 x 135, -200 bits : 0.753995 s
LLL 118 x 136, -200 bits : 0.67701 s
LLL 257 x 257, 393 bits : 0.765197 s
LLL 257 x 258, -393 bits : 3.47659 s
LLL 252 x 259, -393 bits : 1.47646 s
LLL 253 x 260, -393 bits : 56.906 s
LLL 237 x 261, -393 bits : 0.821933 s
LLL 238 x 262, -393 bits : 2.22039 s
LLL 239 x 263, -393 bits : 182.26 s
LLL 240 x 264, -393 bits : 196.611 s
LLL 127 x 265, -393 bits : 2.63544 s
delta = 0.75, eta = 0.75
LLL 129 x 129, 200 bits : 0.088646 s
LLL 129 x 130, -200 bits : 0.081249 s
LLL 130 x 131, -200 bits : 0.297023 s
LLL 114 x 132, -200 bits : 0.178078 s
LLL 115 x 133, -200 bits : 0.327666 s
LLL 116 x 134, -200 bits : 0.454545 s
LLL 117 x 135, -200 bits : 23.5608 s
LLL 117 x 136, -200 bits : 0.535455 s
LLL 257 x 257, 393 bits : 0.68268 s
LLL 257 x 258, -393 bits : 3.2413 s
LLL 252 x 259, -393 bits : 1.0691 s
LLL 253 x 260, -393 bits : 42.3917 s
LLL 237 x 261, -393 bits : 0.670725 s
LLL 238 x 262, -393 bits : 1.11835 s
LLL 239 x 263, -393 bits : 144.582 s
LLL 240 x 264, -393 bits : 145.512 s
LLL 239 x 265, -393 bits : 2.33037 s
LLL 240 x 266, -393 bits : 5.09456 s
Sure but one has to use parameters within the scope of Stehle's paper. Of course there's nothing stopping one doing a final reduction with other values, but this might be more expensive, as one then has to use a standard LLL reduction.
On Wed, 14 Apr 2021 at 09:36, Fredrik Johansson @.***> wrote:
Playing with LLL parameters makes some difference (up to a factor two):
Note that the defaults are delta = 0.99, eta = 0.51.
delta = 0.75, eta = 0.51
LLL 129 x 129, 200 bits : 0.085197 s LLL 129 x 130, -200 bits : 0.118409 s LLL 130 x 131, -200 bits : 0.3499 s LLL 114 x 132, -200 bits : 0.415874 s LLL 115 x 133, -200 bits : 0.693953 s LLL 116 x 134, -200 bits : 0.915278 s LLL 117 x 135, -200 bits : 0.845167 s LLL 257 x 257, 393 bits : 0.692637 s LLL 257 x 258, -393 bits : 3.23055 s LLL 252 x 259, -393 bits : 1.78256 s LLL 253 x 260, -393 bits : 60.4798 s LLL 237 x 261, -393 bits : 1.25693 s LLL 238 x 262, -393 bits : 2.3563 s LLL 239 x 263, -393 bits : 240.758 s LLL 240 x 264, -393 bits : 253.835 s LLL 127 x 265, -393 bits : 3.27139 s
delta = 0.75, eta = 0.6
LLL 129 x 129, 200 bits : 0.089295 s LLL 129 x 130, -200 bits : 0.113068 s LLL 130 x 131, -200 bits : 0.332855 s LLL 114 x 132, -200 bits : 0.284462 s LLL 115 x 133, -200 bits : 0.546179 s LLL 116 x 134, -200 bits : 0.611776 s LLL 117 x 135, -200 bits : 0.753995 s LLL 118 x 136, -200 bits : 0.67701 s LLL 257 x 257, 393 bits : 0.765197 s LLL 257 x 258, -393 bits : 3.47659 s LLL 252 x 259, -393 bits : 1.47646 s LLL 253 x 260, -393 bits : 56.906 s LLL 237 x 261, -393 bits : 0.821933 s LLL 238 x 262, -393 bits : 2.22039 s LLL 239 x 263, -393 bits : 182.26 s LLL 240 x 264, -393 bits : 196.611 s LLL 127 x 265, -393 bits : 2.63544 s
delta = 0.75, eta = 0.75
LLL 129 x 129, 200 bits : 0.088646 s LLL 129 x 130, -200 bits : 0.081249 s LLL 130 x 131, -200 bits : 0.297023 s LLL 114 x 132, -200 bits : 0.178078 s LLL 115 x 133, -200 bits : 0.327666 s LLL 116 x 134, -200 bits : 0.454545 s LLL 117 x 135, -200 bits : 23.5608 s LLL 117 x 136, -200 bits : 0.535455 s LLL 257 x 257, 393 bits : 0.68268 s LLL 257 x 258, -393 bits : 3.2413 s LLL 252 x 259, -393 bits : 1.0691 s LLL 253 x 260, -393 bits : 42.3917 s LLL 237 x 261, -393 bits : 0.670725 s LLL 238 x 262, -393 bits : 1.11835 s LLL 239 x 263, -393 bits : 144.582 s LLL 240 x 264, -393 bits : 145.512 s LLL 239 x 265, -393 bits : 2.33037 s LLL 240 x 266, -393 bits : 5.09456 s
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/wbhart/flint2/issues/932#issuecomment-819300959, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAB3HJU3ZAGTXXCOGBSN3ITTIVAZJANCNFSM42VEMOCA .
When I implemented polynomial factoring in 2016, the following were the times:
I also gave a list of things that we don't do yet, some of which have been done since: