1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-10-26 00:57:39 +03:00
Commit Graph

402 Commits

Author SHA1 Message Date
Wilco Dijkstra
7ad95d5506 libmvec: Add inputs for asinpi(f), acospi(f), atanpi(f) and atan2pi(f)
Add initial inputs for asinpi(f), acospi(f), atanpi(f) and atan2pi(f) based
on existing asin/acos/atan inputs.

Benchtests now works on the new libmvec function.

Reviewed-by: Yury Khrustalev <yury.khrustalev@arm.com>
2025-05-23 11:27:44 +00:00
Cupertino Miranda
c6bf6d1897 benchtest: malloc tcache hotpath benchtest
Existing benchtests for malloc infrastructure seem to be rather generic
to test global malloc implementation performance.  This new benchtest
focus on reducing any non tcache related side effects, allowing to more
realistically predict performance impacts of tcache code changes.
The test was inpired in bench-[cm]alloc-thread code, with severe
simplifications:
 - forces single thread execution, reducing concurrency side-effects,
   like cache incoherence penalties due simultaneous writes to the same
   cache pages;
 - Focus on allocating and deallocating a single size for all the
   duration of the benchmark. Since all it does is allocate and
   deallocate, it will measure the tcache hotpath without any
   side-effects.
 - Allows to specify the allocation size as input argument.

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-05-15 13:13:00 +00:00
Paul Zimmermann
ad966bc4ef added benchtest inputs for log2l 2025-05-13 15:07:41 +02:00
Paul Zimmermann
aa4c600483 added benchtest inputs for expl 2025-05-13 15:06:18 +02:00
Paul Zimmermann
2d9f479f37 added benchtest inputs for powl
changes in v2:
* fixed the missing Makefile entry in the first version
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-05-13 11:10:17 +02:00
Paul Zimmermann
442ddedc07 added benchtest inputs for fmal 2025-05-13 10:58:41 +02:00
Cupertino Miranda
77930e0447 benchtest: Correct shell script related to bench-malloc-thread
This patch changes the shell script that selects which arguments are used
for the execution of bench-malloc-thread.
The problem seems to have been introduced in commit:

  commit 2d6427a63c
  Author: Wangyang Guo <wangyang.guo@intel.com>
  Date:   Fri Nov 29 16:05:35 2024 +0800
  benchtests: Add calloc test

With current condition, the following error "/bin/sh: 3: [[: not found"
occurs when executing `make bench BENCHSET="malloc-thread"` and the else
path is taken, using incorrect arguments for bench test execution.

Error is reproducible in Debian based distros.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-04-25 16:38:25 +02:00
Wilco Dijkstra
dd003db8d1 benchtests: Increase iterations of bench-malloc-simple
Increase iterations so it runs for ~1 second on modern CPUs.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-03-18 17:13:28 +00:00
Sunil K Pandey
c7c4a5906f x86_64: Add atanh with FMA
On SPR, it improves atanh bench performance by:

			Before		After		Improvement
reciprocal-throughput	15.1715		14.8628		2%
latency			57.1941		56.1883		2%

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2025-03-13 14:30:47 -07:00
Sunil K Pandey
dded0d20f6 x86_64: Add sinh with FMA
On SPR, it improves sinh bench performance by:

			Before		After		Improvement
reciprocal-throughput	14.2017		11.815		17%
latency			36.4917		35.2114		4%

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2025-03-13 10:55:25 -07:00
Adhemerval Zanella
5e1a64736e benchtests: Remove wrong snippet from 360cce0b06 2025-03-13 10:30:43 -03:00
Adhemerval Zanella
360cce0b06 nptl: Check if thread is already terminated in sigcancel_handler (BZ 32782)
The SIGCANCEL signal handler should not issue __syscall_do_cancel,
which calls __do_cancel and __pthread_unwind, if the cancellation
is already in proces (and libgcc unwind is not reentrant).  Any
cancellation signal received after is ignored.

Checked on x86_64-linux-gnu and aarch64-linux-gnu.

Tested-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-03-13 09:11:13 -03:00
Wilco Dijkstra
3a9fb97caf benchtests: Add random strlen benchmark
Add a new randomized strlen test similar to bench-random-memcpy.  Instead of
repeating the same call to strlen over and over again, it times a large number
of different strings.  The distribution of the string length and alignment is
based on SPEC2017.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-03-05 13:30:50 +00:00
Wilco Dijkstra
dac7ea4a6f benchtests: Improve large memcpy/memset benchmarks
Adjust sizes between 64KB and 16MB and iterations based on length.
Remove incorrect uses of alloc_bufs since we're not interested in measuring
Linux clear_page time.  Use getpagesize() - 1 instead of 4095 when
aligning within a page.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-03-05 13:29:48 +00:00
Adhemerval Zanella
57d1fc9971 benchtests: Add tanpif
Random inputs in the range of [-4,4].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-12 16:31:54 -03:00
Adhemerval Zanella
10370a4d00 benchtests: Add sinpif
Random inputs in the range of [-4,4].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-12 16:31:51 -03:00
Adhemerval Zanella
180e97bee6 benchtests: Add cospif
Random inputs in the range of [-4,4].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-12 16:31:44 -03:00
Adhemerval Zanella
1700d306d4 benchtests: Add atanpif
Random inputs in the range of [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:07:13 -03:00
Adhemerval Zanella
ec9d2f3066 benchtests: Add atan2pif
Random inputs in the range of [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:07:08 -03:00
Adhemerval Zanella
082ffa4ddc benchtests: Add asinpif
Random inputs in the range of [-1,1].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:07:02 -03:00
Adhemerval Zanella
3e0e782b29 benchtests: Add acospif
Random inputs in the range of [-1,1].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:06:56 -03:00
Florian Weimer
0b795abd62 benchtests: Add dummy in put files cospi, cospif, sinpi, sinpif, tanpi, tanpif
This fixes an AArch64 build failure:

python3 -B ../sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py bench-float-advsimd-cospi > …/benchtests/bench-float-advsimd-cospi.c
Traceback (most recent call last):
  File "…/sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py", line 106, in <module>
    main(sys.argv[1])
    ~~~~^^^^^^^^^^^^^
  File "…/sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py", line 81, in main
    with open(f"../benchtests/libmvec/{input_filename}") as f:
         ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: '../benchtests/libmvec/cospif-inputs'
2025-01-16 19:59:58 +01:00
Paul Eggert
2642002380 Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
Adhemerval Zanella
a2b0ff98a0 include/sys/cdefs.h: Add __attribute_optimization_barrier__
Add __attribute_optimization_barrier__ to disable inlining and cloning on a
function.  For Clang, expand it to

__attribute__ ((optnone))

Otherwise, expand it to

__attribute__ ((noinline, clone))

Co-Authored-By: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
2024-12-23 06:28:55 +08:00
Adhemerval Zanella
042ed4b28a benchtests: Add tanhf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
b76b90a809 benchtests: Add sinhf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
7b7a3fa121 benchtests: Add coshf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
4f1e26ba47 benchtests: Add atanhf benchmark
The input is based on acosf one (random inputs in [-1,1]).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
fa857e6c7b benchtests: Add atan2f benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
74a275d244 benchtests: Add atanf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
275d4d479b benchtests: Add asinhf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
1da8a3707c benchtests: Add asinf benchmark
The input is based on acosf one (random inputs in [-1,1]).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
fa145f3784 benchtests: Add acoshf benchmark
Random inputs in the range [1,21].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella
647e464374 benchtests: Add acosf benchmark
The input is based on acos one (random inputs in [-1,1]).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Kuan-Wei Chiu
dce846c789 benchtests: Add benchmark test for bsearch
Introduce a benchmark test for the bsearch function to evaluate its
performance.

Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-11 17:04:42 -05:00
Wangyang Guo
2d6427a63c benchtests: Add calloc test
Two new benchmarks related to calloc added:
- bench-calloc-simple
- bench-calloc-thread
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-11-29 19:04:28 +08:00
Adhemerval Zanella
2234b08763 benchtests: Add tanf benchmark
Random inputs in [-pi, pi].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella
ce4122ff97 benchtests: Add lgammaf benchmark
Random inputs in the range [-20.0,20.0].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella
d7612d04e4 benchtests: Add erfcf benchmark
It is based on binary64 erfc-inputs, with random inputs in
[0,b=0x1.41bbf6p+3] where b in the smallest number such that
erfcf(b) rounds to 0 (to nearest).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella
50657965da benchtests: Add erff benchmark
It is based on binary64 erf-inputs, with random inputs in [0,b=0x1.f5a888p+1]
where b in the smallest number such that erff(b) rounds to 1 (to nearest).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella
53c80be8da benchtests: Add cbrtf benchmark
Based on binary64 benchtests, with random inputs in [1,8].
2024-11-22 10:01:03 -03:00
Adhemerval Zanella
48767cbb76 benchtests: Add log10p1f benchmark
It is based on log2f data.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:20 -03:00
Adhemerval Zanella
ef2485c5fe benchtests: Add log1p benchmark
Random inputs x*2^e where x is random in [1/2,1] and e in [-29,127].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:19 -03:00
Adhemerval Zanella
acc2137382 benchtests: Add log2p1f benchmark
It is based on log2f data.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:18 -03:00
Adhemerval Zanella
1e262f80dd benchtests: Add log10f benchmark
The inputs are random numbers in the form x*2^e where x is random
in [0x1p-1,0x1p+0] and e in [-126,127].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:16 -03:00
Adhemerval Zanella
2dbf7c4bf1 benchtests: Add expm1f benchmark
The inputs are modeled based on expm1-inputs, with the range
adapted to binary32 range.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:15 -03:00
Adhemerval Zanella
19ab8bbd71 benchtests: Add exp2m1f benchmark
The input is based on exp2f benchmark.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:13 -03:00
Adhemerval Zanella
ad53c12798 benchtests: Add exp10m1f benchmark
The input is based on exp10f benchmark.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:09 -03:00
Paul Zimmermann
392b3f0971 replace tgammaf by the CORE-MATH implementation
The CORE-MATH implementation is correctly rounded (for any rounding mode).
This can be checked by exhaustive tests in a few minutes since there are
less than 2^32 values to check against for example GNU MPFR.
This patch also adds some bench values for tgammaf.

Tested on x86_64 and x86 (cfarm26).

With the initial GNU libc code it gave on an Intel(R) Core(TM) i7-8700:

      "tgammaf": {
       "": {
        "duration": 3.50188e+09,
        "iterations": 2e+07,
        "max": 602.891,
        "min": 65.1415,
        "mean": 175.094
       }
      }

With the new code:

      "tgammaf": {
       "": {
        "duration": 3.30825e+09,
        "iterations": 5e+07,
        "max": 211.592,
        "min": 32.0325,
        "mean": 66.1649
       }
      }

With the initial GNU libc code it gave on cfarm26 (i686):

  "tgammaf": {
   "": {
    "duration": 3.70505e+09,
    "iterations": 6e+06,
    "max": 2420.23,
    "min": 243.154,
    "mean": 617.509
   }
  }

With the new code:

  "tgammaf": {
   "": {
    "duration": 3.24497e+09,
    "iterations": 1.8e+07,
    "max": 1238.15,
    "min": 101.155,
    "mean": 180.276
   }
  }

Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>

Changes in v2:
    - include <math.h> (fix the linknamespace failures)
    - restored original benchtests/strcoll-inputs/filelist#en_US.UTF-8 file
    - restored original wrapper code (math/w_tgammaf_compat.c),
      except for the dealing with the sign
    - removed the tgammaf/float entries in all libm-test-ulps files
    - address other comments from Joseph Myers
      (https://sourceware.org/pipermail/libc-alpha/2024-July/158736.html)

Changes in v3:
    - pass NULL argument for signgam from w_tgammaf_compat.c
    - use of math_narrow_eval
    - added more comments

Changes in v4:
    - initialize local_signgam to 0 in math/w_tgamma_template.c
    - replace sysdeps/ieee754/dbl-64/gamma_productf.c by dummy file

Changes in v5:
    - do not mention local_signgam any more in math/w_tgammaf_compat.c
    - initialize local_signgam to 1 instead of 0 in w_tgamma_template.c
      and added comment

Changes in v6:
    - pass NULL as 2nd argument of __ieee754_gammaf_r in
      w_tgammaf_compat.c, and check for NULL in e_gammaf_r.c

Changes in v7:
    - added Signed-off-by line for Alexei Sibidanov (author of the code)

Changes in v8:
    - added Signed-off-by line for Paul Zimmermann (submitted of the patch)

Changes in v9:
    - address comments from review by Adhemerval Zanella
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2024-10-11 11:12:32 +02:00
Wilco Dijkstra
79e472f0f8 benchtests: Add random memset benchmark
Add a new randomized memset test similar to bench-random-memcpy.  Instead of
repeating the same call to memset over and over again, it times a large number
of different inputs.  The distribution of memset length and alignment is based
on SPEC2017 (length up to 4096 and alignment up to 64).

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2024-08-07 14:58:46 +01:00