Giter Site home page Giter Site logo

metalibm's Introduction

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.main.html

DOCUMENTATION

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

INSTALL

Metalibm is a framework written in Python.

Python version compatibility: as of version 1.0, metalibm works with python3 (tested with 3.8).

  • Whatever the install you select, sollya (binary and headers) must be installed on your machine first. On a recent version of ubuntu/debian you can install sollya binary and headers by executing: sudo apt install sollya libsollya-dev
  • Some features of Metalibm require Gappa (http://gappa.gforge.inria.fr/) (gappa install is recommended)

Quick Install (without intent to modify metalibm sources)

Quick install from git sources (assuming sollya binary and header are installed):

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

Install for Development

For development purpose, this repo should be cloned, and metalibm dependencies installed manually. Once sollya and gappa have been installed, you can install metalibm's python depdendies by running

pip install -r requirements.txt

USAGE

Before running metalibm, you will need to add its top directory to your PYTHONPATH env var:

export PYTHONPATH=<path to metalibm/metalibm_core>:$PYTHONPATH

You will also need to set the ML_SRC_DIR env var to point to metalibm support library:

export ML_SRC_DIR=<path to metalibm/>

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, Guillaume Melquiond

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

metalibm's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.