Puncte:2

Mi-ar plăcea ca Kinect-ul meu 2 să fie recunoscut de Ubuntu 21.10 ca cameră web, dar gcc 10 nu este acceptat pentru compilarea libfreenect2 cu nvidia 470+CUDA 11

drapel in

Salutare tuturor iubitorilor de Linux/ubuntu din jur,

Încerc să rulez Kinect-ul meu pe Ubuntu 21.10. Comenzile pe care le-am lansat una câte una sunt următoarele:

marietto-BHYVE:/home/marietto# nvcc --version

nvcc: driver de compilator NVIDIA (R) Cuda
Drepturi de autor (c) 2005-2021 NVIDIA Corporation
Construit pe Mon_May__3_19:15:13_PDT_2021
Instrumente de compilare Cuda, versiunea 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0


marietto-BHYVE:/home/marietto/Scrivania/libfreenect2# nvidia-smi

| Versiunea driverului NVIDIA-SMI 470.86: 470.86 Versiunea CUDA: 11.4     

Conform acestui site:

https://stackoverflow.com/questions/6622454/cuda-incompatible-with-my-gcc-version

Pentru versiunile CUDA 11.1, 11.2, 11.3, 11.4.0 ----> versiunea GCC maxim acceptată = 10

Deci, ar trebui să fac:

MAX_GCC_VERSION=10

sudo apt install gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION

g++-10 este deja la cea mai recentă versiune disponibilă (10.3.0-11ubuntu1).
gcc-10 este deja la cea mai recentă versiune disponibilă (10.3.0-11ubuntu1).

sudo ln -s /usr/bin/gcc-10 /usr/lib/cuda/bin/gcc
sudo ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/lib/cuda/bin/gcc 
sudo ln -s /usr/bin/g++-$MAX_GCC_VERSION /usr/lib/cuda/bin/g++

deoarece versiunea cuda pe care am instalat-o necesită o versiune gcc nu mai mare de 10.

Mai târziu, conform acestui ghid:

https://www.notaboutmy.life/posts/run-kinect-2-on-ubuntu-20-lts/

Ar trebui să compilez libfreenect2 după cum urmează:

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/home/marietto/Desktop/libfreenect2

din păcate, se pare că nu va accepta gcc 10 pentru compilarea libfreenect2 :

marietto-BHYVE:/home/marietto/Scrivania/libfreenect2# make

[ 4%] Țintă construită generate_resources_tool
[ 7%] Construirea obiectului NVCC (Dispozitiv) CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o
În fișierul inclus din /usr/include/cuda_runtime.h:83,
                 din <linia de comandă>:
/usr/include/crt/host_config.h:139:2: eroare: #error -- versiune GNU neacceptată! Versiunile gcc ulterioare 10 nu sunt acceptate! Indicatorul nvcc „-allow-unsupported-compiler” poate fi folosit pentru a suprascrie această verificare a versiunii; totuși, utilizarea unui compilator gazdă neacceptat poate cauza eșec de compilare sau execuție incorectă la timpul de execuție. Folosiți pe propria răspundere.
  139 | #error -- versiune GNU neacceptată! Versiunile gcc ulterioare 10 nu sunt acceptate! Indicatorul nvcc „-allow-unsupported-compiler” poate fi folosit pentru a suprascrie această verificare a versiunii; totuși, utilizarea unui compilator gazdă neacceptat poate cauza eșec de compilare sau execuție incorectă la timpul de execuție. Folosiți pe propria răspundere.
      | ^~~~~
/home/marietto/Scrivania/libfreenect2/src/cuda_kde_depth_packet_processor.cu:39:10: eroare fatală: helper_math.h: Fișier sau director neexistent
   39 | #include <helper_math.h>
      | ^~~~~~~~~~~~~~~~
compilarea sa încheiat.
Eroare CMake la cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o.RelWithDebInfo.cmake:220 (mesaj):
  Eroare la generare
  /home/marietto/Scrivania/libfreenect2/CMakeFiles/cuda_compile_1.dir/src/./cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o
make[2]: *** [CMakeFiles/freenect2.dir/build.make:103: CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o] Eroare 1
make[1]: *** [CMakeFiles/Makefile2:194: CMakeFiles/freenect2.dir/all] Eroare 2
make: *** [Makefile:149: all] Eroare 2
Puncte:1
drapel in

Am găsit soluția citind tutorialele de mai jos:

https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa

și :

Cum să alegi versiunea implicită gcc și g++?

dar eroarea fișierului „helper_math.h” lipsă persistă, așa că trebuie să încep o altă postare.

drapel cc
helper_math.h se găsește în mostrele cuda. Sunt instalate pe sistemul dvs.?
Puncte:0
drapel ir

în general, găsesc că este mai bine să rămân la oricare dintre versiunile Ubuntu LTS... 18.04 sau 20.04 etc... deoarece acestea tind să fie mai bine susținute de lucruri precum driverele nvidia etc.

Deci sunt pe Ubuntu 20.04 și am instalat cuda făcând asta

eliminați toate acele link-uri simbolice pe care le-ați creat pentru a suprascrie versiunile compilatorului

Software și actualizări -> Drivere suplimentare -> alege Nouveau

cd /var/crash # eliminați toate fișierele de aici

cd /etc/apt

grep -r cuda * # vă oferă, de exemplu, fișierul /etc/apt/sources.list.d/cuda-ubuntu2004-11-6-local.list

acum eliminați orice fișier returnat de comanda de mai sus sau doar comentați toate liniile din interiorul fișierului (fișierelor)

reporniți

Acum instalați cuda (se va instala automat driverele nvidia potrivite, DAR trebuie să începeți de la a utiliza Nouveau)

https://developer.nvidia.com/cuda-downloads Linux -> x86_64 -> Ubuntu -> 20.04 -> deb (local)

mai sus vă duce la link

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

mai sus vă arată pur și simplu dedesubt pe care apoi vă emiteți

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin

sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-ubuntu2004-11-6-local_11.6.0-510.39.01-1_amd64.deb


sudo dpkg -i cuda-repo-ubuntu2004-11-6-local_11.6.0-510.39.01-1_amd64.deb


sudo apt-key add /var/cuda-repo-ubuntu2004-11-6-local/7fa2af80.pub


sudo apt-get update


sudo apt-get -y install cuda

reporniți

nvidia-smi
Luni 17 ian 13:20:46 2022       
+--------------------------------------------- ----------------------------+
| NVIDIA-SMI 510.39.01 Versiune driver: 510.39.01 Versiune CUDA: 11.6 |
|-------------------------------+------------------ -----+----------------------+
| Persistența numelui GPU-M| Autobuz-Id Disp.A | Volatil Uncorr. ECC |
| Fan Temp Perf Pwr:Utilizare/Cap| Utilizarea memoriei | GPU-Util Compute M. |
| | | MIG M. |
|================================+================== =====+=======================|
| 0 NVIDIA GeForce ... Pornit | 00000000:02:00.0 Activat | N/A |
| 0% 56C P0 29W / 190W | 1362 MiB / 6144 MiB | 25% Implicit |
| | | N/A |
+-------------------------------+----------------- -----+----------------------+
                                                                               
+--------------------------------------------- ----------------------------+
| Procese: |
| GPU GI CI Tip PID Nume proces Memorie GPU |
| ID ID Utilizare |
|=================================================== =============================|
| 0 N/A N/A 1280 G /usr/lib/xorg/Xorg 101MiB |
| 0 N/A N/A 1965 G /usr/lib/xorg/Xorg 656MiB |
| 0 N/A N/A 2110 G /usr/bin/gnome-shell 82MiB |
| 0 N/A N/A 2493 G ...AAAAAAAAA= --shared-files 19MiB |
| 0 N/A N/A 4865 G ...167530988844266480,131072 19MiB |
| 0 N/A N/A 6981 G ...axaca/src/firefox/firefox 230MiB |
| 0 N/A N/A 8585 G ...AAAAAAAAA= --shared-files 39MiB |
| 0 N/A N/A 10141 G ...AAAAAAAAA= --shared-files 68MiB |
| 0 N/A N/A 10638 G ...AAAAAAAAA= --shared-files 114MiB |
+--------------------------------------------- ----------------------------+

nvcc --version

nvcc: driver de compilator NVIDIA (R) Cuda
Drepturi de autor (c) 2005-2021 NVIDIA Corporation
Construit pe Fri_Dec_17_18:16:03_PST_2021
Instrumente de compilare Cuda, versiunea 11.6, V11.6.55
Build cuda_11.6.r11.6/compiler.30794723_0

cat proc/driver/nvidia/version

Versiunea NVRM: NVIDIA UNIX x86_64 Kernel Module 510.39.01 Vin. 31 Dec 11:03:22 UTC 2021
Versiunea GCC: versiunea gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04) 

Odată ce faci mai sus, repo-ul tău git se compilează OK, după cum se arată mai jos

gcc --version

gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 Drepturi de autor (C) 2019 Free Software Foundation, Inc. Acesta este software gratuit; consultați sursa pentru condițiile de copiere. Nu este garanție; nici măcar pentru VANTABILITATE sau ADEPTEREA PENTRU UN ANUMIT SCOP.

g++ --versiune

g++ (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 Drepturi de autor (C) 2019 Free Software Foundation, Inc. Acesta este software gratuit; consultați sursa pentru condițiile de copiere. Nu este garanție; nici măcar pentru VANTABILITATE sau ADEPTEREA PENTRU UN ANUMIT SCOP.

oaxaca@wasayama ~/src/doitt/github.com/OpenKinect/libfreenect2/build $ cmake .. 
-- Identificarea compilatorului C este GNU 9.4.0
-- Identificarea compilatorului CXX este GNU 9.4.0
-- Verificați dacă compilatorul C funcționează: /usr/bin/cc
-- Verificați dacă compilatorul C funcționează: /usr/bin/cc -- funcționează
-- Detectarea informațiilor ABI al compilatorului C
-- Detectarea informațiilor ABI al compilatorului C - gata
-- Detectarea caracteristicilor de compilare C
-- Detectarea caracteristicilor de compilare C - gata
-- Verificați dacă compilatorul CXX funcționează: /usr/bin/c++
-- Verificați dacă compilatorul CXX funcționează: /usr/bin/c++ -- funcționează
-- Detectarea informațiilor ABI al compilatorului CXX
-- Detectarea informațiilor ABI al compilatorului CXX - gata
-- Detectarea caracteristicilor de compilare CXX
-- Detectarea caracteristicilor de compilare CXX - gata
-- folosind tinythread ca bibliotecă de threading
-- PkgConfig găsit: /usr/bin/pkg-config (versiunea găsită „0.29.1”) 
-- Verificarea modulului „libusb-1.0>=1.0.20”
-- S-a găsit libusb-1.0, versiunea 1.0.23
-- Verificarea modulelor „libva;libva-drm”
-- S-a găsit libva, versiunea 1.7.0
-- S-a găsit libva-drm, versiunea 1.7.0
-- JPEG găsit: /usr/lib/x86_64-linux-gnu/libjpeg.so (versiunea găsită „80”) 
-- NU s-a putut găsi TegraJPEG (lipsește: TegraJPEG_LIBRARIES TegraJPEG_INCLUDE_DIRS TegraJPEG_WORKS) 
-- Se efectuează testul TURBOJPEG_WORKS
-- Efectuarea testului TURBOJPEG_WORKS - Succes
-- TurboJPEG găsit: /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0  
-- Verificarea modulului „glfw3”
-- S-a găsit glfw3, versiunea 3.3.2
Avertisment CMake (dev) la /usr/share/cmake-3.16/Modules/FindOpenGL.cmake:275 (mesaj):
  Politica CMP0072 nu este setată: FindOpenGL preferă GLVND în mod implicit când
  disponibil. Rulați „cmake --help-policy CMP0072” pentru detalii despre politică. Folosește
  comanda cmake_policy pentru a seta politica și a suprima acest avertisment.

  FindOpenGL a găsit atât o bibliotecă GL moștenită:

    OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so

  și biblioteci GLVND pentru OpenGL și GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so

  OpenGL_GL_PREFERENCE nu a fost setat la „GLVND” sau „LEGACY”, deci pentru
  va fi utilizată compatibilitatea cu CMake 3.10 și mai jos, biblioteca GL moștenită.
Stack de apeluri (cel mai recent apel mai întâi):
  CMakeLists.txt:269 (FIND_PACKAGE)
Acest avertisment este pentru dezvoltatorii de proiecte. Utilizați -Wno-dev pentru a-l suprima.

-- S-a găsit OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- Se caută CL_VERSION_2_0
-- Se caută CL_VERSION_2_0 - găsit
-- S-a găsit OpenCL: /usr/lib/x86_64-linux-gnu/libOpenCL.so (s-a găsit versiunea „2.0”) 
-- Efectuarea testului OpenCL_C_WORKS
-- Efectuarea testului OpenCL_C_WORKS - Succes
-- Efectuarea testului OpenCL_CXX_WORKS
-- Efectuarea testului OpenCL_CXX_WORKS - Succes
-- Caut pthread.h
-- Căutând pthread.h - găsit
-- Se efectuează testul CMAKE_HAVE_LIBC_PTHREAD
-- Efectuarea testului CMAKE_HAVE_LIBC_PTHREAD - Eșuat
-- Căutăm pthread_create în pthreads
-- Se caută pthread_create în pthreads - nu a fost găsit
-- Căutăm pthread_create în pthread
-- Căutând pthread_create în pthread - găsit
-- Threads găsite: TRUE  
-- CUDA găsit: /usr/local/cuda (versiunea găsită „11.6”) 
-- Se efectuează testul COMPILER_HAS_HIDDEN_VISIBILITY
-- Se efectuează testul COMPILER_HAS_HIDDEN_VISIBILITY - Succes
-- Se efectuează testul COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Se efectuează testul COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Succes
-- Se efectuează testul COMPILER_HAS_DEPRECATED_ATTR
-- Se efectuează testul COMPILER_HAS_DEPRECATED_ATTR - Succes
-- Conectarea cu aceste biblioteci: 
 /usr/lib/x86_64-linux-gnu/libusb-1.0.so
 pthread
 va-drm
 va
 /usr/lib/x86_64-linux-gnu/libjpeg.so
 /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0
 /usr/lib/x86_64-linux-gnu/libglfw.so
 /usr/lib/x86_64-linux-gnu/libGL.so
 /usr/lib/x86_64-linux-gnu/libOpenCL.so
 /usr/local/cuda/lib64/libcudart_static.a
 -lpthread
 dl
 /usr/lib/x86_64-linux-gnu/librt.so
-- Doxygen găsit: /usr/bin/doxygen (versiunea găsită „1.8.17”) Componente găsite: doxygen dot 
-- Exemple de configurare
-- Folosind ținta freenect2 în arbore
-- Verificarea modulului „libopenni2”
-- S-a găsit libopenni2, versiunea 2.2.0.3
-- S-a găsit OpenNI2: /usr/lib  
-- Listă de caracteristici:
-- CUDA da
-- CXX11 dezactivat
-- Exemple da
-- OpenCL da
-- OpenGL da
-- OpenNI2 da
-- TegraJPEG nr
-- Threading tinythread
-- TurboJPEG da
-- VAAPI da
-- VideoToolbox nu (numai Apple)
-- streamer_recorder dezactivat
-- Configurare finalizată
-- Generarea gata
-- Fișierele de compilare au fost scrise pe: /home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/build

Unde se află fișierul helper_math.h?

oaxaca@wasayama ~/src/doitt/github.com/OpenKinect/libfreenect2/build $ make -j16
Dependențe de scanare ale țintei generate_resources_tool
[ 3%] Construirea obiectului CXX CMakeFiles/generate_resources_tool.dir/tools/generate_resources.cpp.o
[ 6%] Conectarea executabilului CXX bin/generate_resources_tool
[ 6%] Țintă construită generate_resources_tool
[ 15%] Generarea de resurse.inc.h
[ 15%] Construirea obiectului NVCC (Dispozitiv) CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o
[ 15%] Construirea obiectului NVCC (Dispozitiv) CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_depth_packet_processor.cu.o
/home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/src/cuda_depth_packet_processor.cu:31:10: eroare fatală: helper_math.h: Nu există un astfel de fișier sau director
   31 | #include <helper_math.h>
      | ^~~~~~~~~~~~~~~~
compilarea s-a încheiat.
/home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/src/cuda_kde_depth_packet_processor.cu:39:10: eroare fatală: helper_math.h: Nu există un astfel de fișier sau director
   39 | #include <helper_math.h>
      | ^~~~~~~~~~~~~~~~
compilarea s-a încheiat.
Eroare CMake la cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o.RelWithDebInfo.cmake:220 (mesaj):
  Eroare la generare
  /home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/build/CMakeFiles/cuda_compile_1.dir/src/./cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o

Eroare CMake la cuda_compile_1_generated_cuda_depth_packet_processor.cu.o.RelWithDebInfo.cmake:220 (mesaj):
  Eroare la generare
  /home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/build/CMakeFiles/cuda_compile_1.dir/src/./cuda_compile_1_generated_cuda_depth_packet_processor.cu.o



make[2]: *** [CMakeFiles/freenect2.dir/build.make:84: CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o] Eroare 1
make[2]: *** Aștept lucrări neterminate....
make[2]: *** [CMakeFiles/freenect2.dir/build.make:77: CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_depth_packet_processor.cu.o] Eroare 1
make[1]: *** [CMakeFiles/Makefile2:118: CMakeFiles/freenect2.dir/all] Eroare 2
make: *** [Makefile:130: all] Eroare 2
drapel in
multumesc dar nu pot urma tutorialul tau. Ai folosit o versiune ubuntu mai mică decât a mea, cu un driver nvidia mai scăzut și o versiune mai mică de gcc. Înseamnă că ar trebui să recreez totul. Nu este o idee bună. Vreau să păstrez ubuntu 21.10 ca sistem de operare principal. Poate pot accepta să elimin / upgrade driverele (vechi) ubuntu și (reinstalarea / upgrade-ul) bibliotecile cuda.
Scott Stensland avatar
drapel ir
@Marietto Voi încerca în seara asta pe un alt laptop care folosește Ubuntu 22.04
drapel in
poti incerca cu ubuntu 21.10? este varianta mea. dacă utilizați 22.04, nu pot fi sigur că funcționează la fel când vă repet pașii.
Scott Stensland avatar
drapel ir
@Marietto Unde locuiește fișierul helper_math.h? vezi mai sus eroarea de compilare
drapel in
Am instalat gcc9 și am folosit ca implicit: https://pastebin.ubuntu.com/p/d49QPgG6WY/ ; tot nu merge.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.