Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interflop #13

Merged
merged 57 commits into from
Apr 26, 2024
Merged

Interflop #13

merged 57 commits into from
Apr 26, 2024

Conversation

yohanchatelain
Copy link

No description provided.

    - Move GCC 6.0 -> 7.0 since gcc-6.0 produces
      a segfault during the compilation
    - Add dependencies for glibc 2.28 since
      the <threads.h> is missing in glibc 2.27
      See https://www.gnu.org/software/gnulib/manual/html_node/threads_002eh.html
    - Add support for llvm 16 and 17
    - Fix Python packages installation with
    >= python3.11
license compatibility reasons.
  - Now interflop_fma uses builtin fma implementation
    - Add a new function to log debug messages
    - Add VFC_BACKENDS_LOGGER_LEVEL environment
    variable to control the verbosity of the logger
    - Now implement round-to-nearest, ties-to-even
      TODO: fix corner case when both closest
      values are equidistant.
    - Pass `test.sh full` in test_vprec_backend
    - Now uses C implementation test against MPFR
      instead of relying on Bigfloat Python package
    - Add `retest.sh` to retest failed tests
      ex: ./retest.sh log.error
Mark this test as expected to fail (exit 88)
static mode fails with
* libinterflop_ieee.so
  due to libquadmath not being handled correctly, it
  fails with glibc 2.31 and works with glibc 2.35 and above
* libinterflop_mca.so (any backends using RNG)
  due to issues with the TLS and static libraries
  (see https://www.akkadia.org/drepper/tls.pdf sec 3.1)
    - pointer to float values could be read while
      being null. Add a check to avoid this.
    - Unify Ftypes with the ones in interflop.h
    - Code refactoring
    - llvm-17 and >= required to rewrite the
      LLVM passes using the new pass manager.
@yohanchatelain yohanchatelain merged commit eaceafc into interflop:master Apr 26, 2024
12 checks passed
yohanchatelain added a commit that referenced this pull request May 10, 2024
* Update dependencies requirements
    - Move GCC 6.0 -> 7.0 since gcc-6.0 produces a segfault during the
    compilation
    - Add dependencies for glibc 2.28 since the <threads.h> is missing
    in glibc 2.27
    See https://www.gnu.org/software/gnulib/manual/html_node/threads_002eh.html

* Set llvm-16 as the latest version supported
    - llvm-17 and >= required to rewrite the LLVM passes using the new
    pass manager.
    - Fix Python packages installation with >= python3.11

* Remove prng and Verrou dependencies from fma for license compatibility reasons.
  - Now interflop_fma uses builtin fma implementation

* Update logger:
    - Add a new function to log debug messages
    - Add VFC_BACKENDS_LOGGER_LEVEL environment variable to control the
    verbosity of the logger

* Update the tests:
    - Add skipable tests, marked with # SKIP test_cython and FORTRAN tests
    - Add time profiling to the tests, enabled with PROFILE_TIME env
    variable
    - Clean tests
    - Add test for FMA instrumentation
    * Mark test_static as XFAIL:
       Mark this test as expected to fail (exit 88) static mode fails with
       - libinterflop_ieee.so due to libquadmath not being handled
       correctly, it fails with glibc 2.31 and works with glibc 2.35 and
        above
       - libinterflop_mca.so (any backends using RNG) due to issues with
        the TLS and static libraries
        (see https://www.akkadia.org/drepper/tls.pdf sec 3.1)

* Fix issues with vprec backend:
    - Now implement round-to-nearest ties-to-even for the rounding of
      a single floating-point value. However, the result of an arithmetic
      operation is always subject to a double rounding error, which is why
      VPREC provides a result with a faithful rounding.
      # TODO: fix corner case when both closest values are equidistant.
    - Pass `test.sh full` in test_vprec_backend
    - Now uses C implementation test against MPFR instead of relying on
      Bigfloat Python package
    - Add `retest.sh` to retest failed tests
      ex: ./retest.sh log.error
   * Fix bug in interflop_vprec_function_instrumentation.c
      - pointer to float values could be read while being null.
      Add a check to avoid this.
      - Unify Ftypes with the ones in interflop.h
      - Code refactoring

* Update documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant