.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. .. _perf-and-link: Performance and Linking ======================= For optimal performance, the target program **has** to be linked against a `BLAS `_ implementation. The BLAS implementation that we install by default with conda is ``OpenBLAS``, but other options, such as ``MKL`` are available on conda, too. If xtensor-blas was not installed from conda, the user has to manually verify that a BLAS and `LAPACK `_ implementation is available. If you want to fallback to a slower, more generic BLAS implementation, you can use the compile time define ``-DXTENSOR_USE_FLENS_BLAS``. In order to link against ``OpenBLAS`` from CMake, the following lines have to be added to the ``CMakeLists.txt`` file. .. code:: cmake add_definitions(-DHAVE_CBLAS=1) if (WIN32) find_package(OpenBLAS REQUIRED) set(BLAS_LIBRARIES ${CMAKE_INSTALL_PREFIX}${OpenBLAS_LIBRARIES}) else() find_package(BLAS REQUIRED) find_package(LAPACK REQUIRED) endif() message(STATUS "BLAS VENDOR: " ${BLA_VENDOR}) message(STATUS "BLAS LIBRARIES: " ${BLAS_LIBRARIES}) target_link_libraries(your_target_name ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}) If CMake is not used, the flags can be passed manually to e.g. ``g++``: .. code:: bash g++ test.cpp -o test -lblas -llapack -DHAVE_CBLAS=1