Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using XTENSOR_USE_TBB with xtensor-blas fails compilation #118

Open
fakufaku opened this issue May 3, 2019 · 2 comments
Open

Using XTENSOR_USE_TBB with xtensor-blas fails compilation #118

fakufaku opened this issue May 3, 2019 · 2 comments

Comments

@fakufaku
Copy link

fakufaku commented May 3, 2019

Hi, I am trying to use both xtensor-blas and TBB acceleration at the same time. However, the compilation fails.

I am using the following CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(test_blas)

# Try to use only anaconda provided stuff
set(CMAKE_PREFIX_PATH /Users/scheibler/anaconda3/envs/mixiva ${CMAKE_PREFIX_PATH})

find_package(xtl REQUIRED)
find_package(xtensor REQUIRED)

add_executable(test_blas src/test_blas.cpp)

OPTION(XTENSOR_USE_XSIMD "simd acceleration for xtensor" ON)
OPTION(XTENSOR_USE_TBB "enable parallelization using intel TBB" ON)

if(XTENSOR_USE_XSIMD)
    set(xsimd_REQUIRED_VERSION 7.0.0)
    find_package(xsimd ${xsimd_REQUIRED_VERSION} REQUIRED)
    message(STATUS "Found xsimd: ${xsimd_INCLUDE_DIRS}/xsimd")
endif()

if(XTENSOR_USE_TBB)
    set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
    find_package(TBB REQUIRED)
    message(STATUS "Found intel TBB: ${TBB_INCLUDE_DIRS}")
endif()

if(MSVC)
    target_compile_options(test_blas PRIVATE /EHsc /MP /bigobj)
    set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO)
endif()

if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR
    CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
    (CMAKE_CXX_COMPILER_ID MATCHES "Intel" AND NOT WIN32))
    target_compile_options(test_blas PRIVATE -march=native -std=c++14)
endif()

add_definitions(-DHAVE_CBLAS=1)
add_definitions(-DXTENSOR_USE_TBB)
add_definitions(-DXTENSOR_USE_SIMD)

# set(BLA_VENDOR Intel10_64lp)

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(test_blas xtensor ${BLAS_LIBRARIES} tbb)

And the code is

#include <iostream>
#include <xtensor/xtensor.hpp>
#include <xtensor/xrandom.hpp>
#include <xtensor-blas/xlinalg.hpp>

int main()
{
  xt::xtensor<double, 2, xt::layout_type::row_major> x = xt::random::randn<double>({1000, 1000});
  xt::xtensor<double, 2, xt::layout_type::row_major> y = xt::random::randn<double>({1000, 1000});
  auto y_T = xt::transpose(y);

  xt::xtensor<double, 2> z = xt::linalg::dot(x, y_T);

  for (size_t i ; i < 10 ; i++)
    z = xt::linalg::dot(x, y_T);
  std::cout << z(0, 0) << std::endl;
}

The output of compilation is this.

make test_blas
Scanning dependencies of target test_blas
[ 50%] Building CXX object CMakeFiles/test_blas.dir/src/test_blas.cpp.o
In file included from /Users/scheibler/Documents/Research/Projects/Current/Separation/mixiva/test_xtensor/src/test_blas.cpp:5:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xtensor-blas/xlinalg.hpp:29:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xtensor-blas/xlapack.hpp:23:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/cxxlapack.cxx:37:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/cxxlapack.tcc:36:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/interface/interface.tcc:36:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/interface/bbcsd.tcc:39:
In file included from /Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/netlib.h:25:
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:973:39: error:
      expected ')'
                    const FLOAT      *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:968:20: note:
      to match this '('
LAPACK_IMPL(cggbak)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:990:39: error:
      expected ')'
                    FLOAT            *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:982:20: note:
      to match this '('
LAPACK_IMPL(cggbal)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:1087:39: error:
      expected ')'
                    FLOAT            *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:1070:20: note:
      to match this '('
LAPACK_IMPL(cggevx)(const char       *BALANC,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:6787:39: error:
      expected ')'
                    const DOUBLE     *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:6782:20: note:
      to match this '('
LAPACK_IMPL(dggbak)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:6804:39: error:
      expected ')'
                    DOUBLE           *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:6796:20: note:
      to match this '('
LAPACK_IMPL(dggbal)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:6902:39: error:
      expected ')'
                    DOUBLE           *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:6884:20: note:
      to match this '('
LAPACK_IMPL(dggevx)(const char       *BALANC,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:13109:39: error:
      expected ')'
                    const FLOAT      *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:13104:20: note:
      to match this '('
LAPACK_IMPL(sggbak)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:13126:39: error:
      expected ')'
                    FLOAT            *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:13118:20: note:
      to match this '('
LAPACK_IMPL(sggbal)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:13224:39: error:
      expected ')'
                    FLOAT            *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:13206:20: note:
      to match this '('
LAPACK_IMPL(sggevx)(const char       *BALANC,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:19244:39: error:
      expected ')'
                    const DOUBLE     *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:19239:20: note:
      to match this '('
LAPACK_IMPL(zggbak)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:19261:39: error:
      expected ')'
                    DOUBLE           *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:19253:20: note:
      to match this '('
LAPACK_IMPL(zggbal)(const char       *JOB,
                   ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:19358:39: error:
      expected ')'
                    DOUBLE           *LSCALE,
                                      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/sysctl.h:542:17: note:
      expanded from macro 'LSCALE'
#define LSCALE  1000            /* scaling for "fixed point" arithmetic */
                ^
/Users/scheibler/anaconda3/envs/mixiva/include/xflens/cxxlapack/netlib/interface/lapack.in.h:19341:20: note:
      to match this '('
LAPACK_IMPL(zggevx)(const char       *BALANC,
                   ^
12 errors generated.
make[3]: *** [CMakeFiles/test_blas.dir/src/test_blas.cpp.o] Error 1
make[2]: *** [CMakeFiles/test_blas.dir/all] Error 2
make[1]: *** [CMakeFiles/test_blas.dir/rule] Error 2
make: *** [test_blas] Error 2

The code is compiled on Mac OS X Mojave (10.14.4) with Apple LLVM

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

When I add #undef XTENSOR_USE_TBB at the beginning of the code, it compiles and runs as expected.

@iminders
Copy link

iminders commented Nov 22, 2023

The same issue + 1

Add #undef XTENSOR_USE_TBB not work for me.

@brccabral
Copy link

Same issue described here xtensor-stack/xtensor#2736

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants