My build of root-6.22.02 with cuda fails at the stage of loading the cuda library objects needed for tmva. A working root.exe is produced, but I am missing the libtmva library. I have installed the cuda 11.0 toolkit and 8.3.3 cudnn libraries from the fedora31 repo and nvidia. Using gcc9.3.1. I would appreciate any help…
my LD_LIBRARY_PATH
/home/olin/packages/root/lib:/home/olin/packages/pythia6:/home/olin/packages/SPR-3.3.2/lib:/home/olin/alphaSoftware/alphaAnalysis/lib:/home/olin/alphaSoftware/alphavmc/lib/tgt_linuxx8664gcc:/home/olin/alphaSoftware/alphavmc/geant3/lib/tgt_linuxx8664gcc:/home/olin/alphaSoftware/alphavmc/geant3/tgt_linuxx8664gcc/TGeant3:/usr/local/cudnn/cuda/lib64:/usr/local/cuda/lib64
my cmake configure:
cmake -DCMAKE_INSTALL_PREFIX=$HOME/packages/root-6.22.02_install -DCMAKE_CXX_STANDARD=11 -DCMAKE_CUDA_STANDARD=11 -Dminuit2=ON -Dvmc=ON -Dcuda=ON -Dcudnn=OFF -Dtmva-gpu=ON -Dtmva-cpu=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DCMAKE_CUDA_RUNTIME_LIBRARY=/usr/local/cuda/lib64 $HOME/packages/root-6.22.02_src
(same failure with cudnn=ON)
my cmake build:
cmake --build . --target install – -j6
/usr/local/cuda/lib64/libcudart.so contains the missing references
Failure messages-partial
[ 98%] Building CXX object graf3d/eve/CMakeFiles/Eve.dir/src/TEveUtil.cxx.o
/usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o: in function TMVA::DNN::TBatchNormLayer<TMVA::DNN::TCuda<float> >::Initialize()': MethodDL.cxx:(.text._ZN4TMVA3DNN15TBatchNormLayerINS0_5TCudaIfEEE10InitializeEv[_ZN4TMVA3DNN15TBatchNormLayerINS0_5TCudaIfEEE10InitializeEv]+0x85): undefined reference to
cudaMemcpy’
/usr/bin/ld: MethodDL.cxx:(.text._ZN4TMVA3DNN15TBatchNormLayerINS0_5TCudaIfEEE10InitializeEv[_ZN4TMVA3DNN15TBatchNormLayerINS0_5TCudaIfEEE10InitializeEv]+0xb7): undefined reference to cudaMemcpy' /usr/bin/ld: MethodDL.cxx:(.text._ZN4TMVA3DNN15TBatchNormLayerINS0_5TCudaIfEEE10InitializeEv[_ZN4TMVA3DNN15TBatchNormLayerINS0_5TCudaIfEEE10InitializeEv]+0xed): undefined reference to
cudaMemcpy’
/usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o: in function TMVA::DNN::RNN::TBasicGRULayer<TMVA::DNN::TCuda<float> >::Forward(TMVA::DNN::TCudaTensor<float>&, bool)': MethodDL.cxx:(.text._ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE7ForwardERNS0_11TCudaTensorIfEEb[_ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE7ForwardERNS0_11TCudaTensorIfEEb]+0x76f): undefined reference to
cudaMemcpy’
/usr/bin/ld: MethodDL.cxx:(.text._ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE7ForwardERNS0_11TCudaTensorIfEEb[_ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE7ForwardERNS0_11TCudaTensorIfEEb]+0x7ca): undefined reference to cudaMemcpy' /usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o: in function
TMVA::DNN::RNN::TBasicRNNLayer<TMVA::DNN::TCuda >::Backward(TMVA::DNN::TCudaTensor&, TMVA::DNN::TCudaTensor const&)’:
MethodDL.cxx:(.text.ZN4TMVA3DNN3RNN14TBasicRNNLayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7[ZN4TMVA3DNN3RNN14TBasicRNNLayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7]+0x1ba): undefined reference to cudaMemset' /usr/bin/ld: MethodDL.cxx:(.text._ZN4TMVA3DNN3RNN14TBasicRNNLayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7_[_ZN4TMVA3DNN3RNN14TBasicRNNLayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7_]+0x1e3): undefined reference to
cudaMemset’
/usr/bin/ld: MethodDL.cxx:(.text.ZN4TMVA3DNN3RNN14TBasicRNNLayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7[ZN4TMVA3DNN3RNN14TBasicRNNLayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7]+0x20c): undefined reference to cudaMemset' /usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o: in function
TMVA::DNN::RNN::TBasicGRULayer<TMVA::DNN::TCuda >::Backward(TMVA::DNN::TCudaTensor&, TMVA::DNN::TCudaTensor const&)’:
MethodDL.cxx:(.text.ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7[ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7]+0x1b2): undefined reference to cudaMemset' /usr/bin/ld: MethodDL.cxx:(.text._ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7_[_ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7_]+0x1db): undefined reference to
cudaMemset’
/usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o:MethodDL.cxx:(.text.ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7[ZN4TMVA3DNN3RNN14TBasicGRULayerINS0_5TCudaIfEEE8BackwardERNS0_11TCudaTensorIfEERKS7]+0x204): more undefined references to cudaMemset' follow /usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o: in function
TMVA::DNN::VGeneralLayer<TMVA::DNN::TCuda >::WriteMatrixToXML(void*, char const*, TMVA::DNN::TCudaMatrix const&)’:
MethodDL.cxx:(.text._ZN4TMVA3DNN13VGeneralLayerINS0_5TCudaIfEEE16WriteMatrixToXMLEPvPKcRKNS0_11TCudaMatrixIfEE[_ZN4TMVA3DNN13VGeneralLayerINS0_5TCudaIfEEE16WriteMatrixToXMLEPvPKcRKNS0_11TCudaMatrixIfEE]+0x1d5): undefined reference to cudaMemcpy' /usr/bin/ld: CMakeFiles/TMVA.dir/src/MethodDL.cxx.o: in function
std::vector<double, std::allocator > TMVA::MethodDL::PredictDeepNet<TMVA::DNN::TCuda >(long long, long long, unsigned long, bool)’:
MethodDL.cxx:(.text._ZN4TMVA8MethodDL14PredictDeepNetINS_3DNN5TCudaIfEEEESt6vectorIdSaIdEExxmb[_ZN4TMVA8MethodDL14PredictDeepNetINS_3DNN5TCudaIfEEEESt6vectorIdSaIdEExxmb]+0xb4e): undefined reference to cudaMemcpy' /usr/bin/ld: CMakeFiles/TMVA.dir/src/DNN/Architectures/Cuda.cu.o: in function
__device_stub__ZN4TMVA3DNN4Cuda10AddRowWiseIfEEvPT_PKS3_ii(float*, float const*, int, int)’: