dlib: The "simple CUDA program test" fails on Visual Studio when run from another CMake script

Just learned that dlib exists. It looks amazing!

I’m trying to build today’s version on Visual Studio 2015 Update 3 on Windows 10 Pro.

The basic build process fails to compile the simple CUDA program:

D:\dlib\build>cmake -G "Visual Studio 14 2015 Win64" ..
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- C++11 activated.
-- Searching for BLAS and LAPACK
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of void*
-- Check size of void* - done
-- Found CUDA: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0 (found suitable version "8.0", minimum required is "7.5")
-- Looking for cuDNN install...
-- 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. ***
-- *** cuDNN V5.0 OR GREATER NOT FOUND.  DLIB WILL NOT USE CUDA. ***
-- *** If you have cuDNN then set CMAKE_PREFIX_PATH to include cuDNN's folder.
-- Configuring done
-- Generating done
-- Build files have been written to: D:/dlib/build

Building the CUDA test manually seems to work, however there are warnings. Is it because of these warnings that the result is interpreted as a failure?

D:\dlib\build>cmake -G "Visual Studio 14 2015 Win64" ..\dlib\cmake_utils\test_for_cuda
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found CUDA: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0 (found suitable version "8.0", minimum required is "7.5")
-- Configuring done
-- Generating done
-- Build files have been written to: D:/dlib/build

D:\dlib\build>cmake --build .
Microsoft (R) Build Engine version 14.0.25420.1
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 19.12.2016 11:59:08.
Project "D:\dlib\build\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "D:\dlib\build\ALL_BUILD.vcxproj" (1) is building "D:\dlib\build\ZERO_CHECK.vcxproj" (2) on node 1 (default target s).
PrepareForBuild:
  Creating directory "x64\Debug\ZERO_CHECK\".
  Creating directory "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\".
InitializeBuildStatus:
  Creating "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Checking Build System
  CMake does not need to re-run because D:/dlib/build/CMakeFiles/generate.stamp is up-to-date.
FinalizeBuildStatus:
  Deleting file "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild".
  Touching "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
Done Building Project "D:\dlib\build\ZERO_CHECK.vcxproj" (default targets).

Project "D:\dlib\build\ALL_BUILD.vcxproj" (1) is building "D:\dlib\build\cuda_test.vcxproj" (3) on node 1 (default targets).
PrepareForBuild:
  Creating directory "cuda_test.dir\Debug\".
  Creating directory "D:\dlib\build\Debug\".
  Creating directory "cuda_test.dir\Debug\cuda_test.tlog\".
InitializeBuildStatus:
  Creating "cuda_test.dir\Debug\cuda_test.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
ComputeCustomBuildOutput:
  Creating directory "D:\dlib\build\CMakeFiles\cuda_test.dir\Debug\".
CustomBuild:
  Building NVCC (Device) object CMakeFiles/cuda_test.dir/Debug/cuda_test_generated_cuda_test.cu.obj
  cuda_test.cu

CUSTOMBUILD : nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored.
 [D:\dlib\build\cuda_test.vcxproj]

CUSTOMBUILD : nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored.
 [D:\dlib\build\cuda_test.vcxproj]

  cuda_test.cu

  Building Custom Rule D:/dlib/dlib/cmake_utils/test_for_cuda/CMakeLists.txt
  CMake is re-running because D:\dlib\build\CMakeFiles\generate.stamp is out-of-date.
    the file 'D:/dlib/build/CMakeFiles/cuda_test.dir/cuda_test_generated_cuda_test.cu.obj.depend'
    is newer than 'D:\dlib\build\CMakeFiles\generate.stamp.depend'
    result='-1'
  -- Configuring done
  -- Generating done
  -- Build files have been written to: D:/dlib/build
Lib:
  D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\Lib.exe /OUT:"D:\dlib\build\Debug\cuda_test.lib" /N
  OLOGO /MACHINE:X64  /machine:x64 D:\dlib\build\CMakeFiles\cuda_test.dir\Debug\cuda_test_generated_cuda_test.cu.obj
  cuda_test.vcxproj -> D:\dlib\build\Debug\cuda_test.lib
FinalizeBuildStatus:
  Deleting file "cuda_test.dir\Debug\cuda_test.tlog\unsuccessfulbuild".
  Touching "cuda_test.dir\Debug\cuda_test.tlog\cuda_test.lastbuildstate".
Done Building Project "D:\dlib\build\cuda_test.vcxproj" (default targets).

PrepareForBuild:
  Creating directory "x64\Debug\ALL_BUILD\".
  Creating directory "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\".
InitializeBuildStatus:
  Creating "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Building Custom Rule D:/dlib/dlib/cmake_utils/test_for_cuda/CMakeLists.txt
  CMake does not need to re-run because D:\dlib\build\CMakeFiles\generate.stamp is up-to-date.
FinalizeBuildStatus:
  Deleting file "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild".
  Touching "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate".
Done Building Project "D:\dlib\build\ALL_BUILD.vcxproj" (default targets).


Build succeeded.

"D:\dlib\build\ALL_BUILD.vcxproj" (default target) (1) ->
"D:\dlib\build\cuda_test.vcxproj" (default target) (3) ->
(CustomBuild target) ->
  CUSTOMBUILD : nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored. [D:\dlib\build\cuda_test.vcxproj]
  CUSTOMBUILD : nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored. [D:\dlib\build\cuda_test.vcxproj]

    2 Warning(s)
    0 Error(s)

Time Elapsed 00:00:11.08

Will try to figure this out on my own, but any hints would be greatly appreciated.

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 28 (15 by maintainers)

Commits related to this issue

Most upvoted comments

Ok. It works if we use toolset v140.
VS15 2017 Win 64 -T v140 works correctly.

@davisking, yeah, the latest CUDA should solve this problem. But I cannot upgrade, because tensorflow 😦 (sigh)