ROOT compilation error with TStorage

Hello ROOT Team,
Greetings.
I am facing some issues with ROOT (latest-stable) in Ubuntu-20.04.

Configuration using cmake issues warning for SetROOTVersion showing GIT_DESCRIBE_ALL is set with unexpected formats ‘heads/latest-stable’.

Configure shows “Using Cuda+CuDNN for TMVA Deep Learning on GPU” while after Generate, warning shows Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURE now detected for NVCC, empty CUDA_ARCHITECTURE is not allowed. Since generate did not produce any error, cmake procedure was complete. Then during “make” step, after completion of 89%, TStorage.h shows error as “parameter packs not expanded with …'” during TMVA compilation.

There is also another error for RooFitHS3 " Error in <UnknownClass: ReadCitInfo()>: Cannot determine git info: etc/gitinfo.txt not found"

I tried also to run spack install ROOT which ‘spack.pkg.builtin.ROOT’ not found. Use ‘spack create’ to create a new package. However, there comes the issue to configure for CUDA, TMVA etc.

The system is Ubuntu20.04 having 6.5.0-7 kernel with Nvidia GeForce GPU driver 525.147.05, CUDA 12.0 Please advice how to proceed.

Best,
Abhijit

Hi Abhijit,

I am sorry you are experiencing issues. It’s not clear to me what is your cmake configuration and the first error that blocks the compilation.
Could you please share both informations?

Best,
D

Thanks Danilo.

After ccmake ../ I see the configurations below.

ROOT Configuration

System Linux-6.5.0-27-generic
Processor 2 core Intel(R) Core™ i5-7200U CPU @ 2.50GHz (x86_64)
Build type RelWithDebInfo
Install path /usr/local/ROOT
Compiler GNU 11.4.0
Compiler flags:
C -Wno-implicit-fallthrough -pipe -Wall -W -pthread -O2 -g -DNDEBUG
C++ -std=c++17 -Wno-implicit-fallthrough -Wno-noexcept-type -pipe -Wshadow -Wall -W -Woverloaded-virtual -fsigned-char -pthread -O2 -g -DNDEBUG
Linker flags:
Executable -rdynamic
Module
Shared -Wl,–no-undefined -Wl,–hash-style=“both”

Enabled support for: asimage builtin_afterimage builtin_clang builtin_cling builtin_cppzmq builtin_fftw3 builtin_freetype builtin_ftgl builtin_gl2ps builtin_glew builtin_gsl builtin_llvm
builtin_lz4 builtin_nlohmannjson builtin_openssl builtin_openui5 builtin_tbb builtin_unuran builtin_xxhash builtin_zeromq ccache clad cuda cudnn dataframe test_distrdf_pyspark test_distrdf_dask
fftw3 fitsio fortran gdml gviz http imt mathmore mlp mpi mysql opengl proof pyroot pythia8 roofit webgui root7 rpath runtime_cxxmodules shared sqlite ssl tmva tmva-cpu tmva-gpu tmva-pymva
spectrum unuran vc vdt veccore vecgeom x11 xml
Configuring done

After generating I see the following messages:

CMake Warning (dev) in tmva/tmva/CMakeLists.txt:
   Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
   empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
   for policy details.  Use the cmake_policy command to set the policy and
   suppress this warning.

   CUDA_ARCHITECTURES is empty for target "TMVA".
 This warning is for project developers.  Use -Wno-dev to suppress it.
 CMake Warning (dev) in roofit/batchcompute/CMakeLists.txt:
   Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
   empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
   for policy details.  Use the cmake_policy command to set the policy and
   suppress this warning.

   CUDA_ARCHITECTURES is empty for target "RooBatchCompute_CUDA".
 This warning is for project developers.  Use -Wno-dev to suppress it.
 CMake Warning (dev) in roofit/batchcompute/CMakeLists.txt:
   Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
   empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
   for policy details.  Use the cmake_policy command to set the policy and
   suppress this warning.

   CUDA_ARCHITECTURES is empty for target "RooBatchCompute_CUDA".
 This warning is for project developers.  Use -Wno-dev to suppress it.
 CMake Warning (dev) in roofit/roofitcuda/CMakeLists.txt:
   Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
   empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
   for policy details.  Use the cmake_policy command to set the policy and
   suppress this warning.

   CUDA_ARCHITECTURES is empty for target "RooFitCuda".
   This warning is for project developers.  Use -Wno-dev to suppress it.
   Generating done

I tried adding cmake_policy(SET CMP0104 OLD) in the CMakeLists.txt after line #31 so that warning is taken cared instead of suppressing the warning meassage. It did not help.

Then I run make instead of make -jN so that any error can be seen immediately.
During the make process I find errors as shown below while the compilation did not STOP.

[ 52%] Building CXX object core/rint/CMakeFiles/Rint.dir/src/TTabCom.cxx.o
[ 52%] Linking CXX shared library …/…/lib/libRint.so
[ 52%] Built target Rint
[ 52%] Building CXX object main/CMakeFiles/rootcling.dir/src/rootcling.cxx.o
[ 52%] Linking CXX executable …/bin/rootcling
[ 52%] Built target rootcling
[ 52%] Generating G__Net.cxx, …/…/lib/Net.pcm
Error in UnknownClass::ReadGitInfo(): Cannot determine git info: etc/gitinfo.txt not found!
Scanning dependencies of target G__Net
[ 52%] Building CXX object net/net/CMakeFiles/G__Net.dir/G__Net.cxx.o
[ 52%] Built target G__Net
[ 52%] Building CXX object net/net/CMakeFiles/Net.dir/src/NetErrors.cxx.o
[ 52%] Building CXX object net/net/CMakeFiles/Net.dir/src/TApplicationRemote.cxx.o
[ 52%] Building CXX object net/net/CMakeFiles/Net.dir/src/TApplicationServer.cxx.o
[ 52%] Building CXX object net/net/CMakeFiles/Net.dir/src/TFileStager.cxx.o

That UnknownClass error appeared frequently during the course of compilation.

Finally the compilation stops for the following error.

[ 89%] Building CXX object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Reference/TensorDataLoader.cxx.o
[ 89%] Building CXX object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cpu.cxx.o
[ 89%] Building CXX object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cpu/CpuBuffer.cxx.o
[ 89%] Building CXX object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cpu/CpuMatrix.cxx.o
[ 89%] Building CUDA object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda.cu.o
/home/vega/CERNSOFT/SOURCES/ROOT_GIT_SRC/core/base/inc/TStorage.h:123:37: warning: declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ with attribute ‘noinline’ follows inline declaration [-Wattributes]
123 | R__NEVER_INLINE void TStorage::UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits) {
| ^~~~~~~~
/home/vega/CERNSOFT/SOURCES/ROOT_GIT_SRC/core/base/inc/TStorage.h:83:20: note: previous declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ here
83 | static void UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits);
| ^~~~~~~~~~~~~~
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘…’:
435 | function(_Functor&& __f)
| ^
/usr/include/c++/11/bits/std_function.h:435:145: note: ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘…’:
530 | operator=(_Functor&& __f)
| ^
/usr/include/c++/11/bits/std_function.h:530:146: note: ‘_ArgTypes’
make[2]: *** [tmva/tmva/CMakeFiles/TMVA.dir/build.make:2372: tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:43737: tmva/tmva/CMakeFiles/TMVA.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
vega@aditya:~/CERNSOFT/SOURCES/ROOT_GIT_SRC/BUILD_ROOT 01:36 PM $

CMakeCache.txt (182.0 KB)

Please see and kindly guide me.
Thanks, Abhijit

Hi,

Thanks for the info. Do you manage to build ROOT with less options, e.g. starting to remove the GPU support?

Best,
D

Hello Danilo!
Yes, TMVA-CPU only version is working.
Best, Abhijit