Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-10597

ROOT 6.20.0 fails to compile with -Dcuda=yes when cudnn not installed

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: High
    • Resolution: Fixed
    • Affects Version/s: 6.20/00
    • Fix Version/s: 6.22/00, 6.21/01
    • Component/s: Build System
    • Labels:
      None
    • Environment:

      Gentoo Linux x86_64

      Description

      Configuring with -Dcuda=yes, CMake tells us:

      -- Found CUDA: /opt/cuda (found version "10.2") 
      -- The CUDA compiler identification is NVIDIA 10.2.89
      -- Check for working CUDA compiler: /opt/cuda/bin/nvcc
      -- Check for working CUDA compiler: /opt/cuda/bin/nvcc -- works
      -- Detecting CUDA compiler ABI info
      -- Detecting CUDA compiler ABI info - done
      -- Could NOT find CUDNN (missing: CUDNN_INCLUDE_DIR CUDNN_LIBRARY) 
      -- CuDNN library not found
      ...
      -- cudnn not found - use only Cuda+Cublas
      ...

      However, failure late in the build is observed:

      In file included from input_line_11:65:
      In file included from /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00_build/include/TMVA/MethodDL.h:51:
      In file included from /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00_build/include/TMVA/DNN/Architectures/Cuda.h:31:
      /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00_build/include/TMVA/DNN/Architectures/Cuda/CudaTensor.h:23:10: fatal error: 'cudnn.h' file not found
      #include "cudnn.h"
               ^~~~~~~~~
      #0 0x00007f63f84a574a llvm::sys::PrintStackTrace(llvm::raw_ostream&) /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/interpreter/llvm/src/lib/Support/Unix/Signals.inc:402:3
      #1 0x00007f63f84a34be llvm::sys::RunSignalHandlers() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/interpreter/llvm/src/lib/Support/Signals.cpp:50:12
      #2 0x00007f63f84a34be llvm::sys::RunSignalHandlers() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/interpreter/llvm/src/lib/Support/Signals.cpp:46:6
      #3 0x00007f63f84a36fe SignalHandler(int) /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/interpreter/llvm/src/lib/Support/Unix/Signals.inc:242:31
      #4 0x00007f63f575bed0 (/lib64/libc.so.6+0x38ed0)
      #5 0x00007f63f575be0b raise /usr/src/debug/sys-libs/glibc-2.29-r7/glibc-2.29/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
      #6 0x00007f63f5745535 abort /usr/src/debug/sys-libs/glibc-2.29-r7/glibc-2.29/stdlib/abort.c:81:7
      #7 0x00007f63f574540f get_sysdep_segment_value /usr/src/debug/sys-libs/glibc-2.29-r7/glibc-2.29/intl/loadmsgcat.c:509:8
      #8 0x00007f63f574540f _nl_load_domain /usr/src/debug/sys-libs/glibc-2.29-r7/glibc-2.29/intl/loadmsgcat.c:970:34
      #9 0x00007f63f57536e2 (/lib64/libc.so.6+0x306e2)
      #10 0x00007f63f627a18a (/var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00_build/lib/libCling.so.6.20+0x52718a)
      #11 0x00007f63f61fa792 std::default_delete<cling::IncrementalParser>::operator()(cling::IncrementalParser*) const /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/bits/unique_ptr.h:81:2
      #12 0x00007f63f61fa792 std::default_delete<cling::IncrementalParser>::operator()(cling::IncrementalParser*) const /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/bits/unique_ptr.h:75:7
      #13 0x00007f63f61fa792 std::unique_ptr<cling::IncrementalParser, std::default_delete<cling::IncrementalParser> >::reset(cling::IncrementalParser*) /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/bits/unique_ptr.h:382:17
      #14 0x00007f63f61fa792 cling::Interpreter::~Interpreter() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/interpreter/cling/lib/Interpreter/Interpreter.cpp:406:23
      #15 0x00007f63f61faad9 cling::Interpreter::~Interpreter() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/interpreter/cling/lib/Interpreter/Interpreter.cpp:407:3
      #16 0x00007f63f6181633 std::unordered_set<clang::NamespaceDecl const*, std::hash<clang::NamespaceDecl const*>, std::equal_to<clang::NamespaceDecl const*>, std::allocator<clang::NamespaceDecl const*> >::~unordered_set() /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/bits/unordered_set.h:97:11
      #17 0x00007f63f6181633 TCling::~TCling() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/core/metacling/src/TCling.cxx:1448:17
      #18 0x00007f63f6181769 TCling::~TCling() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/core/metacling/src/TCling.cxx:1461:1
      #19 0x00007f63f5a84c61 TROOT::~TROOT() /var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00/core/base/src/TROOT.cxx:1031:32
      #20 0x00007f63f575ea68 __run_exit_handlers /usr/src/debug/sys-libs/glibc-2.29-r7/glibc-2.29/stdlib/exit.c:109:8
      #21 0x00007f63f575ebaa (/lib64/libc.so.6+0x3bbaa)
      #22 0x00007f63f5746ed2 __libc_start_main /usr/src/debug/sys-libs/glibc-2.29-r7/glibc-2.29/csu/../csu/libc-start.c:261:5
      #23 0x00005646f9b8d18a _start (/var/tmp/portage/sci-physics/root-6.20.00/work/root-6.20.00_build/bin/rootcling+0x118a

       

      So either, cudnn is a hard dependency now if CUDA is enabled (and CMake should reflect that) or CudaTensor should be disabled in the CUDA-but-not-CUDNN case.

       

      If CUDNN is meant as a separate feature, a -Dcudnn=OFF / ON switch should be added (currently, only autodetection => magic dependency seems to be done).

       

      Note also this downstream bug: https://bugs.gentoo.org/711470

       

        Attachments

          Activity

            People

            • Assignee:
              moneta Lorenzo Moneta
              Reporter:
              ofreyerm Oliver Freyermuth
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: