Giter Club home page Giter Club logo

convwinograd's Introduction

convWinograd

The convWinograd library is an implementation of the Winograd-based convolution transform.

Compilation and installation

The next commands should be executed to compile and install the convWinograd library:

cd build
cmake [-D BLA_VENDOR=BLA_VENDOR] [-D CMAKE_INSTALL_PREFIX=INSTALL_PREFIX] ..
make                 # Alternatively:  cmake --build . --clean-first
make install         # Alternatively:  cmake --install . (this does not work with cmake older versions)

where BLA_VENDOR is used to force an specific BLAS vendor, as described next, and INSTALL_PREFIX is the prefix PATH where lib/libconvWinograd.so should be installed. This last option is only required if the convWinograd library should be installed on a prefix PATH different of /usr/local.

As for the BLA_VENDOR option, the convWinograd library can use a CBLAS library or a bundled, but suboptimal, implementation of the GEMM operation. To specify the CBLAS vendor to be used, the BLA_VENDOR option can be set to one of:

  • FLAME: BLIS framework.
  • Intel10_64ilp: Intel MKL v10+ 64 bit, threaded code, ilp64 model.
  • None: The provided suboptimal GEMM.

If BLA_VENDOR is not set, all supported BLAS vendors will be tried in the order specified above.

Please note that in order to find a CBLAS library installed locally, with a prefix path different of the one where the convWinograd library is going to be installed, the CBLAS library directory should be added to the LD_LIBRARY_PATH environment variable.

Be aware that a cmake system installation could favor those libraries installed by the distribution package manager, thus ignoring those CBLAS libraries that have been manually installed. If this is the case, i.e., the specified BLA_VENDOR option is ignored, a local version of cmake should be used (it can be installed from https://cmake.org/download/).

Furthermore, if the CBLAS library is found but not its corresponding header (i.e., mkl.h ofcblas.h can not be found), the -D CMAKE_PREFIX_PATH=CBLAS_INCLUDE_PREFIX should be added to the cmake .. command, where CBLAS_INCLUDE_PREFIX is the directory where the required header is located.

For example, if the libconvWinograd should be installed under the ~/opt/hpca_pydtnn prefix using the FLAME framework, and the BLIS library is on the lib directory on the previous prefix, the next commands should be executed:

cd build
cmake -D BLA_VENDOR=FLAME -D CMAKE_INSTALL_PREFIX=~/opt/hpca_pydtnn ..
make                 # Alternatively:  cmake --build . --clean-first
make install         # Alternatively:  cmake --install . (this does not work with cmake older versions)

Running the test

To run the included test, the -D COMPILE_TESTS=ON option must be passed in the configuration step and the run_test_winograd target must be called in the build step. For example:

cd build
cmake -D BLA_VENDOR=FLAME -D CMAKE_INSTALL_PREFIX=~/opt/hpca_pydtnn -D COMPILE_TESTS=ON ..
make run_test_winograd  # Alternatively:  cmake --build . --target=run_test_winograd

convwinograd's People

Contributors

barrachi avatar mdolz avatar

Stargazers

 avatar  avatar

Watchers

 avatar  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.