Skip to content
  1. Jan 27, 2025
  2. Jan 22, 2025
  3. Jan 21, 2025
    • Joana Cruz's avatar
      Add plotting tool · 34a8188d
      Joana Cruz authored
      Add a tool capable of processing and plotting the results produced
      by the new benchmark tool. Also support comparison with reference
      (assumes libm).
      Produces 1 graph per (precision, accuracy, arch, compiler) showing
      performance for various variants (scalar, vector and scalable vector).
      34a8188d
  4. Jan 16, 2025
  5. Dec 24, 2024
    • Joana Cruz's avatar
      Add libm benchmarks · 074162c9
      Joana Cruz authored
      Extended current benchmark tool with support to benchmark of libm
      functions. Libm benchmark is enabled in all functions listed in
      benchlibm.cpp.
      It interfaces with the rest of the existing tool through
      benchmark_callers_libm.hpp (defines macros which simplify how the
      list of functions to benchmark looks like as it groups functions
      by precision/accuracy/variant).
      The tool is integrated with SLEEF via CMake, meaning it can
      be built automatically when SLEEF is built. To enable that,
      pass CMake argument -DSLEEF_BUILD_BENCH=ON and
      -DSLEEF_BUILD_BENCH_REF=ON.
      Note this option is only enabled on Linux OS.
      074162c9
  6. Dec 20, 2024
  7. Dec 06, 2024
    • Xu Han's avatar
      add a switch for libm. · 56e1f79c
      Xu Han authored
      56e1f79c
    • Pierre Blanchard's avatar
      Update overflow bound in log1p(f) · ccd4fd4f
      Pierre Blanchard authored
      And add tests in this region.
      
      Fix functions in region between previous
      overflow bound and maximum float.
      
      Accuracy is maintained by relying on high
      accuracy log (in branch), however performance
      drops slightly. Ideally the core approximation
      should also work above threshold.
      ccd4fd4f
  8. Dec 03, 2024
    • Pierre Blanchard's avatar
      Fix oflow bound in exp and pow. · b997b2f8
      Pierre Blanchard authored
      Issue #600 highlighted a limit of current
      implementation where early overflow is noticed,
      which diverges from the C99 standard.
      
      This patch adds test to catch this type of cases.
      
      It only checks a few points therefore we don't
      know for sure if overflow occurs at the right time
      but we know if something is wrong in the overflow
      region.
      
      Fix both scalar and simd implementation (double precision)
      
      Fixes #523.
      b997b2f8
  9. Nov 29, 2024
  10. Nov 11, 2024
    • Michael Orlitzky's avatar
      Configure.cmake: improve and unify RISC-V vector extension checks · 87e73dc7
      Michael Orlitzky authored
      To test for the RISC-V vector extension (RVV), we currently run two
      small programs -- one for each value of LMUL=1,2 -- that use some
      vector intrinsics from the v0.11.x draft of the intrinsics spec. The
      library itself however needs newer intrinsics than the ones that we
      test for. This can lead to a problem because GCC 13 supports the
      intrinsics that we test for, but not (all of) the ones we intend to
      use. In short, the build can fail with GCC 13:
      
        https://github.com/shibatch/sleef/issues/579
      
      This commit changes the detection mechanism. Instead of compiling a
      program that makes use of the intrinsics, we now just check the two
      values, __riscv_v and __riscv_v_intrinsic, to ensure that we have
      version 1.0 of the vector extension and version 0.12 of the
      intrinsics. These should be the stable versions of each.
      
      Note: the "m1" and "m2" checks are now identical because they are both
      covered by the official spec.
      
      Fixes #579
      87e73dc7
  11. Nov 01, 2024
  12. Oct 28, 2024
  13. Oct 24, 2024
    • Pierre Blanchard's avatar
      Update GH runners to Ubuntu 24.04 · 6abb7d92
      Pierre Blanchard authored
      This will ultimately unlock the use of latest versions of
      gcc 12, then gcc 13, and finally gcc 14.
      Gcc 14 will unlock more testing.
      This PR does not update version of gcc yet, just to make sure
      old version still pass tests.
      Remove some expensive tests.
      6abb7d92
  14. Oct 18, 2024
  15. Oct 16, 2024
    • Naoki Shibata's avatar
      This patch fixes two problems (#592) · f95a6c86
      Naoki Shibata authored
      
      
      This patch fixes the following two problems:
      
      * On aarch32, cbrt(4) was returned instead of M_PI/2 when +-INFINITY is given to atanf.
      * Due to a bug in gcc-13, sign of tanf(+-0) was wrong on PUREC_SCALAR and VXE.
      
      This patch also adds testing for the first problem.
      The second problem is detected by the existing tester.
      
      ---------
      
      Co-authored-by: default avatarNaoki Shibata <shibatch.sf.net@gmail.com>
      f95a6c86
  16. Oct 15, 2024
    • Joana Cruz's avatar
      Integrate Google benchmarks into SLEEF · bbdf0e2d
      Joana Cruz authored
      Added new benchmark tool to SLEEF project using googlebench
      framework.
      In theory this tool can benchmark any unary and binary function
      in SLEEF.
      Benchmark is enabled in all functions listed in benchsleef.cpp.
      This list uses macros in benchmark_callers.cpp, so that we can
      enable benchmarking in multiple precisions using single lines
      of code. It is also possible to list the exact function we want,
      as each of the macros in benchmark_callers.cpp can be called
      independently and connected like building blocks.
      The tool is integrated with SLEEF via CMake, meaning it can
      be built automatically when SLEEF is built. To enable that,
      pass CMake argument -DSLEEF_BUILD_BENCH=ON.
      
      This tool depends on C++17 standard.
      Tested on aarch64 for scalar, vector and SVE routines
      Tested on x86 for different vector length extensions.
      Tested for llvm-17, gcc-11 and gcc-14.
      bbdf0e2d
  17. Oct 14, 2024
  18. Oct 10, 2024
  19. Oct 09, 2024
    • Pierre Blanchard's avatar
      Add checks for incompatible changes in GHA · 695e734c
      Pierre Blanchard authored
      Add a new workflow to detect unexpected backward-incompatible
      changes at precommit, by comparing current version against a
      reference version, both generated on Linux with gcc.
      It uses abidiff to compare ELF-format shared libraries.
      This is the tool used by Fedora to report a recent breach in
      API #534. Test should fail until it is fixed by #545.
      695e734c
  20. Oct 04, 2024
    • Pierre Blanchard's avatar
      Use Arm-hosted runners (#581) · 8373ab19
      Pierre Blanchard authored
      Documentation for these runners here https://gitlab.arm.com/tooling/gha-runner-docs
      Note that only SLEEF upstream repo is allowed to use these runners.
      
      Integrate runners via strategy.matrix.os, in order to facilitate customisation
      of step (e.g. config) based on runner label.
      
      Install OpenSSL since tester3 is enforced.
      New runners do not seem to come with openssl or cmake pre-installed.
      
      Use SVE enabled instances (c7g)
      Use 2xlarge instances so tests run slightly faster without compromising on availability.
      
      Remove aarch64 from cross build and tests (on Linux).
      And update documentation/README.
      8373ab19
  21. Oct 02, 2024
Loading