This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug math/13932] dbl-64 pow unexpectedly slow for some inputs


https://sourceware.org/bugzilla/show_bug.cgi?id=13932

--- Comment #11 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  c3d466cba1692708a19c6ff829d0386c83a0c6e5 (commit)
      from  7bb087bd7bfe3616c4c0974a3f7352b593353ea5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c3d466cba1692708a19c6ff829d0386c83a0c6e5

commit c3d466cba1692708a19c6ff829d0386c83a0c6e5
Author: Wilco Dijkstra <wdijkstr@arm.com>
Date:   Mon Feb 12 10:42:42 2018 +0000

    Remove slow paths from pow

    Remove the slow paths from pow.  Like several other double precision math
    functions, pow is exactly rounded.  This is not required from math
functions
    and causes major overheads as it requires multiple fallbacks using higher
    precision arithmetic if a result is close to 0.5ULP.  Ridiculous slowdowns
    of up to 100000x have been reported when the highest precision path
triggers.

    All GLIBC math tests pass on AArch64 and x64 (with ULP of pow set to 1).
    The worst case error is ~0.506ULP.  A simple test over a few hundred
million
    values shows pow is 10% faster on average.  This fixes BZ #13932.

        [BZ #13932]
        * sysdeps/ieee754/dbl-64/uexp.h (err_1): Remove.
        * benchtests/pow-inputs: Update comment for slow path cases.
        * manual/probes.texi (slowpow_p10): Delete removed probe.
        (slowpow_p10): Likewise.
        * math/Makefile: Remove halfulp.c and slowpow.c.
        * sysdeps/aarch64/libm-test-ulps: Set ULP of pow to 1.
        * sysdeps/generic/math_private.h (__exp1): Remove error argument.
        (__halfulp): Remove.
        (__slowpow): Remove.
        * sysdeps/i386/fpu/halfulp.c: Delete file.
        * sysdeps/i386/fpu/slowpow.c: Likewise.
        * sysdeps/ia64/fpu/halfulp.c: Likewise.
        * sysdeps/ia64/fpu/slowpow.c: Likewise.
        * sysdeps/ieee754/dbl-64/e_exp.c (__exp1): Remove error argument,
        improve comments and add error analysis.
        * sysdeps/ieee754/dbl-64/e_pow.c (__ieee754_pow): Add error analysis.
        (power1): Remove function:
        (log1): Remove error argument, add error analysis.
        (my_log2): Remove function.
        * sysdeps/ieee754/dbl-64/halfulp.c: Delete file.
        * sysdeps/ieee754/dbl-64/slowpow.c: Likewise.
        * sysdeps/m68k/m680x0/fpu/halfulp.c: Likewise.
        * sysdeps/m68k/m680x0/fpu/slowpow.c: Likewise.
        * sysdeps/powerpc/power4/fpu/Makefile: Remove CPPFLAGS-slowpow.c.
        * sysdeps/x86_64/fpu/libm-test-ulps: Set ULP of pow to 1.
        * sysdeps/x86_64/fpu/multiarch/Makefile: Remove slowpow-fma.c,
        slowpow-fma4.c, halfulp-fma.c, halfulp-fma4.c.
        * sysdeps/x86_64/fpu/multiarch/e_pow-fma.c (__slowpow): Remove define.
        * sysdeps/x86_64/fpu/multiarch/e_pow-fma4.c (__slowpow): Likewise.
        * sysdeps/x86_64/fpu/multiarch/halfulp-fma.c: Delete file.
        * sysdeps/x86_64/fpu/multiarch/halfulp-fma4.c: Likewise.
        * sysdeps/x86_64/fpu/multiarch/slowpow-fma.c: Likewise.
        * sysdeps/x86_64/fpu/multiarch/slowpow-fma4.c: Likewise.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                   |   37 ++++++
 benchtests/pow-inputs                       |    6 +-
 manual/probes.texi                          |   16 ---
 math/Makefile                               |    4 +-
 sysdeps/aarch64/libm-test-ulps              |    2 +
 sysdeps/generic/math_private.h              |    4 +-
 sysdeps/i386/fpu/halfulp.c                  |    1 -
 sysdeps/i386/fpu/slowpow.c                  |    1 -
 sysdeps/ia64/fpu/halfulp.c                  |    1 -
 sysdeps/ia64/fpu/slowpow.c                  |    1 -
 sysdeps/ieee754/dbl-64/e_exp.c              |   42 +++----
 sysdeps/ieee754/dbl-64/e_pow.c              |  172 ++++-----------------------
 sysdeps/ieee754/dbl-64/halfulp.c            |  152 -----------------------
 sysdeps/ieee754/dbl-64/slowpow.c            |  125 -------------------
 sysdeps/ieee754/dbl-64/uexp.h               |    2 +-
 sysdeps/m68k/m680x0/fpu/halfulp.c           |    1 -
 sysdeps/m68k/m680x0/fpu/slowpow.c           |    1 -
 sysdeps/powerpc/power4/fpu/Makefile         |    1 -
 sysdeps/x86_64/fpu/libm-test-ulps           |    2 +
 sysdeps/x86_64/fpu/multiarch/Makefile       |   12 +--
 sysdeps/x86_64/fpu/multiarch/e_pow-fma.c    |    1 -
 sysdeps/x86_64/fpu/multiarch/e_pow-fma4.c   |    1 -
 sysdeps/x86_64/fpu/multiarch/halfulp-fma.c  |    4 -
 sysdeps/x86_64/fpu/multiarch/halfulp-fma4.c |    4 -
 sysdeps/x86_64/fpu/multiarch/slowpow-fma.c  |   11 --
 sysdeps/x86_64/fpu/multiarch/slowpow-fma4.c |   11 --
 26 files changed, 90 insertions(+), 525 deletions(-)
 delete mode 100644 sysdeps/i386/fpu/halfulp.c
 delete mode 100644 sysdeps/i386/fpu/slowpow.c
 delete mode 100644 sysdeps/ia64/fpu/halfulp.c
 delete mode 100644 sysdeps/ia64/fpu/slowpow.c
 delete mode 100644 sysdeps/ieee754/dbl-64/halfulp.c
 delete mode 100644 sysdeps/ieee754/dbl-64/slowpow.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/halfulp.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/slowpow.c
 delete mode 100644 sysdeps/x86_64/fpu/multiarch/halfulp-fma.c
 delete mode 100644 sysdeps/x86_64/fpu/multiarch/halfulp-fma4.c
 delete mode 100644 sysdeps/x86_64/fpu/multiarch/slowpow-fma.c
 delete mode 100644 sysdeps/x86_64/fpu/multiarch/slowpow-fma4.c

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]