ROOT compilation fails at target Imt (by making function call that is not there in libtbb)


Please read tips for efficient and successful posting and posting code
Hi, I am trying to install ROOT 6.20.00 behind proxy. So in order to build ‘imt’ features, I installed tbb and its headers system wide and then configured cmake build with tbb paths like

cmake -Dcxx14=ON -Dbuiltin_tbb=OFF -DTBB_LIBRARY=/usr/lib/x86_64-linux-gnu/libtbb.so -DTBB_INCLUDE_DIR=/usr/include/tbb/ -Dvdt=OFF -DCMAKE_INSTALL_PREFIX=/home/sagar/Software/ROOT/root-6.20.00/INSTALLATION/ /home/sagar/Software/ROOT/root-6.20.00/

Now the compilation fails at 70% with error

Scanning dependencies of target Imt
[ 79%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/base.cxx.o
[ 79%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TTaskGroup.cxx.o
[ 79%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TImplicitMT.cxx.o
[ 79%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TPoolManager.cxx.o
[ 79%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TThreadExecutor.cxx.o
/home/sagar/Software/ROOT/root-6.20.00/core/imt/src/TThreadExecutor.cxx: In function ‘T ROOT::Internal::ParallelReduceHelper(const std::vector<T>&, const std::function<T(T, T)>&)’:
/home/sagar/Software/ROOT/root-6.20.00/core/imt/src/TThreadExecutor.cxx:122:33: error: ‘isolate’ is not a member of ‘tbb::this_task_arena’
    return tbb::this_task_arena::isolate([&]{
                                 ^~~~~~~
/home/sagar/Software/ROOT/root-6.20.00/core/imt/src/TThreadExecutor.cxx: In member function ‘void ROOT::TThreadExecutor::ParallelFor(unsigned int, unsigned int, unsigned int, const std::function<void(unsigned int)>&)’:
/home/sagar/Software/ROOT/root-6.20.00/core/imt/src/TThreadExecutor.cxx:149:29: error: ‘isolate’ is not a member of ‘tbb::this_task_arena’
       tbb::this_task_arena::isolate([&]{
                             ^~~~~~~
core/imt/CMakeFiles/Imt.dir/build.make:158: recipe for target 'core/imt/CMakeFiles/Imt.dir/src/TThreadExecutor.cxx.o' failed
make[2]: *** [core/imt/CMakeFiles/Imt.dir/src/TThreadExecutor.cxx.o] Error 1
CMakeFiles/Makefile2:18784: recipe for target 'core/imt/CMakeFiles/Imt.dir/all' failed
make[1]: *** [core/imt/CMakeFiles/Imt.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Whats the problem. My libtbb version is 2.0 (from one of the header files in tbb-dev)
ROOT Version: 6.20.00
Platform: mint 19.2 x86_64
Compiler: gcc 7.5.0


Hi,
that’s because of a version mismatch between TBB and ROOT. TBB introduces backward-incompatible changes fairly frequently, so not all TBB versions work with all ROOT versions.

ROOT’s master branch should be upgraded to be compatible with latest TBB.

Otherwise you can use the same TBB version as ROOT 6.20 does, available e.g. at http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/sources/tbb-2019_U9.tar.gz (as it can be seen from https://github.com/root-project/root/blob/v6-20-00-patches/cmake/modules/SearchInstalledSoftware.cmake#L1180 ).

Cheers,
Enrico

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.