1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
.. 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 <https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms>`_
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 <https://en.wikipedia.org/wiki/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
|