forked from verificarlo/verificarlo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* 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 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
- Loading branch information
1 parent
4880559
commit eaceafc
Showing
125 changed files
with
2,645 additions
and
77,140 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,12 +3,14 @@ | |
# This image includes support for Fortran and uses llvm-7 and gcc-7 | ||
# | ||
|
||
FROM ubuntu:20.04 | ||
ARG UBUNTU_VERSION=ubuntu:20.04 | ||
FROM ${UBUNTU_VERSION} | ||
LABEL maintainer="verificarlo contributors <[email protected]>" | ||
|
||
ARG PYTHON_VERSION=3.8 | ||
ARG LLVM_VERSION=7 | ||
ARG GCC_VERSION=7 | ||
ARG WITH_FLANG=flang | ||
ARG GCC_PATH=/usr/lib/gcc/x86_64-linux-gnu/${GCC_VERSION} | ||
ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH | ||
ENV PATH /usr/local/bin:$PATH | ||
|
@@ -20,8 +22,9 @@ RUN apt-get -y install --no-install-recommends \ | |
bash ca-certificates make git libmpfr-dev \ | ||
autogen dh-autoreconf autoconf automake autotools-dev libedit-dev libtool libz-dev binutils \ | ||
clang-${LLVM_VERSION} llvm-${LLVM_VERSION} llvm-${LLVM_VERSION}-dev \ | ||
libomp5-${LLVM_VERSION} libomp-${LLVM_VERSION}-dev \ | ||
gcc-${GCC_VERSION} g++-${GCC_VERSION} \ | ||
gfortran-${GCC_VERSION} libgfortran-${GCC_VERSION}-dev flang \ | ||
gfortran-${GCC_VERSION} libgfortran-${GCC_VERSION}-dev ${WITH_FLANG} \ | ||
python3 python3-pip python3-dev cython3 parallel && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
|
@@ -30,7 +33,7 @@ WORKDIR /build/ | |
ENV LIBRARY_PATH ${GCC_PATH}:$LIBRARY_PATH | ||
|
||
# Install other Python dependencies (not available with apt-get) via pip | ||
RUN ln -s /usr/bin/x86_64-linux-gnu-gcc-7 /usr/bin/x86_64-linux-gnu-gcc | ||
RUN ln -s /usr/bin/x86_64-linux-gnu-gcc-${GCC_VERSION} /usr/bin/x86_64-linux-gnu-gcc | ||
|
||
# Download and configure verificarlo from git master | ||
ENV AR=gcc-ar-${GCC_VERSION} | ||
|
@@ -40,12 +43,16 @@ ENV CXX=g++-${GCC_VERSION} | |
COPY . /build/verificarlo/ | ||
WORKDIR /build/verificarlo | ||
|
||
RUN ./install-interflop.sh && \ | ||
|
||
RUN if [ "$WITH_FLANG" = "flang" ]; then \ | ||
export FLANG_OPTION="--with-flang"; \ | ||
else \ | ||
export FLANG_OPTION="--without-flang"; \ | ||
fi && \ | ||
./autogen.sh && \ | ||
./configure \ | ||
--with-llvm=$(llvm-config-${LLVM_VERSION} --prefix) \ | ||
--with-flang CC=gcc-${GCC_VERSION} CXX=g++-${GCC_VERSION} \ | ||
|| cat config.log | ||
$FLANG_OPTION || { cat config.log; exit 1; } | ||
|
||
# Build verificarlo | ||
RUN make && make install | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# | ||
# Dockerfile for Verificarlo (github.com/verificarlo/verificarlo) | ||
# This image includes support for Fortran and uses llvm-7 and gcc-7 | ||
# | ||
|
||
ARG UBUNTU_VERSION=ubuntu:24.04 | ||
FROM ${UBUNTU_VERSION} | ||
LABEL maintainer="verificarlo contributors <[email protected]>" | ||
|
||
ARG PYTHON_VERSION=3.12 | ||
ARG LLVM_VERSION=14 | ||
ARG GCC_VERSION=9 | ||
ARG WITH_FLANG=flang | ||
ARG GCC_PATH=/usr/lib/gcc/x86_64-linux-gnu/${GCC_VERSION} | ||
ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH | ||
ENV PATH /usr/local/bin:$PATH | ||
ENV PYTHONPATH /usr/local/lib/python${PYTHON_VERSION}/site-packages/:${PYTHONPATH} | ||
|
||
# Retrieve dependencies | ||
RUN apt-get -y update && apt-get -y --no-install-recommends install tzdata | ||
RUN apt-get -y install --no-install-recommends \ | ||
bash ca-certificates make git libmpfr-dev \ | ||
autogen dh-autoreconf autoconf automake autotools-dev libedit-dev libtool libz-dev binutils \ | ||
libstdc++-14-dev libomp-${LLVM_VERSION}-dev libclang-rt-${LLVM_VERSION}-dev \ | ||
clang-${LLVM_VERSION} llvm-${LLVM_VERSION} llvm-${LLVM_VERSION}-dev \ | ||
gcc-${GCC_VERSION} g++-${GCC_VERSION} \ | ||
gfortran-${GCC_VERSION} libgfortran-${GCC_VERSION}-dev ${WITH_FLANG} \ | ||
python3 python3-pip python3-dev cython3 parallel && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
WORKDIR /build/ | ||
|
||
ENV LIBRARY_PATH ${GCC_PATH}:$LIBRARY_PATH | ||
|
||
# Install other Python dependencies (not available with apt-get) via pip | ||
RUN ln -s /usr/bin/x86_64-linux-gnu-gcc-${GCC_VERSION} /usr/bin/x86_64-linux-gnu-gcc | ||
|
||
# Download and configure verificarlo from git master | ||
ENV AR=gcc-ar-${GCC_VERSION} | ||
ENV RANLIB=gcc-ranlib-${GCC_VERSION} | ||
ENV CC=gcc-${GCC_VERSION} | ||
ENV CXX=g++-${GCC_VERSION} | ||
COPY . /build/verificarlo/ | ||
WORKDIR /build/verificarlo | ||
|
||
|
||
RUN if [ "$WITH_FLANG" = "flang" ]; then \ | ||
export FLANG_OPTION="--with-flang"; \ | ||
else \ | ||
export FLANG_OPTION="--without-flang"; \ | ||
fi && \ | ||
./autogen.sh && \ | ||
./configure \ | ||
--with-llvm=$(llvm-config-${LLVM_VERSION} --prefix) \ | ||
$FLANG_OPTION || { cat config.log; exit 1; } | ||
|
||
# Build verificarlo | ||
RUN make && make install | ||
|
||
# Setup working directory | ||
VOLUME /workdir | ||
WORKDIR /workdir |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.