Giter VIP home page Giter VIP logo

openblas-src's Introduction

openblas-src Package Documentation Build

The package provides a source of BLAS and LAPACK via OpenBLAS.

Configuration

The following Cargo features are supported:

  • cache to build in a shared directory instead of target (see below),
  • cblas to build CBLAS (enabled by default),
  • lapacke to build LAPACKE (enabled by default),
  • static to link to OpenBLAS statically, and
  • system to skip building the bundled OpenBLAS.

Caching

The cache feature allows the OpenBLAS build products to be reused between crates that have different target directories. This avoids rebuilding OpenBLAS unnecessarily. However, this also prevents cargo clean from working properly, since the aforementioned build products will not be removed by the command.

The OpenBLAS binary will be placed at ${XDG_DATA_HOME}/openblas_build/[hash of build configure object]. For example, build with LAPACK and build without LAPACK will be placed on different directories. If you build OpenBLAS as a shared library, you need to add the above directory to LD_LIBRARY_PATH (for Linux) or DYLD_LIBRARY_PATH (for macOS). Since build from source is not supported on Windows (see next section), this feature is also not supported.

Windows and vcpkg

On Windows, openblas-src relies on vcpkg to find OpenBLAS. Before building, you must have the correct OpenBLAS installed for your target triplet and kind of linking. For instance, to link dynamically for the x86_64-pc-windows-msvc toolchain, install openblas for the x64-windows triplet:

vcpkg install openblas --triplet x64-windows

To link OpenBLAS statically, install openblas for the x64-windows-static-md triplet:

vcpkg install openblas --triplet x64-windows-static-md

To link OpenBLAS and C Runtime (CRT) statically, install openblas for the x64-windows-static triplet:

vcpkg install openblas --triplet x64-windows-static

and build with +crt-static option

RUSTFLAGS='-C target-feature=+crt-static' cargo build --target x86_64-pc-windows-msvc

Please see the "Static and dynamic C runtimes" in The Rust reference for detail.

Cross Compilation

Apart from providing the --target option to cargo build, one also has to specify the cross-compilation variables of OpenBLAS. They can be set as environment variables for cargo build using the OPENBLAS_ prefix as follows: OPENBLAS_CC, OPENBLAS_FC, OPENBLAS_HOSTCC, and OPENBLAS_TARGET.

Contribution

Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.md.

openblas-src's People

Contributors

termoshtt avatar ivanukhov avatar ethanhs avatar emberian avatar jturner314 avatar mike-kfed avatar maoe avatar lazareviczoran avatar alexbool avatar danburkert avatar braincore avatar maparent avatar ntucker avatar nemosupremo avatar superfluffy avatar scharris avatar bluss avatar

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.