Skip to content

metalibm/metalibm-clone

Repository files navigation

Metalibm

Metalibm is available under MIT Licence (see LICENSE file) from https://github.com/kalray/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 Pythonsollya (python wrapper to Sollya library). easy install (if sollya is already installed): pip install git+https://gitlab.com/metalibm-dev/pythonsollya or Pythonsollya can be downloaded from 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/)
  • Python version compatibility: as of version 1.0, metalibm works with python3 (tested with 3.4). A legacy support for python2 (>= 2.7) is maintained but will be dropped soon.

  • Installation procedure for standard users

    • install pythonsollya (and optionally gappa)
    • make sure pythonsollya is available in your PYTHONPATH
    • make sure metalibm's top directory is in your PYTHONPATH

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_exp2d.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 (nbrunie (AT) kalray.eu), 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)