Karim Belabas on Thu, 03 Jun 2004 19:23:30 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: round4 performance


* Igor Schein [2004-06-02 22:57]:
> On Wed, Jun 02, 2004 at 08:50:29PM +0200, Karim Belabas wrote:
>> * Igor Schein [2004-05-17 17:38]:
>> > On Wed, May 05, 2004 at 08:35:40PM +0200, Xavier-François Roblot wrote:
>>>> Well, I have modified update_alpha (after Karim pointed out a strange
>>>> behavior in this function) and that kind of miraculously speed up
>>>> dramatically that example!... As you will see, the computing time is now
>>>> very reasonable and it runs with a small stack too (I hope the result is
>>>> still correct though, I haven't checked yet). Igor, Karim and I still
>>>> have some ideas for improvements for nilord but you need some new bad
>>>> polynomials to test them. Please send me your worst examples!
>>>
>>> As of current CVS, I have one:
>>>
>>> x^64 + 144*x^62 + 9552*x^60 + 390432*x^58 + 11080200*x^56 + 232989696*x^54 +
>>>  3780238752*x^52 + 48636265248*x^50 + 505878824736*x^48 + 4313989216800*x^46
>>>  + 30476092609440*x^44 + 179725400591616*x^42 + 889696224175824*x^40 + 37113
>>> 75959364288*x^38 + 13078302651873216*x^36 + 38977344315307584*x^34 + 9825210
>>> 8786134728*x^32 + 209260046783039040*x^30 + 375757773758107200*x^28 + 566964
>>> 010597622400*x^26 + 715492120542918048*x^24 + 750523839570713088*x^22 + 6491
>>> 30912300207232*x^20 + 458125942466369664*x^18 + 260295367984115328*x^16 + 11
>>> 6982277577092224*x^14 + 40621591866960000*x^12 + 10554853128818688*x^10 + 19
>>> 60600165904448*x^8 + 242910928408320*x^6 + 17820025360128*x^4 + 592019290368
>>> *x^2 + 1536953616
>>>
>>> It did behave decently on 2.2.7, but slowed down considerably after
>>> all latest changes.
>>
>> It is back to decent speed in current CVS [ and (many) further changes behind
>> the scenes... ].
>>
>> The implementation is still far from optimal since some non-modular
>> computations remain [ two in particular at the end of testb2() / testc2()
>> in the non-primary case are very expensive ], but I don't want to further
>> complicate the code before extensive checks.
>>
>> Any regression ?
>
> Absolutely:
>
> ? nfdisc(x^64+2^16);
>   *** nfdisc: bug in GP (Segmentation Fault), please report

I have corrected the SEGV above and went on fixing the above-mentioned 2
inefficiencies.  The code is almost entirely modular now, and often quite a
bit faster (~ a factor 2 for the big polynomial). Esp. in the large
degrees you seem to favor :-).

The current code passes my test-suite [ make test-round4 + all polynomials
submitted so far in this thread ].

Please re-check ! I'll try and cleanup everything after that last checkpoint.

Thanks,

    Karim.
--
Karim Belabas                     Tel: (+33) (0)1 69 15 57 48
Dep. de Mathematiques, Bat. 425   Fax: (+33) (0)1 69 15 60 19
Universite Paris-Sud              http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France)            http://pari.math.u-bordeaux.fr/  [PARI/GP]