{"id":32139080,"url":"https://github.com/edf-hpc/verrou","last_synced_at":"2025-10-21T05:18:48.757Z","repository":{"id":37484195,"uuid":"61013099","full_name":"edf-hpc/verrou","owner":"edf-hpc","description":"floating-point errors checker","archived":false,"fork":false,"pushed_at":"2025-07-24T19:46:56.000Z","size":9338,"stargazers_count":58,"open_issues_count":5,"forks_count":15,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-07-25T00:57:22.051Z","etag":null,"topics":["arithmetic","diagnostics","floating-point","valgrind"],"latest_commit_sha":null,"homepage":"https://edf-hpc.github.io/verrou/vr-manual.html","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edf-hpc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-06-13T06:39:06.000Z","updated_at":"2025-07-24T19:47:00.000Z","dependencies_parsed_at":"2023-02-18T09:45:51.915Z","dependency_job_id":"2a0fc759-3b6e-48ed-b918-18ff611b4c5f","html_url":"https://github.com/edf-hpc/verrou","commit_stats":{"total_commits":634,"total_committers":11,"mean_commits":57.63636363636363,"dds":0.5047318611987381,"last_synced_commit":"60be2795b9d0025c3e6f0f88e629189ca35c9c07"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/edf-hpc/verrou","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edf-hpc%2Fverrou","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edf-hpc%2Fverrou/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edf-hpc%2Fverrou/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edf-hpc%2Fverrou/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edf-hpc","download_url":"https://codeload.github.com/edf-hpc/verrou/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edf-hpc%2Fverrou/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280207253,"owners_count":26290620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arithmetic","diagnostics","floating-point","valgrind"],"created_at":"2025-10-21T05:18:43.696Z","updated_at":"2025-10-21T05:18:48.747Z","avatar_url":"https://github.com/edf-hpc.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Verrou\n[![gitHubAction](https://github.com/edf-hpc/verrou/actions/workflows/github-actions-travis.yml/badge.svg)](https://github.com/edf-hpc/verrou/actions/workflows/github-actions-travis.yml)\n[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](http://edf-hpc.github.io/verrou/vr-manual.html)\n\nVerrou helps you look for floating-point round-off errors in programs. It\nimplements various forms of arithmetic, including:\n\n- all IEEE-754 standard rounding modes;\n\n- three variants of stochastic floating-point arithmetic based on random rounding:\n  all floating-point operations are perturbed by randomly switching rounding\n  modes. These can be seen as an asynchronous variant of the CESTAC method, or a\n  subset of Monte Carlo Arithmetic, performing only output randomization through\n  random rounding;\n\n- an emulation of single-precision rounding, in order to test the effect of\n  reduced precision without any need to change the source code.\n\nVerrou also comes with the `verrou_dd_*` tools, which simplify the Verrou-based\ndebugging process by implementing several variants of the Delta-Debugging\nalgorithm. This allows easily locating which parts of the analyzed source code\nare likely to be responsible for Floating-Point-related instabilities.\n\nThe documentation of the latest stable release is available as a dedicated [chapter in the\nValgrind manual](http://edf-hpc.github.io/verrou/vr-manual.html). For master version,\ndocumentation generation is required (see below).\n\nDocumentation and support can also be found in the [verrou_support repository](https://github.com/edf-hpc/verrou_support).\n\n## Installation\n\n### Get the sources\n\nThe preferred way to get Verrou sources is to download the latest *stable*\nversion: [v2.6.0](https://github.com/edf-hpc/verrou/releases/latest).\nOlder versions are available in the [releases](https://github.com/edf-hpc/verrou/releases)\npage. After downloading one of the released versions, skip to the \"Configure\nand build\" section below.\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\nIn order to build the *development* version of Verrou, it is necessary to first\ndownload a specific Valgrind version, and patch it. Fetch valgrind's sources:\n\n    git clone --branch=VALGRIND_3_25_0 --single-branch https://sourceware.org/git/valgrind.git valgrind-3.25.0+verrou-dev\n\n\nAdd verrou's sources to it:\n\n    cd valgrind-3.25.0+verrou-dev\n    git clone https://github.com/edf-hpc/verrou.git verrou\n\n    cat verrou/valgrind.*diff | patch -p1\n\n\n### Configure and build\n\nFirst, install all required dependencies (the names of relevant Debian packages\nare put in parentheses as examples):\n\n- C \u0026 C++ compilers (`build-essential`),\n- autoconf \u0026 automake (`automake`),\n- Python 3 (`python3`),\n- C standard library with debugging symbols (`libc6-dbg`),\n- [Optional] Python post-treatment tools (`python3-numpy`, `python3-matplotlib`, `texlive-latex-extra`, `texlive-fonts-recommended`, `dvipng`, `cm-super`).\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\nConfigure valgrind:\n\n    ./autogen.sh\n    ./configure --enable-only64bit --prefix=PREFIX\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\nAdvanced users can use the following configure flags :\n- `--enable-verrou-fma=yes|no (default yes)`. This option is useful if your system does not support fma intrinsics.\n- `--enable-verrou-sqrt=yes|no (default yes)`. This option is useful if your system does not support sqrt intrinsics.\n- `--enable-verrou-check-naninf=yes|no` (default yes). If NaN does not appear in the verified code set this option to 'no' can slightly speed up verrou.\n- `--with-det-hash=hash_name` with hash_name in [dietzfelbinger,multiply_shift,double_tabulation,xxhash,mersenne_twister] to select the hash function used for [random|average]_[det|comdet] rounding mode. The default is xxhash. double_tabulation was the previous default(before introduction of xxhash). mersenne_twister is the reference but slow. dietzfelbinger and multiply_shift are faster but are not able to reproduce the reference results.\n- `--with-verrou-denorm-hack=[none|float|double|all]` (default float). With denormal number the EFT are no more necessary exact. With the average* rounding modes this problem is always ignored, but the random* rounding, there are the following available options :  with  `none` the problem is ignored. With `float` a hack based on computation in double is applied on float operations ; With `double` an experimental hack is applied for double operations ; With `all` the float and double hacks are applied. float is selected by default.\n- `--enable-verrou-xoshiro=[no|yes]` (default yes). If set to yes the tiny mersenne twister prng is replaced (for random, prandom and average) by the xo[ro]shiro prng.\n- `--enable-verrou-quad=[yes|no]` (default yes). If set to no the backend mcaquad is disabled. This option is only useful to reduce the dependencies.\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\nBuild and install:\n\n    make\n    make install\n\n\n### Load the environment\n\nIn order to actually use Verrou, you must load the correct environment. This can\nbe done using:\n\n    source PREFIX/env.sh\n\n\n### Test (optional)\n\n#### General tests\n\nYou can test the whole platform:\n\n    make check\n    perl tests/vg_regtest --all\n    \nor only verrou:\n\n    make -C tests check\n    make -C verrou check\n    perl tests/vg_regtest verrou\n    \n    \n#### Specific tests\n\nThese tests are more closely related to the arithmetic part in Verrou:\n\n    make -C verrou/unitTest\n\n\n## Documentation\n\nThe documentation for verrou is available as a\n[chapter in valgrind's manual](//edf-hpc.github.io/verrou/vr-manual.html).\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\nYou can also re-build it:\n\n    make -C docs html-docs man-pages\n\nand browse it locally:\n\n    firefox docs/html/vr-manual.html\n\n\nBeware, this requires lots of tools which are not necessarily tested for in\n`configure`, including (but not necessarily limited to):\n\n  - xsltproc\n  - docbook-xsl\n\n\n## Bibliography \u0026 References\n\nThe following papers explain in more details the internals of Verrou, as well as\nsome of its applications. If you use Verrou for a research work, please consider\nciting one of these references:\n\n1. François Févotte and Bruno Lathuilière. Debugging and optimization of HPC\n   programs with the Verrou tool. In *International Workshop on Software\n   Correctness for HPC Applications (Correctness)*, Denver, CO, USA,\n   Nov. 2019. [DOI: 10.1109/Correctness49594.2019.00006](http://dx.doi.org/10.1109/Correctness49594.2019.00006)\n1. Hadrien Grasland, François Févotte, Bruno Lathuilière, and David\n   Chamont. Floating-point profiling of ACTS using Verrou. *EPJ Web Conf.*, 214, 2019.\n   [DOI: 10.1051/epjconf/201921405025](http://dx.doi.org/10.1051/epjconf/201921405025)\n1. François Févotte and Bruno Lathuilière. Studying the numerical quality of an\n   industrial computing code: A case study on code_aster. In *10th International\n   Workshop on Numerical Software Verification (NSV)*, pages 61--80, Heidelberg,\n   Germany,\n   July 2017. [DOI: 10.1007/978-3-319-63501-9_5](http://dx.doi.org/10.1007/978-3-319-63501-9_5)\n1. François Févotte and Bruno Lathuilière. VERROU: a CESTAC evaluation without\n   recompilation. In *International Symposium on Scientific Computing, Computer\n   Arithmetics and Verified Numerics (SCAN)*, Uppsala, Sweden, September 2016.\n\n(These references are also available in [bibtex format](verrou.bib))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedf-hpc%2Fverrou","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedf-hpc%2Fverrou","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedf-hpc%2Fverrou/lists"}