Python examples on Nvidia Drive

Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.10.0
DRIVE OS 6.0.8.1
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other

Target Operating System
Linux
QNX
other

Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other, no Dev Kit

SDK Manager Version
2.1.0
other, none

Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other

Issue Description
I am trying out cuda and tensorrt examples as described here. The cpp examples work perfectly fine for on the Drive plattform.

Now I try to run the python examples e.g. this one/usr/src/tensorrt/samples/python/yolov3_onnx. When following the instructions in the Readme I have to execute pip3 install -r requirements.txt which installs onnx==1.9.0. I did this directly on the drive and got the following error:

Error String

53 |   template<typename> class auto_ptr;
            |                            ^~~~~~~~
      bpl-subset/bpl_subset/libs/thread/src/pthread/thread.cpp: In member function ‘bool pycudaboost::thread::do_try_join_until(const timespec&)’:
      bpl-subset/bpl_subset/libs/thread/src/pthread/thread.cpp:330:75: warning: control reaches end of non-void function [-Wreturn-type]
        330 |         detail::thread_data_ptr const local_thread_info=(get_thread_info)();
            |                                                                           ^
      aarch64-linux-gnu-g++ -pthread -Wno-unused-result -Wsign-compare -fwrapv -Wall -O3 -DNDEBUG -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION=1 -DBOOST_PYTHON_SOURCE=1 -Dboost=pycudaboost -DBOOST_THREAD_DONT_USE_CHRONO=1 -DPYGPU_PACKAGE=pycuda -DPYGPU_PYCUDA=1 -DHAVE_CURAND=1 -Isrc/cpp -Ibpl-subset/bpl_subset -I/tmp/pip-build-env-yp2xx8d6/overlay/lib/python3.8/site-packages/numpy/core/include -I/usr/include/python3.8 -c src/cpp/bitlog.cpp -o build/temp.linux-aarch64-cpython-38/src/cpp/bitlog.o
      aarch64-linux-gnu-g++ -pthread -Wno-unused-result -Wsign-compare -fwrapv -Wall -O3 -DNDEBUG -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION=1 -DBOOST_PYTHON_SOURCE=1 -Dboost=pycudaboost -DBOOST_THREAD_DONT_USE_CHRONO=1 -DPYGPU_PACKAGE=pycuda -DPYGPU_PYCUDA=1 -DHAVE_CURAND=1 -Isrc/cpp -Ibpl-subset/bpl_subset -I/tmp/pip-build-env-yp2xx8d6/overlay/lib/python3.8/site-packages/numpy/core/include -I/usr/include/python3.8 -c src/cpp/cuda.cpp -o build/temp.linux-aarch64-cpython-38/src/cpp/cuda.o
      In file included from src/cpp/cuda.cpp:4:
      src/cpp/cuda.hpp:14:10: fatal error: cuda.h: No such file or directory
         14 | #include <cuda.h>
            |          ^~~~~~~~
      compilation terminated.
      /tmp/pip-build-env-yp2xx8d6/overlay/lib/python3.8/site-packages/setuptools/command/build_py.py:220: _Warning: Package 'pycuda.cuda' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'pycuda.cuda' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'pycuda.cuda' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'pycuda.cuda' to be distributed and are
              already explicitly excluding 'pycuda.cuda' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      error: command '/usr/bin/aarch64-linux-gnu-g++' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pycuda
Failed to build onnx pycuda
ERROR: Failed to build installable wheels for some pyproject.toml based projects (onnx, pycuda)

The is probably because on the drive nvcc is missing: nvcc -version: nvcc::command not found.

So how should I install these requirements?
How do I get these python examples running under drive OS 6.0.4?

Best,
G

Dear @gwaibel,
Any reason for using DRIVE OS 6.0.4 instead of DRIVE OS 6.0.10(latest release)?

I could find nvcc in below location in DRIVE OS 6.0.10. Please check adding /usr/local/cuda/bin to PATH

nvidia@tegra-ubuntu:~$ ls /usr/local/cuda/bin/nvcc
/usr/local/cuda/bin/nvcc

I could find /usr/local/cuda-11.4/targets/aarch64-linux/include/cuda.h. The missing header files can be copied from docker environment.

Thanks for the fast answer. The reason for DRIVE OS 6.0.4 is that our camera driver only runs on this version.

I do not have nvcc:

ls /usr/local/cuda/bin/
cuda-gdb  cuda-gdbserver  cuobjdump  nvdisasm

Also in

ls /usr/local/cuda-11.4/targets/aarch64-linux/
lib

is the entire include folder missing.

Could you check copying the missing header files from docker(nvcr.io/drive/driveos-sdk/drive-agx-orin-linux-aarch64-sdk-build-x86:6.0.4.0-0004-patch-01) to target?

So nvcc should also be available on the production-level dual orin setup and only on the dev kit?