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.
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++
:
g++ test.cpp -o test -lblas -llapack -DHAVE_CBLAS=1