/metalibm

Code generation tool to generate mathematical libraries

Primary LanguagePythonMIT LicenseMIT

Metalibm

Metalibm is available under MIT Licence (see LICENSE file) from https://github.com/metalibm/metalibm/

INTEGRATION STATUS

master branch: pipeline status

meta-function generation report (master branch): https://nibrunie.gitlab.io/metalibm/perfs/report.master.html

DOCUMENTATION

Documentation (for master branch) is available on gitlab's pages: https://nibrunie.gitlab.io/metalibm/doc/index.html

INSTALL

  • Dependencies:

    • metalibm depends on master branch of pythonsollya (python wrapper to Sollya library). this dependency will be install by metalibm's setup script or it can be installed manually install (if sollya is already installed): pip install git+https://gitlab.com/metalibm-dev/pythonsollya beware that sollya master branch is required for pythonsollya master
    • Some features of Metalibm require Gappa (http://gappa.gforge.inria.fr/)
    • Others dependencies are listed in the requirements.txt if you install metalibm from source, run pip install -r requirements.txt
  • Python version compatibility: as of version 1.0, metalibm works with python3 (tested with 3.4).

Quick install from git sources

pip install git+https://github.com/metalibm/metalibm

USAGE

Example of metafunctions can be found under the metalibm_functions/ directory.

  • Example to generate a faithful (default) approximation of the exponential function for single precision on a x86 AVX2 target: python3 metalibm_functions/ml_exp.py --precision binary32 --target x86_avx2 --output x86_avx2_exp_fp32.c

  • Explore the other functions of this directory, e.g. : python3 metalibm_functions/ml_log.py --help

A more comprehensive user documentation can be found in doc/USERGUIDE.md

TEST

  • Unit-testing (software code generation): python3 valid/soft_unit_test.py

  • Unit-testing (hardware code generation): python3 valid/rtl_unit_test.py

  • Non-regression tests (software code generation): python3 valid/non_regression.py

  • Non-regression tests (hardware code generation): python3 valid/hw_non_regression.py

  • Functionnal coverage (generate a report on meta-functions' generation/build/valid status): python3 valid/soft_coverage_test.py --report-only --output report.html

DOCUMENTATION

Version History

  • Version 1.0.alpha: Released March 12th, 2018: First alpha for first official version
  • Version 1.0.beta: Released March 31th, 2018: First beta for first official version

AUTHOR(S)

Nicolas Brunie, Hugues de Lassus Saint-Geniès,
Marc Mezzarobba, Guillaume Gonnachon, Florent de Dinechin, Julien Le Maire,
Julien Villette, Guillaume Revy

This work has been supported by Kalray (kalrayinc.com) and other entities
(to be listed)