Еще одно: ошибка CMake: переменные установлены в NOTFOUND: CUDA_nppi_LIBRARY (ADVANCED) - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь скомпилировать OpenCV 2.4.13 из исходного кода с CUDA 9.0, CUDNN 7.0, как предложено в репозитории «MonocularTotalCapture», который вы можете найти здесь:

https://github.com/CMU-Perceptual-Computing-Lab/MonocularTotalCapture

Я установил Ubuntu 16.04 на компьютер с графическим процессором GTX 1060. Я установил cuda 9 и CUDNN 7. Теперь я пытаюсь установить OpenCV 2.4.13, но получаю сообщение об ошибке CMake:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)

И затем очень длинный список целей, например:

 linked by target "opencv_core" in directory /home/ziom/Scrivania/MonocularTotalCapture/opencv-2.4.13.6/modules/core

Я знаю, что вопрос, подобный моему, уже решен здесь:

CMake Ошибка: переменные установлены в NOTFOUND

, и я попытался следуйте приведенным там советам, но я не смог исправить свою иссе, возможно, потому что у меня немного другой сценарий. В любом случае, я последовал предложению @ABM Nazibullah:

Замена FindCUDA.cmake и OpenCVDetectCUDA.cmake из https://github.com/opencv/opencv/tree/master/cmake (master branch-opencv 3.4.1) работает для меня для opencv_2.4.13 с графической картой NVIDIA TitanXP с архитектурой Pascal и cuda-9.0 в Ubuntu 16.04.

Infact, первый изменяемый файл, называемый "FindCUDA.cmake" был изменен правильно, в соответствии с предложением @ api55. Infact этот кусок кода был добавлен на месте старого:

if(CUDA_VERSION VERSION_GREATER "5.0")
  # In CUDA 5.5 NPP was splitted onto 3 separate libraries.
  find_cuda_helper_libs(nppc)
  #find_cuda_helper_libs(nppi)
  find_cuda_helper_libs(nppial)
  find_cuda_helper_libs(nppicc)
  find_cuda_helper_libs(nppicom)
  find_cuda_helper_libs(nppidei)
  find_cuda_helper_libs(nppif)
  find_cuda_helper_libs(nppig)
  find_cuda_helper_libs(nppim)
  find_cuda_helper_libs(nppist)
  find_cuda_helper_libs(nppisu)
  find_cuda_helper_libs(nppitc)
  find_cuda_helper_libs(npps)
  #set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
  set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig$
elseif(NOT CUDA_VERSION VERSION_LESS "4.0")
  find_cuda_helper_libs(npp)
endif()
if(NOT CUDA_VERSION VERSION_LESS "7.0")
  # cusolver showed up in version 7.0
  find_cuda_helper_libs(cusolver)
endif()

, а также этот кусок кода заменил старый:

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")

также этот код заменил старый:

unset(CUDA_nppial_LIBRARY CACHE)
  unset(CUDA_nppicc_LIBRARY CACHE)
  unset(CUDA_nppicom_LIBRARY CACHE)
  unset(CUDA_nppidei_LIBRARY CACHE)
  unset(CUDA_nppif_LIBRARY CACHE)
  unset(CUDA_nppig_LIBRARY CACHE)
  unset(CUDA_nppim_LIBRARY CACHE)
  unset(CUDA_nppist_LIBRARY CACHE)
  unset(CUDA_nppisu_LIBRARY CACHE)
  unset(CUDA_nppitc_LIBRARY CACHE)
  unset(CUDA_npps_LIBRARY CACHE)
  unset(CUDA_nvcuvenc_LIBRARY CACHE)
  unset(CUDA_nvcuvid_LIBRARY CACHE)

Что касается другого файла, называемого "OpenCVDetectCUDA.cmake" , я также изменил его точно так же, как объяснено там.

В конце концов, Я также добавил эту строку:

#include <cuda_fp16.h>

в этот заголовочный файл

/home/ziom/Scrivania/MonocularTotalCapture/opencv-2.4.13.6/modules/gpu/include/opencv2/gpu/device/common.hpp

, но ошибка не устранена.

...