CMake Erreur: les Variables sont définies à NOTFOUND
J'ai installé la première utilisation de cuda cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
. Maintenant je suis en train d'installer OpenCV 3.3.0
Mais je suis de CMake Erreur:
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)
Et puis une très longue liste de cibles comme:
linked by target "opencv_cudev" in directory /home/jjros/opencv-3.3.0/modules/cudev
J'utilise cette commande pour compiler la bibliothèque:
cmake
-D CMAKE_C_COMPILER=/usr/bin/gcc-5 \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_SHARED_LIBS=ON \
-D WITH_GTK=ON \
-D BUILD_EXAMPLES=ON \
-D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
Comment pouvez configurer mon CMakeLists? Ce qui ne va pas?
OpenCV est pas mis à jour de cuda 9... ce qui a été communiqué comme il y a une semaine. Dans cuda 9 ils se sont séparés cette bibliothèque en petits. Certaines personnes de créer une bibliothèque qui a toutes les plus petits. Ici quelqu'un de tenter de modifier les fichiers cmake, mais une autre erreur par rapport à un manque de mathématiques variable
Également fixer la barre oblique sur cette ligne:
alors, que faites-vous m'en suggérer d'installer, sur les versions d'opencv et cuda pour l'installer et de l'installer en premier? J'utilise ubuntu 16.04
Je pense qu'avec CUDA 8.0 devrait fonctionner, ou vous essayez de modifier le cmake, en ajoutant toutes les bibliothèques de la nppi bibliothèque divisée et la suppression de la nppi de la bibliothèque. Je vais essayer le dernier aujourd'hui, si cela fonctionne, je vais répondre à la question en détail. Cependant, je serais à l'aide de Windows au lieu de Ubuntu pour mon test, mais il devrait être le même correctif
Également fixer la barre oblique sur cette ligne:
-D WITH_GTK=ON /
alors, que faites-vous m'en suggérer d'installer, sur les versions d'opencv et cuda pour l'installer et de l'installer en premier? J'utilise ubuntu 16.04
Je pense qu'avec CUDA 8.0 devrait fonctionner, ou vous essayez de modifier le cmake, en ajoutant toutes les bibliothèques de la nppi bibliothèque divisée et la suppression de la nppi de la bibliothèque. Je vais essayer le dernier aujourd'hui, si cela fonctionne, je vais répondre à la question en détail. Cependant, je serais à l'aide de Windows au lieu de Ubuntu pour mon test, mais il devrait être le même correctif
OriginalL'auteur Ja_cpp | 2017-10-05
Vous devez vous connecter pour publier un commentaire.
J'ai essayé ce qui suit, et cela a fonctionné:
Changement dans
FindCUDA.cmake
lanppi
de la bibliothèque de la plusieurs coupée en deux. Cela doit être fait en 3 endroits. Rappelez-vous ce changement est juste pour le faire fonctionner avec CUDA 9.0, je ne fais pas de vérifications pour la version ou quoi que ce soit, ce qui devrait être fait si vous envisagez de donner à différentes personnes avec différentes CUDA versions.1) regarder pour la ligne avec:
et de le remplacer avec les lignes:
2) trouver la ligne:
et de le modifier pour
3) trouver les unset les variables et ajouter les nouvelles variables ainsi
Donc, trouver:
et à le modifier:
Et aussi dans
OpenCVDetectCUDA.cmake
vous devez supprimer le 2.0 architecture qui n'est plus supporté.Il a:
Il devrait être:
Fondamentalement, j'ai enlevé la première et si la première elif se tourne vers un si.
Comme mentionné par @matko
Il dispose également d' :
Qui devrait être changé en:
Une dernière chose, il est nécessaire. CUDA 9.0 a un fichier séparé pour les halffloat (
cuda_fp16.h
) maintenant. Ce doit être inclus dans OpenCV.De CUDA 9.0 manuel:
Pour ce faire, vous devez ajouter:
dans le fichier d'en-tête
Ce sont les bases pour une certaine patch pour OpenCV. Ce qu'il manque, ainsi que je vous l'ai dit avant, je ne se soucient pas de CUDA versions (il a besoin d'un SI). Aussi, CUDA 9.0 a un tas de déprécié fonctions utilisées par OpenCV ... ce sera probablement remplacé par le OpenCV équipe à un certain point. Il est également possible que l'un ou plusieurs des découpé bibliothèques de nppi n'est pas utilisé.
Recommandations finales:
Pour ce genre de complexe cmakes avec autant d'options que vous devriez utiliser ccmake (
sudo apt-get install cmake-curses-gui
) pour être en mesure de modifier facilement les variables, ou au moins de visualiser les valeurs, ou d'une véritable interface graphique.Pour d'autres personnes avec windows et visual studio 7, j'ai aussi dû changer le
CUDA_HOST_COMPILER
variable, sinon, vous obtenez un tas d'erreurs aveccmd.exe exit with code 1
ou quelque chose de similaire... il semble qu'il ne pouvait pas y aller avec le détectée.Cela a fonctionné pour moi avec OpenCV 3.3 et CUDA 9.0 et Visual Studio 2017 avec Windows 10. Je pense que cela devrait fonctionner également dans Ubuntu, étant donné que l'erreur et les changements sont liés à CUDA. Je n'ai pas testé beaucoup, j'ai compilé et exécuté quelques-uns des tests de performance et tous ont passé... Donc je pense que tout a fonctionné.
c'est aussi dans la réponse, mais probablement la variable n'est jamais annuler/réinitialiser, vous pouvez supprimer le dossier de création et de commencer à nouveau, ou vous pouvez définir la variable de la suppression de 2.0 à partir de la cuda_arch_bin, depuis l'architecture Fermi est plus pris en charge dans CUDA 9.0
Vraiment très utile. Merci pour ce guide détaillé. Vous devriez blog quelque part.
Merci pour votre réponse, il me sauve.
OriginalL'auteur api55
@api55 je me suis basé sur ce processus peut être achevé, mais encore la rencontre de @Ja_cpp problème (CMake Erreur à cuda_compile_generated_gpu_mat.cu.o.cmake:208 (message)), dans mon processus, mais aussi besoin d'ajouter
dans
Il a:
changement:
Il a travaillé pour moi.
OriginalL'auteur max ko
Remplacement FindCUDA.cmake et OpenCVDetectCUDA.cmake de https://github.com/opencv/opencv/tree/master/cmake (branche master - opencv 3.4.1) fonctionne pour moi pour opencv_2.4.13 avec NVIDIA TitanXP carte graphique de Pascal Architecture et avec cuda-9.0 sur Ubuntu 16.04.
/usr/bin/ld: cannot find -lcudart /usr/bin/ld: cannot find -lnppc /usr/bin/ld: cannot find -lnppial /usr/bin/ld: cannot find -lnppicc /usr/bin/ld: cannot find -lnppicom /usr/bin/ld: cannot find -lnppidei /usr/bin/ld: cannot find -lnppif /usr/bin/ld: cannot find -lnppig /usr/bin/ld: cannot find -lnppim /usr/bin/ld: cannot find -lnppist ...
OriginalL'auteur A. B. M. Nazibullah
J'ai également eu à faire ce qui suit dans OpenCVDetectCUDA.cmake:
remplacer
avec
OriginalL'auteur Mudassir Khan
@api55 solution permet de résoudre les erreurs liées à
CUDA_nppi_LIBRARY
. Il suffit donc de suivre les étapes et ça marche (pour moi surUbuntu 16.04
avecopencv 3.3
).Assurez-vous que votre architecture GPU est pris en charge. J'ai
Fermi
qui n'est plus supporté. La solution est d'installerCuda-8
avecgcc-5
compilateur lors de l'installation deopencv 3.3
avec la prise en charge cuda.OriginalL'auteur Ja_cpp
Essayé la voie api555 dit, mais quand cmake, il a également construire sm20, j'ai fait un peu plus, de deux façons:
1.dans le fichier OpenCVDetectCUDA.cmake, ligne 133, dans la "
foreach(ARCH IN LISTS ARCH_LIST)
" boucle,ajouter"
elseif(ARCH MATCHES "20")
"entre if et else.
2.dans le fichier OpenCVDetectCUDA.cmake, ligne 46,
"
set(_generations "Fermi" "kepler" "Maxwell" "Pascal")
"il suffit de supprimer le "Fermi"
Je préfère la seconde solution, peut-il faire un peu d'aide.
OriginalL'auteur Allen Chan