_ROOT Version:6.24.06
_Platform:fedora 35
_Compiler:gcc (GCC) 11.2.1 20211203
After an upgrade I am getting a compilation errors on Cuda.cu , CudaMatrix.cu, and CudaTensor.Cu. From the comments on these routines they seem to play tricks with the compiler.
My build command is
cmake -DCMAKE_CUDA_COMPILER=“/usr/local/cuda-11/bin/nvcc” -DCMAKE_CUDA_STANDARD=“14” -DCMAKE_CXX_STANDARD=“14” -DCMAKE_INSTALL_PREFIX=“/home/olin/packages/rootv6.24_install” -Dcuda=“ON” -Dcudnn=“OFF” -Dgvis=“ON” -Dminuit2=“ON” -Dtmva-cpu=“ON” -Dtmva-gpu=“ON” -Dvmc=“ON” /home/olin/packages/root_src
Also tried standards 11 and 17 with the same result.
Cuda sample code for matrix multiplications does run on my upgraded installation.
I would appreciate any help with this. Is it an actual bug to report?
The errors are
Blockquote
97%] Building CUDA object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda.cu.o
[ 97%] Building CUDA object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda/CudaMatrix.cu.o
[ 97%] Building CUDA object tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda/CudaTensor.cu.o
/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’
/home/olin/packages/root_src/core/base/inc/TStorage.h:131:37: warning: declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ with attribute ‘noinline’ follows inline declaration [-Wattributes]
131 | R__NEVER_INLINE void TStorage::UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits) {
| ^~~~~~~~
/home/olin/packages/root_src/core/base/inc/TStorage.h:91:20: note: previous declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ here
91 | 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:2414: tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda/CudaMatrix.cu.o] Error 1
make[2]: *** Waiting for unfinished jobs…
/home/olin/packages/root_src/core/base/inc/TStorage.h:131:37: warning: declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ with attribute ‘noinline’ follows inline declaration [-Wattributes]
131 | R__NEVER_INLINE void TStorage::UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits) {
| ^~~~~~~~
/home/olin/packages/root_src/core/base/inc/TStorage.h:91:20: note: previous declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ here
91 | static void UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits);
| ^~~~~~~~~~~~~~
make[2]: *** [tmva/tmva/CMakeFiles/TMVA.dir/build.make:2428: tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda/CudaTensor.cu.o] Error 1
/home/olin/packages/root_src/core/base/inc/TStorage.h:131:37: warning: declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ with attribute ‘noinline’ follows inline declaration [-Wattributes]
131 | R__NEVER_INLINE void TStorage::UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits) {
| ^~~~~~~~
/home/olin/packages/root_src/core/base/inc/TStorage.h:91:20: note: previous declaration of ‘static void TStorage::UpdateIsOnHeap(const volatile UInt_t&, volatile UInt_t&)’ here
91 | 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:2386: tmva/tmva/CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda.cu.o] Error 1
BlockQuote