Thanks for contributing to GMP! Marius Hillenbrand <mhil...@linux.ibm.com> writes:
These patches add IBM z13 as a new s390_64 CPU level to mpn and add optimized versions of addmul_1 and submul_1 that exploit the SIMD extensions that were introduced with the IBM z13 generation. Both implementations share the same structure and use 128-bit add/subtract ops in vector registers with carry/borrow bits in registers. 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. I got started with addmul_1 since it felt challenging and instructive enough, yet will look into the other ops, as well. We are careful about not adding asm code which does not give real, adequate speedup. It has happened in the past that seemingly useful new instructions do not easily lead to improved performance. A 2nd goal is to try to approach the theoretical maximum performance, e.g., to saturate the multiply unit or some other unavoidable part of a CPU pipeline. Therefore, I have two questions: 1. What is the measured speed difference of the existing code and the new code? 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? 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. 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. -- Torbjörn Please encrypt, key id 0xC8601622 _______________________________________________ gmp-devel mailing list gmp-devel@gmplib.org https://gmplib.org/mailman/listinfo/gmp-devel