Problems with Shared_cudpp

Hello,

Since GVDB 1.1 there is now a shared_cudpp folder that needs to be built in oder to build gvdb lib.

Since no instructions are given, I just built it with CMake, but the provided solution is win32 only. I tried changing it to a standard x64 build for my MSVS2015, but to no success.

2> CMake Error at cudpp_1912x_generated_reduce_app.cu.obj.Debug.cmake:219 (message):
2> Error generating
2> C:/Nvidia/gvdb-voxels-master/build/shared_cudpp/src/cudpp/CMakeFiles/cudpp_1912x.dir/app/Debug/cudpp_1912x_generated_reduce_app.cu.obj

Building gvdb lib without building shared_cudpp leads to missing files.

Are there instructions to go around that?

This is unexpected since the CMake provided for cudpp was tested and use with VS2015 on Windows10, x64 and has not been used on win32. The default settings for this cmake will build x64 code (be sure to select a 64-bit compiler in cmake).

The platform you mention, VS2015, Win10 x64 is the recommended platform, and shared_cudpp includes pre-built binaries of cudpp for this platform. Thus, while cudpp is now required, you should be able to build gvdb w/o rebuilding cudpp for this platform.

Here is the error message generated by cmake:

<-- Searching for CUDPP
Found. CUDPP Header files. C:/Nvidia/gvdb-voxels-master/source/shared_cudpp/include
Locating: cudpp_1912cu9x64.lib, MSVC: 1912, CUDA: cu9
NOT FOUND. Missing CUDPP .lib files. Built and install ‘shared_cudpp’ prior to gvdb
Found DLLs:
CMake Error at cmake/FindCUDPP.cmake:69 (message):

    Please set CUDPP_ROOT_DIR to the root location 
    of installed CUDPP library containing /include and /lib.
    Not found at CUDPP_ROOT_DIR: C:/Nvidia/gvdb-voxels-master/source/shared_cudpp

Call Stack (most recent call first):
cmake/Packages.cmake:346 (find_package)
CMakeLists.txt:51 (_add_package_CUDPP)

With further investigation, only the files cudpp_1900cu___.lib are in the directory, and the cudpp_1912cu___ are nowhere to be found. Is it because the framework is being developped with the new version of the cuda toolkit which is not yet available?

For validation Morganeon, I have received an identical error. If a fix is found please post it, and I will do the same.

My current mission is not depending on GVDB (for the aforementioned reason), so I have no fix to propose, and am still looking for one.

Your version of Microsoft Visual C++ (MSVC++) is newer than the one used to build cudpp, and actually it’s not even compatible with the current version of Cuda toolkit (9.1.85) yet so you can’t use it for gvdb or Cuda.

The error suggests that you’re using Visual Studio 2017 (which is Visual Studio 15 2017 Win64 in CMake) with MSVC++ 14.12 and the compiler version macro MSC_VER=1912 (that’s where the 1912 comes from).

Note that the GVDB info/download page (https://developer.nvidia.com/gvdb) does warn of issues with Visual Studio 2017 and recommends Visual Studio 2015.

There are pretty much three options:

  1. Wait for NVidia to catch up to your version of MSVC++ (and avoid updating Visual Studio or MSVC++)
  2. Use Visual Studio 2015 (which confusingly shows up in CMake as Visual Studio 14 2015 Win64)
  3. Install MSVC++ 14.0 for Visual Studio 2017, continue generating configs in CMake for Visual Studio 15 2017 Win64 but add 'v140' in the 'Optional Toolset to Use' box when you first run CMake/configure and select the target generator.

I can confirm that option 3 does work.

To install MSCV++ 14.0 for VS 2017:

  1. Go to 'Add/Remove Programs' (or 'Apps and Features' in windows 10).
  2. Click 'Modify' under Visual Studio 2017.
  3. Go to the 'Additional Components' tab.
  4. Look for 'VC++ 2015.3 v140 tools for desktop' and tick the box next to it.
  5. Click 'Modify' (bottom left)
  6. Wait for it to finish.
  7. Remember to use 'v140' when you run CMake (and use 'file>Delete Cache' to reset CMake configs).

All my projects are already manually set up to v140. I can’t test right now, but I’ll get in touch with you whenever I can and will have tested your solutions!

Option 3 worked for me. Thank you very much for the detailed instructions sjmduncan!

I have the same problem on Ubuntu.
It said:
<-- Searching for CUDPP
Found. CUDPP Header files. /usr/local/cudpp/include
Locating: libcudpp_cu8.so, CUDA: cu8
NOT FOUND. Missing CUDPP .lib files. Built and install ‘shared_cudpp’ prior to gvdb
Found DLLs:
CMake Error at cmake/FindCUDPP.cmake:69 (message):

    Please set CUDPP_ROOT_DIR to the root location 
    of installed CUDPP library containing /include and /lib.
    Not found at CUDPP_ROOT_DIR: /usr/local/cudpp

Call Stack (most recent call first):
cmake/Packages.cmake:346 (find_package)
CMakeLists.txt:51 (_add_package_CUDPP)

Hello, I have the same issue trying to build gvdb_library - Using Win 10, VS2017 w/VC++ 2015.3 v140 tools for desktop, CUDA 9.2.

I have tried generating the project in CMake using VS2017 x65 with the V140 flag to use VS15, However I still getting the same error. Any ideas?

Trying to locate cudpp_1900x64.lib , however lib is named cudpp_1900cux64.lib

<-- Searching for CUDPP
  Found. CUDPP Header files. E:/gvdb-voxels/source/shared_cudpp/include
  Locating: cudpp_1900x64.lib, MSVC: 1900, CUDA: 
  NOT FOUND. Missing CUDPP .lib files. Built and install 'shared_cudpp' prior to gvdb
  Found DLLs: 
CMake Error at cmake/FindCUDPP.cmake:69 (message):

Please set CUDPP_ROOT_DIR to the root location 
        of installed CUDPP library containing /include and /lib.
        Not found at CUDPP_ROOT_DIR: E:/gvdb-voxels/source/shared_cudpp

Call Stack (most recent call first):
  cmake/Packages.cmake:346 (find_package)
  CMakeLists.txt:51 (_add_package_CUDPP)

Configuring incomplete, errors occurred!
See also "E:/gvdb-voxels/bin/gvdb_library/CMakeFiles/CMakeOutput.log".

Also found this issue: https://github.com/NVIDIA/gvdb-voxels/issues/14
Seems like I have to rebuild the cudpp libs using CUDA8, Is it possible to generate the files using CUDA9?

I have not tested any further but what we found is that Packages.cmake searches the installed CUDA version to set a cuda_suffix for further cmake tasks:

macro(_set_cuda_suffix)
#------- CUDA VERSION



if ( ${CUDA_VERSION} EQUAL “9.1” )
SET ( CUDA_SUFFIX “cu9”)
endif ()


Now, if you have CUDA 10.1 installed, the Packages.cmake supplied does not know 10.1 exists and therefore cannot set the proper suffix.

What I did (no guarantees this will work) is add an ‘if’ in the Packages.cmake :




if ( {CUDA_VERSION} EQUAL "9.1" ) SET ( CUDA_SUFFIX "cu9") endif () if ( {CUDA_VERSION} EQUAL “10.1” )
SET ( CUDA_SUFFIX “cu9”)
endif ()