Trouble compiling ROOT with CUDA support for TMVA

Hello,

When I try to compile ROOT with cuda support for TMVA (Ubuntu 16.04, root 6.10.04, cmake option: “-Dcuda=ON”) I get the following error message:

[ 81%] Building NVCC (Device) object tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o
nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-source/tmva/tmva/src/DNN/Architectures/Cuda/CudaMatrix.cu:16:52: fatal error: TMVA/DNN/Architectures/Cuda/CudaMatrix.h: No such file or directory
compilation terminated.
CMake Error at dnn_cuda_generated_CudaMatrix.cu.o.cmake:209 (message):
Error generating
/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/./dnn_cuda_generated_CudaMatrix.cu.o

tmva/tmva/CMakeFiles/dnn_cuda.dir/build.make:70: recipe for target ‘tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o’ failed
make[2]: *** [tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o] Error 1
CMakeFiles/Makefile2:24344: recipe for target ‘tmva/tmva/CMakeFiles/dnn_cuda.dir/all’ failed
make[1]: *** [tmva/tmva/CMakeFiles/dnn_cuda.dir/all] Error 2
Makefile:149: recipe for target ‘all’ failed
make: *** [all] Error 2

There is a file include/TMVA/DNN/Architectures/Cuda/CudaMatrix.h in the build directory.

If I hardcode the path to the header, then I get a bunch of error messages that it cannot find the ROOT header files, such as:
[ 81%] Building NVCC (Device) object tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o
nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
In file included from /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-source/tmva/tmva/src/DNN/Architectures/Cuda/CudaMatrix.cu:16:0:
/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/include/TMVA/DNN/Architectures/Cuda/CudaMatrix.h:27:22: fatal error: TMatrixT.h: No such file or directory
compilation terminated.

Any help is appreciated!

Thanks,
Andreas

HI Andreas,

Is the file TMVA/DNN/Architectures/Cuda/CudaMatrix.h present in your build directory ?
It should be installed under build_dir/include/TMVA…

If this is the case but the file is not found, maybe there is an issue with finding the file with nvcc.
Can you send me the output in this case using the Verbose option ?

Thanks

Lorenzo

Dear Lorenzo,

Yes, the file is present:
root_v6.10.04-build/include/TMVA/DNN/Architectures/Cuda/CudaMatrix.h

Running make -j1 VERBOSE=1, I get:

[ 81%] Building NVCC (Device) object tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o
cd /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda && /usr/bin/cmake -E make_directory /home
/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/.
cd /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda && /usr/bin/cmake -D verbose:BOOL=1 -D bu
ild_configuration:STRING=RelWithDebInfo -D generated_file:STRING=/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DN
N/Architectures/Cuda/./dnn_cuda_generated_CudaMatrix.cu.o -D generated_cubin_file:STRING=/home/and
reas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/./dnn_cuda_generated_CudaMatrix.cu.o.cubin.txt -P /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o.cmake
-- Removing /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/./dnn_cuda_generated_CudaMatrix.cu.o
/usr/bin/cmake -E remove /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/./dnn_cuda_generated_CudaMatrix.cu.o
-- Generating dependency file: /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o.NVCC-depend
/usr/local/cuda-8.0/bin/nvcc -M -D__CUDACC__ /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-source/tmva/tmva/src/DNN/Architectures/Cuda/CudaMatrix.cu -o /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o.NVCC-depend -ccbin /usr/bin/cc -m64 --std c++11 -Xcompiler ,\"-pipe\",\"-m64\",\"-Wshadow\",\"-Wall\",\"-W\",\"-Woverloaded-virtual\",\"-fsigned-char\",\"-fPIC\",\"-pthread\",\"-O2\",\"-g\",\"-DNDEBUG\" -DNVCC -I/usr/local/cuda-8.0/include -I/usr/local/cuda-8.0/include
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-source/tmva/tmva/src/DNN/Architectures/Cuda/CudaMatrix.cu:16:52: fatal error: TMVA/DNN/Architectures/Cuda/CudaMatrix.h: No such file or directory
compilation terminated.
CMake Error at dnn_cuda_generated_CudaMatrix.cu.o.cmake:209 (message):
  Error generating
  /home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build/tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/./dnn_cuda_generated_CudaMatrix.cu.o


tmva/tmva/CMakeFiles/dnn_cuda.dir/build.make:70: recipe for target 'tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o' failed
make[2]: *** [tmva/tmva/CMakeFiles/dnn_cuda.dir/src/DNN/Architectures/Cuda/dnn_cuda_generated_CudaMatrix.cu.o] Error 1
make[2]: Leaving directory '/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build'
CMakeFiles/Makefile2:24344: recipe for target 'tmva/tmva/CMakeFiles/dnn_cuda.dir/all' failed
make[1]: *** [tmva/tmva/CMakeFiles/dnn_cuda.dir/all] Error 2
make[1]: Leaving directory '/home/andreas/Science/Software/MEGAlib/External/root_v6.10.04/root_v6.10.04-build'
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

Thanks,
Andreas

Hi,

I see the include path is not set in the CUDA compilation.
Can you maybe try adding this line in the tmva/tmva/CMakeLists.txt

CUDA_INCLUDE_DIRECTORIES(${ROOT_INCLUDE_DIRS})

in the section where CUDA is found

if(CUDA_FOUND) CUDA_INCLUDE_DIRECTORIES(${ROOT_INCLUDE_DIRS}) CUDA_ADD_LIBRARY(dnn_cuda ${DNN_CUDA_FILES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDNNCUDA") set(DNN_CUDA_LIBRARIES dnn_cuda ${CUDA_CUBLAS_LIBRARIES}) add_dependencies(dnn_cuda move_headers) else)_

Lorenzo

Actually the correct line to add is

CUDA_INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include")

I have committed a fix in the master, see

https://github.com/root-project/root/commit/c1bc3daf741cee9f2928bdf90b4f59ed6af5db3e

Lorenzo

Hi Lorenzo,

Everything works now.

Thanks a lot!
Andreas

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