Another data point. At 700 limbs, our Toom 7, which is slightly less
optimised than the Toom 4, is consistently about 0.5% faster than the
Toom 4.

I'm sure you'll be proved right in the end. But I wouldn't like to
call it either way at this stage.

Bill.

2009/4/19 Bill Hart <goodwillh...@googlemail.com>:
> Here's some things to consider:
>
> * I timed MPIR and GMP 4.3.0 at 700 limbs, just below our Toom 4/7
> cutoff. There is a 6 % difference. Adjusting for the speed of the
> assembly code which will be in our next release, there is zero
> difference.
>
> * Our Toom 3 is optimised in a completely different way to GMP 4.3.0,
> perhaps pushing our cutoffs higher. Whether Toom 4 can be optimised as
> effectively as Toom 3 remains to be seen.
>
> * At 700 limbs Toom 4 gives GMP 4.3.0 3% over its Toom 3. The
> optimisations we make to our Toom 3 give us about 2% over our original
> Toom 3. I didn't look to see if any improvements have been made to the
> GMP Toom 3 since the last version, or whether they make any measurable
> difference. I recall reading of a saving of half an operation on
> Bodrato's website. I'm pretty sure our original Toom 3 doesn't have
> this.
>
> There is no question our Toom 4 can be optimised beyond its current
> level but it is unclear if this will make more than 1% difference. In
> the case of Toom 7, things seem hopeless. Optimising any single
> operation, except one of the mp multiplies makes no measurable
> difference. I've tried optimising up to three scalar operations at a
> time and still not been able to measure the effect.
>
> It is true that switching to a "fixed" precision solution like GMP
> instead of the current sign/size solution, would make it easier to
> optimise. But this affects other things negatively.
>
> At present there are factors of 2 or 4 to be had elsewhere in the
> library or even optimisations which will give a uniform speedup for
> almost everything of a few percent. Those seem far more important at
> present.
>
> Bill.
>
> 2009/4/19 Bill Hart <goodwillh...@googlemail.com>:
>> Both of the algorithms are similarly optimised. Actually Toom 4 is
>> slightly more optimised than Toom 7.
>>
>> You may be right, and no "premature decision" has been made. However
>> it occurs to me that Toom 7 breaks into smaller chunks, so the
>> multiplications are cheaper.
>>
>> The crossover is currently 700. Toom 7 breaks into chunks of 100 and
>> 13 multiplies are done. Toom 4 breaks into chunks of 175 and 5
>> multiplies are done. It seems to me to be quite possible for Toom 7 to
>> always beat Toom 4, or nearly so purely because of this sort of thing.
>> I'm not saying this is the case. I'm just saying it may be the case.
>>
>> We are working on lots of assembly code to optimise Toom 4 and Toom 7.
>> As for managing the sign/size stuff, I haven't decided whether I want
>> to do it this way in the long run or not. It has some advantages which
>> the other method does not. One thing I can say for sure is that the
>> difference in speed in the generic case is negligible. The other
>> optimisations we are going to be doing will make a much greater
>> difference.
>>
>> Bill.
>>
>> 2009/4/19 David Harvey <dmhar...@cims.nyu.edu>:
>>>
>>>
>>>
>>> On Apr 15, 7:11 pm, Bill Hart <goodwillh...@googlemail.com> wrote:
>>>
>>>> Clicking on the graph does make it bigger, but yeah, the critical
>>>> region we are talking about is a bit compressed.
>>>
>>> I just took a look at the toom4 code. It looks like there is a lot of
>>> unnecessary sign/size management and data copying. I would suggest
>>> some serious optimisation work before making a premature decision to
>>> dump toom4 in favour of toom7. I can't think of any earthly reason why
>>> a toom7 would beat toom4/5/6 near the toom3-toom4 threshold. It's like
>>> claiming that a strassen matrix multiply written in C is fast for a
>>> 10x10 matrix because you're comparing against an n^3 algorithm written
>>> in python. Maybe the C-python analogy is unfair, but you get my drift.
>>>
>>> david
>>>
>>> >>>
>>>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-devel@googlegroups.com
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to