[PATCH] Add optimized addmul_1 and submul_1 for IBM z13

Marius Hillenbrand mhillen at linux.ibm.com
Fri Feb 19 11:05:44 UTC 2021


Thanks for your feedback.

On 2/17/21 2:26 PM, Torbjörn Granlund wrote:
> Marius Hillenbrand <mhillen at linux.ibm.com> writes:
>   Tested with the regression test suite and stressed with tests/devel/anymul_1.c
> Please use tests/devel/try too.  It checks for access outside of defined
> operands, which is a common bug in GMP asm.

Done, completed successfully for both mpn_addmul_1 and mpn_submul1.

> 1. What is the measured speed difference of the existing code and the
> new code?

I measure ~40% reduction in cycles per limb on z14 and ~60% reduction on
z15, for both addmul_1 and submul_1 (smaller gains for small n <10 but
no regressions), yet ...

> 2. Is the measured performance close to what you would hope for, given
> some hard pipeline limits?  If not, would you be willing to try to
> improve things?

... I assumed that I hit max multiplication throughput, yet I just
learned that there is potential to increase that further. I'll accept
that challenge and keep working on the patch :)

> As a rough measure, if the code is within 20% of theoretical maximum for
> the target CPU pipeline, we're happy.  If not, more unrolling, better
> scheduling, a different instruction choice, might be tried.  Code
> complexity is also an issue, for sure.  But addmul_1 is extremely
> important for GMP's performance (in particular in the absence of special
> mul_basecase and sqr_basecase) so complexity there is particularly
> tolerated.

Thanks for that guidance; that supports another idea I have in mind.

> Your contribution is significant enough to need copyright paperwork from
> you and IBM.  IBM is FOSS-friendly, so I don't expect any problems, but
> it might take a while.

I went through the process before and already have copyright assignments
in place for multiple GNU projects, including GMP, so we should be good
from that side.

Marius Hillenbrand
Linux on Z development
IBM Deutschland Research & Development GmbH
Vors. des Aufsichtsrats: Gregor Pillen / Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht
Stuttgart, HRB 243294

More information about the gmp-devel mailing list