Installation fails to test CUDA program
losoliveirasilva opened this issue · comments
I'm trying to compile dlib with CUDA. I suspect my problem is the combination of the versions.
Basically, I cloned this repository and followed readme instructions:
mkdir build; cd build; cmake .. -DUSE_AVX_INSTRUCTIONS=1; cmake --build .
I tried a few dlib recent versions (master, v19.24 and v19.22), but the error was always the same.
Current Behavior
This is the output of the command above:
-- The C compiler identification is GNU 12.1.0
-- The CXX compiler identification is GNU 12.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using CMake version: 3.23.1
-- Compiling dlib version: 19.24.99
-- Enabling AVX instructions
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found system copy of libpng: /usr/lib/libpng.so;/usr/lib/libz.so
-- Found system copy of libjpeg: /usr/lib/libjpeg.so
-- Found WebP: /usr/lib/libwebp.so
-- Searching for BLAS and LAPACK
-- Searching for BLAS and LAPACK
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.0")
-- Checking for module 'cblas'
-- Found cblas, version 3.10.1
-- Checking for module 'lapack'
-- Found lapack, version 3.10.1
-- Looking for cblas_ddot
-- Looking for cblas_ddot - found
-- Found BLAS and LAPACK via pkg-config
-- Found CUDA: /opt/cuda (found suitable version "11.6", minimum required is "7.5")
-- Looking for cuDNN install...
-- Found cuDNN: /usr/lib/libcudnn.so
-- Building a CUDA test project to see if your compiler is compatible with CUDA...
-- *****************************************************************************************************************
-- *** CUDA was found but your compiler failed to compile a simple CUDA program so dlib isn't going to use CUDA.
-- *** The output of the failed CUDA test compile is shown below:
-- ***
-- *** Change Dir: /home/los/dlib/build/dlib/cuda_test_build
***
*** Run Build Command(s):/usr/bin/make -f Makefile && [ 50%] Building NVCC (Device) object CMakeFiles/cuda_test.dir/cuda_test_generated_cuda_test.cu.o
*** /usr/include/c++/12.1.0/bits/locale_facets_nonio.tcc: In member function ‘_InIter std::__cxx11::time_get<_CharT, _InIter>::get(iter_type, iter_type, std::ios_base&, std::ios_base::iostate&, tm*, const char_type*, const char_type*) const’:
*** /usr/include/c++/12.1.0/bits/locale_facets_nonio.tcc:1477:77: error: invalid type argument of unary ‘*’ (have ‘int’)
*** 1477 | if ((void*)(this->*(&time_get::do_get)) == (void*)(&time_get::do_get))
*** | ^
*** CMake Error at cuda_test_generated_cuda_test.cu.o.cmake:276 (message):
*** Error generating file
*** /home/los/dlib/build/dlib/cuda_test_build/CMakeFiles/cuda_test.dir//./cuda_test_generated_cuda_test.cu.o
***
***
*** make[2]: *** [CMakeFiles/cuda_test.dir/build.make:77: CMakeFiles/cuda_test.dir/cuda_test_generated_cuda_test.cu.o] Error 1
*** make[1]: *** [CMakeFiles/Makefile2:82: CMakeFiles/cuda_test.dir/all] Error 2
*** make: *** [Makefile:91: all] Error 2
***
***
-- *****************************************************************************************************************
-- Disabling CUDA support for dlib. DLIB WILL NOT USE CUDA
-- C++11 activated.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/los/dlib/build
[ 1%] Building CXX object dlib/CMakeFiles/dlib.dir/base64/base64_kernel_1.cpp.o
[ 3%] Building CXX object dlib/CMakeFiles/dlib.dir/bigint/bigint_kernel_1.cpp.o
[ 4%] Building CXX object dlib/CMakeFiles/dlib.dir/bigint/bigint_kernel_2.cpp.o
[ 6%] Building CXX object dlib/CMakeFiles/dlib.dir/bit_stream/bit_stream_kernel_1.cpp.o
[ 8%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_decoder/entropy_decoder_kernel_1.cpp.o
[ 9%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_decoder/entropy_decoder_kernel_2.cpp.o
[ 11%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_encoder/entropy_encoder_kernel_1.cpp.o
[ 12%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_encoder/entropy_encoder_kernel_2.cpp.o
[ 14%] Building CXX object dlib/CMakeFiles/dlib.dir/md5/md5_kernel_1.cpp.o
[ 16%] Building CXX object dlib/CMakeFiles/dlib.dir/tokenizer/tokenizer_kernel_1.cpp.o
[ 17%] Building CXX object dlib/CMakeFiles/dlib.dir/unicode/unicode.cpp.o
[ 19%] Building CXX object dlib/CMakeFiles/dlib.dir/test_for_odr_violations.cpp.o
[ 20%] Building CXX object dlib/CMakeFiles/dlib.dir/sockets/sockets_kernel_1.cpp.o
[ 22%] Building CXX object dlib/CMakeFiles/dlib.dir/bsp/bsp.cpp.o
[ 24%] Building CXX object dlib/CMakeFiles/dlib.dir/dir_nav/dir_nav_kernel_1.cpp.o
[ 25%] Building CXX object dlib/CMakeFiles/dlib.dir/dir_nav/dir_nav_kernel_2.cpp.o
[ 27%] Building CXX object dlib/CMakeFiles/dlib.dir/dir_nav/dir_nav_extensions.cpp.o
[ 29%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/fonts.cpp.o
[ 30%] Building CXX object dlib/CMakeFiles/dlib.dir/linker/linker_kernel_1.cpp.o
[ 32%] Building CXX object dlib/CMakeFiles/dlib.dir/logger/extra_logger_headers.cpp.o
[ 33%] Building CXX object dlib/CMakeFiles/dlib.dir/logger/logger_kernel_1.cpp.o
[ 35%] Building CXX object dlib/CMakeFiles/dlib.dir/logger/logger_config_file.cpp.o
[ 37%] Building CXX object dlib/CMakeFiles/dlib.dir/misc_api/misc_api_kernel_1.cpp.o
[ 38%] Building CXX object dlib/CMakeFiles/dlib.dir/misc_api/misc_api_kernel_2.cpp.o
[ 40%] Building CXX object dlib/CMakeFiles/dlib.dir/sockets/sockets_extensions.cpp.o
[ 41%] Building CXX object dlib/CMakeFiles/dlib.dir/sockets/sockets_kernel_2.cpp.o
[ 43%] Building CXX object dlib/CMakeFiles/dlib.dir/sockstreambuf/sockstreambuf.cpp.o
[ 45%] Building CXX object dlib/CMakeFiles/dlib.dir/sockstreambuf/sockstreambuf_unbuffered.cpp.o
[ 46%] Building CXX object dlib/CMakeFiles/dlib.dir/server/server_kernel.cpp.o
[ 48%] Building CXX object dlib/CMakeFiles/dlib.dir/server/server_iostream.cpp.o
[ 50%] Building CXX object dlib/CMakeFiles/dlib.dir/server/server_http.cpp.o
[ 51%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/multithreaded_object_extension.cpp.o
[ 53%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threaded_object_extension.cpp.o
[ 54%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threads_kernel_1.cpp.o
[ 56%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threads_kernel_2.cpp.o
[ 58%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threads_kernel_shared.cpp.o
[ 59%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/thread_pool_extension.cpp.o
[ 61%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/async.cpp.o
[ 62%] Building CXX object dlib/CMakeFiles/dlib.dir/timer/timer.cpp.o
[ 64%] Building CXX object dlib/CMakeFiles/dlib.dir/stack_trace.cpp.o
[ 66%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/cpu_dlib.cpp.o
[ 67%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/tensor_tools.cpp.o
[ 69%] Building CXX object dlib/CMakeFiles/dlib.dir/data_io/image_dataset_metadata.cpp.o
[ 70%] Building CXX object dlib/CMakeFiles/dlib.dir/data_io/mnist.cpp.o
[ 72%] Building CXX object dlib/CMakeFiles/dlib.dir/data_io/cifar.cpp.o
[ 74%] Building CXX object dlib/CMakeFiles/dlib.dir/global_optimization/global_function_search.cpp.o
[ 75%] Building CXX object dlib/CMakeFiles/dlib.dir/filtering/kalman_filter.cpp.o
[ 77%] Building CXX object dlib/CMakeFiles/dlib.dir/svm/auto.cpp.o
[ 79%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/widgets.cpp.o
[ 80%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/drawable.cpp.o
[ 82%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/canvas_drawing.cpp.o
[ 83%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/style.cpp.o
[ 85%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/base_widgets.cpp.o
[ 87%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_core/gui_core_kernel_1.cpp.o
[ 88%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_core/gui_core_kernel_2.cpp.o
[ 90%] Building CXX object dlib/CMakeFiles/dlib.dir/image_loader/png_loader.cpp.o
[ 91%] Building CXX object dlib/CMakeFiles/dlib.dir/image_saver/save_png.cpp.o
[ 93%] Building CXX object dlib/CMakeFiles/dlib.dir/image_loader/jpeg_loader.cpp.o
[ 95%] Building CXX object dlib/CMakeFiles/dlib.dir/image_saver/save_jpeg.cpp.o
[ 96%] Building CXX object dlib/CMakeFiles/dlib.dir/image_loader/webp_loader.cpp.o
[ 98%] Building CXX object dlib/CMakeFiles/dlib.dir/image_saver/save_webp.cpp.o
[100%] Linking CXX static library libdlib.a
[100%] Built target dlib
Apparently all the requirements are fulfilled.
As I mentioned before, I believe something with the combination of compile+dlib+cuda versions is causing the error, but I'm not sure, and brute forcing all possibilities will take me a lot of time.
Does anyone knows a specific combination that certainly works, so I can try it on my machine? Or has any idea why I'm getting this error?
Versions
- dlib Version: v19.22, v19.24 and master
- Where did you get dlib: git cloned this repository
- Platform: Manjaro Linux 21.2.6, kernel 5.15.41
- Compiler: gcc version 12.1.0
- cmake: 3.23.1 (installed through pacman)
- cuda: 11.6.2-1 (installed through pacman)
- cudnn: 8.4.0.27-1 (installed through pacman)
- python: 3.10.4
- kernel headers: linux515-headers 5.15.41-1 (installed through pacman)
- GPU: RTX 2060 Super
I think the problem is that CUDA does not support GCC 12.1. Try using either:
- an older version (GCC 11 works)
- using clang as the C compiler
The second option is what I do these days on Arch:
mkdir build; cd build; CC=clang cmake .. -DUSE_AVX_INSTRUCTIONS=1; cmake --build .
Ok, this fixed the error, thank you! I'll post the output for future reference.
- installed Clang
CC=clang
option
Versions
- Clang: 13.0.1
Output
-- The C compiler identification is Clang 13.0.1
-- The CXX compiler identification is GNU 12.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using CMake version: 3.23.1
-- Compiling dlib version: 19.24.99
-- Enabling AVX instructions
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found system copy of libpng: /usr/lib/libpng.so;/usr/lib/libz.so
-- Found system copy of libjpeg: /usr/lib/libjpeg.so
-- Found WebP: /usr/lib/libwebp.so
-- Searching for BLAS and LAPACK
-- Searching for BLAS and LAPACK
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.0")
-- Checking for module 'cblas'
-- Found cblas, version 3.10.1
-- Checking for module 'lapack'
-- Found lapack, version 3.10.1
-- Looking for cblas_ddot
-- Looking for cblas_ddot - found
-- Found BLAS and LAPACK via pkg-config
-- Found CUDA: /opt/cuda (found suitable version "11.6", minimum required is "7.5")
-- Looking for cuDNN install...
-- Found cuDNN: /usr/lib/libcudnn.so
-- Building a CUDA test project to see if your compiler is compatible with CUDA...
-- Building a cuDNN test project to check if you have the right version of cuDNN installed...
-- Enabling CUDA support for dlib. DLIB WILL USE CUDA, compute capabilities: 50
-- C++11 activated.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/los/dlib/build
[ 1%] Building NVCC (Device) object dlib/CMakeFiles/dlib.dir/cuda/dlib_generated_cusolver_dlibapi.cu.o
[ 2%] Building NVCC (Device) object dlib/CMakeFiles/dlib.dir/cuda/dlib_generated_cuda_dlib.cu.o
[ 4%] Building CXX object dlib/CMakeFiles/dlib.dir/base64/base64_kernel_1.cpp.o
[ 5%] Building CXX object dlib/CMakeFiles/dlib.dir/bigint/bigint_kernel_1.cpp.o
[ 7%] Building CXX object dlib/CMakeFiles/dlib.dir/bigint/bigint_kernel_2.cpp.o
[ 8%] Building CXX object dlib/CMakeFiles/dlib.dir/bit_stream/bit_stream_kernel_1.cpp.o
[ 10%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_decoder/entropy_decoder_kernel_1.cpp.o
[ 11%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_decoder/entropy_decoder_kernel_2.cpp.o
[ 13%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_encoder/entropy_encoder_kernel_1.cpp.o
[ 14%] Building CXX object dlib/CMakeFiles/dlib.dir/entropy_encoder/entropy_encoder_kernel_2.cpp.o
[ 15%] Building CXX object dlib/CMakeFiles/dlib.dir/md5/md5_kernel_1.cpp.o
[ 17%] Building CXX object dlib/CMakeFiles/dlib.dir/tokenizer/tokenizer_kernel_1.cpp.o
[ 18%] Building CXX object dlib/CMakeFiles/dlib.dir/unicode/unicode.cpp.o
[ 20%] Building CXX object dlib/CMakeFiles/dlib.dir/test_for_odr_violations.cpp.o
[ 21%] Building CXX object dlib/CMakeFiles/dlib.dir/sockets/sockets_kernel_1.cpp.o
[ 23%] Building CXX object dlib/CMakeFiles/dlib.dir/bsp/bsp.cpp.o
[ 24%] Building CXX object dlib/CMakeFiles/dlib.dir/dir_nav/dir_nav_kernel_1.cpp.o
[ 26%] Building CXX object dlib/CMakeFiles/dlib.dir/dir_nav/dir_nav_kernel_2.cpp.o
[ 27%] Building CXX object dlib/CMakeFiles/dlib.dir/dir_nav/dir_nav_extensions.cpp.o
[ 28%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/fonts.cpp.o
[ 30%] Building CXX object dlib/CMakeFiles/dlib.dir/linker/linker_kernel_1.cpp.o
[ 31%] Building CXX object dlib/CMakeFiles/dlib.dir/logger/extra_logger_headers.cpp.o
[ 33%] Building CXX object dlib/CMakeFiles/dlib.dir/logger/logger_kernel_1.cpp.o
[ 34%] Building CXX object dlib/CMakeFiles/dlib.dir/logger/logger_config_file.cpp.o
[ 36%] Building CXX object dlib/CMakeFiles/dlib.dir/misc_api/misc_api_kernel_1.cpp.o
[ 37%] Building CXX object dlib/CMakeFiles/dlib.dir/misc_api/misc_api_kernel_2.cpp.o
[ 39%] Building CXX object dlib/CMakeFiles/dlib.dir/sockets/sockets_extensions.cpp.o
[ 40%] Building CXX object dlib/CMakeFiles/dlib.dir/sockets/sockets_kernel_2.cpp.o
[ 42%] Building CXX object dlib/CMakeFiles/dlib.dir/sockstreambuf/sockstreambuf.cpp.o
[ 43%] Building CXX object dlib/CMakeFiles/dlib.dir/sockstreambuf/sockstreambuf_unbuffered.cpp.o
[ 44%] Building CXX object dlib/CMakeFiles/dlib.dir/server/server_kernel.cpp.o
[ 46%] Building CXX object dlib/CMakeFiles/dlib.dir/server/server_iostream.cpp.o
[ 47%] Building CXX object dlib/CMakeFiles/dlib.dir/server/server_http.cpp.o
[ 49%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/multithreaded_object_extension.cpp.o
[ 50%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threaded_object_extension.cpp.o
[ 52%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threads_kernel_1.cpp.o
[ 53%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threads_kernel_2.cpp.o
[ 55%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/threads_kernel_shared.cpp.o
[ 56%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/thread_pool_extension.cpp.o
[ 57%] Building CXX object dlib/CMakeFiles/dlib.dir/threads/async.cpp.o
[ 59%] Building CXX object dlib/CMakeFiles/dlib.dir/timer/timer.cpp.o
[ 60%] Building CXX object dlib/CMakeFiles/dlib.dir/stack_trace.cpp.o
[ 62%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/cpu_dlib.cpp.o
[ 63%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/tensor_tools.cpp.o
[ 65%] Building CXX object dlib/CMakeFiles/dlib.dir/data_io/image_dataset_metadata.cpp.o
[ 66%] Building CXX object dlib/CMakeFiles/dlib.dir/data_io/mnist.cpp.o
[ 68%] Building CXX object dlib/CMakeFiles/dlib.dir/data_io/cifar.cpp.o
[ 69%] Building CXX object dlib/CMakeFiles/dlib.dir/global_optimization/global_function_search.cpp.o
[ 71%] Building CXX object dlib/CMakeFiles/dlib.dir/filtering/kalman_filter.cpp.o
[ 72%] Building CXX object dlib/CMakeFiles/dlib.dir/svm/auto.cpp.o
[ 73%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/widgets.cpp.o
[ 75%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/drawable.cpp.o
[ 76%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/canvas_drawing.cpp.o
[ 78%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/style.cpp.o
[ 79%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_widgets/base_widgets.cpp.o
[ 81%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_core/gui_core_kernel_1.cpp.o
[ 82%] Building CXX object dlib/CMakeFiles/dlib.dir/gui_core/gui_core_kernel_2.cpp.o
[ 84%] Building CXX object dlib/CMakeFiles/dlib.dir/image_loader/png_loader.cpp.o
[ 85%] Building CXX object dlib/CMakeFiles/dlib.dir/image_saver/save_png.cpp.o
[ 86%] Building CXX object dlib/CMakeFiles/dlib.dir/image_loader/jpeg_loader.cpp.o
[ 88%] Building CXX object dlib/CMakeFiles/dlib.dir/image_saver/save_jpeg.cpp.o
[ 89%] Building CXX object dlib/CMakeFiles/dlib.dir/image_loader/webp_loader.cpp.o
[ 91%] Building CXX object dlib/CMakeFiles/dlib.dir/image_saver/save_webp.cpp.o
[ 92%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/cudnn_dlibapi.cpp.o
[ 94%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/cublas_dlibapi.cpp.o
[ 95%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/curand_dlibapi.cpp.o
[ 97%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/cuda_data_ptr.cpp.o
[ 98%] Building CXX object dlib/CMakeFiles/dlib.dir/cuda/gpu_data.cpp.o
[100%] Linking CXX static library libdlib.a
[100%] Built target dlib
To be able to run python setup.py install
, I had to modify the file, because it was not using clang. I tried with export
but still was using gcc.
cmake_args += ['-DCMAKE_C_COMPILER=clang']
cmake_setup = ['cmake', ext.sourcedir] + cmake_args