Difference between revisions of "CUDA ISP for NVIDIA Jetson/Getting Started/Building CUDA ISP for NVIDIA Jetson"

From RidgeRun Developer Connection
Jump to: navigation, search
(Dependencies)
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<noinclude>
 
<noinclude>
{{CUDA ISP for NVIDIA Jetson/Head|previous=|next=|metakeywords=|metadescription=}}
+
{{CUDA ISP for NVIDIA Jetson/Head|previous=Getting Started/Getting the code|next=Getting Started/Building custom v4l2src element|metakeywords=|metadescription=}}
 
</noinclude>
 
</noinclude>
  
Line 7: Line 7:
 
== Dependencies==
 
== Dependencies==
  
{{Review|I think we should provide more hints. Ok. Here is a list but, where can we find them?|lleon}}
 
  
 
CUDA ISP has the following dependencies for building from source:
 
CUDA ISP has the following dependencies for building from source:
  
 
* CUDA/NPPI. See more about CUDA Toolkit in this link: [https://developer.nvidia.com/cuda-toolkit CUDA Toolkit].
 
* CUDA/NPPI. See more about CUDA Toolkit in this link: [https://developer.nvidia.com/cuda-toolkit CUDA Toolkit].
* libspdlog. You can see more about spdlog in this link: [https://github.com/gabime/spdlog SPDLog repository].
+
* libspdlog. You can see more about spdlog in this link: [https://github.com/gabime/spdlog spdlog repository].
 
* GstCUDA. This is another RidgeRun product. You can see more about it in the following link: [[GstCUDA]]
 
* GstCUDA. This is another RidgeRun product. You can see more about it in the following link: [[GstCUDA]]
 +
 +
In the following sections you can see how to install the dependencies mentioned before.
  
  
Line 28: Line 29:
 
=== CUDA L4T pacakge (NPPI library) ===  
 
=== CUDA L4T pacakge (NPPI library) ===  
  
 
{{Review|Be careful. Jetson is not compatible with CUDA 11.6. Most of X86 provides support but Jetson is a bit delicate. I would create a subsection dedicated to each platform|lleon}}
 
  
 
<pre style=background-color:yellow>
 
<pre style=background-color:yellow>
Line 57: Line 56:
  
 
==== x86 platforms ====   
 
==== x86 platforms ====   
* For x86 platforms, go to this link: [https://developer.nvidia.com/cuda-11-6-1-download-archive CUDA 11.6.1 download archive] and follow the selection menu.  
+
* For x86 platforms, go to this link: [https://developer.nvidia.com/cuda-downloads CUDA Toolkit 12.1 download archive] and follow the selection menu.  
* For Ubuntu x86 platforms you can follow this link: [https://developer.nvidia.com/cuda-11-6-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu CUDA 11.6.1 Ubuntu x86 Configuration]
 
  
 
3. Select the version depending on the ''lsb_release'' command executed above. We recommend using the '''deb (local)''' option for the installation.
 
3. Select the version depending on the ''lsb_release'' command executed above. We recommend using the '''deb (local)''' option for the installation.
Line 66: Line 64:
 
=== GstCUDA ===
 
=== GstCUDA ===
  
{{Review|Please, highlight that it is required for CUDA ISP in case they want to use it on GStreamer|lleon}}
+
GstCUDA is another RigdeRun product. This product is required for CUDA ISP if you want to use it with GStreamer applications. You can see more about this product in this link: [[GstCUDA|Get GstCUDA]]
  
GstCUDA is another RigdeRun product. This product is require for CUDA ISP if you want to use it with GStreamer applications. You can see more about this product in this link: [[GstCUDA|Get GstCUDA]]
+
=== Custom v4l2src element ===
 +
 
 +
To capture from a camera in raw format with a bits per pixel different from 0, you may require to recompile the GStreamer Plugins Good. Please, follow [[CUDA_ISP_for_NVIDIA_Jetson/Getting_Started/Building_custom_v4l2src_element|these steps]].
  
 
=== Documentation (optional) ===
 
=== Documentation (optional) ===
Line 103: Line 103:
  
 
The process should be similar in other systems, not based on Debian.
 
The process should be similar in other systems, not based on Debian.
 
{{Review|We do not need numpy nor pre-commit (it is only in developer mode)|lleon}}
 
  
 
== Building the project ==
 
== Building the project ==
Line 111: Line 109:
  
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
meson build
+
meson build --optimization 3 --prefix /usr -Denable-docs=disabled -Ddeveloper-mode=false
 
ninja -C build
 
ninja -C build
 
sudo ninja -C build install
 
sudo ninja -C build install
Line 118: Line 116:
 
For additional customization, you may refer to the following table of options:
 
For additional customization, you may refer to the following table of options:
  
{{Review|Fix this table accordingly. You can find the options by using <code>meson config</code>|lleon}}
 
  
 
<center>`
 
<center>`
Line 134: Line 131:
 
|-
 
|-
 
| --prefix /usr || Set the installation path of the library.  
 
| --prefix /usr || Set the installation path of the library.  
 +
|-
 +
| --optimization 3 || Set the optimization level to the maximum
 
|}
 
|}
 
<b>Table 1.</b> CUDA ISP configuration options (Meson)</caption>
 
<b>Table 1.</b> CUDA ISP configuration options (Meson)</caption>
 
</center>
 
</center>
 
 
 
 
 
 
 
 
 
 
 
 
 
  
  
Line 155: Line 141:
  
 
<noinclude>
 
<noinclude>
{{CUDA ISP for NVIDIA Jetson/Foot||}}
+
{{CUDA ISP for NVIDIA Jetson/Foot|Getting Started/Getting the code|Getting Started/Building custom v4l2src element}}
 
</noinclude>
 
</noinclude>

Latest revision as of 10:07, 31 March 2023


Previous: Getting Started/Getting the code Index Next: Getting Started/Building custom v4l2src element






Dependencies

CUDA ISP has the following dependencies for building from source:

  • CUDA/NPPI. See more about CUDA Toolkit in this link: CUDA Toolkit.
  • libspdlog. You can see more about spdlog in this link: spdlog repository.
  • GstCUDA. This is another RidgeRun product. You can see more about it in the following link: GstCUDA

In the following sections you can see how to install the dependencies mentioned before.


Core

Please, install them using (in Debian-based systems):

sudo apt install -y     \
    libspdlog-dev       \
    python3-dev

CUDA L4T pacakge (NPPI library)

The Jetpack default installation will flash and install all the necessary CUDA packages, including NPPI library. This section describes how to perform a manual installation, which is typically __NOT__ needed

Installation guide for CUDA:

1. You will need to know which distribution version you are using:

lsb_release -a

2. Depending on your platform follow the next instructions:

Jetson platforms

  • Depending on what Jetpack release you have installed on your Jetson, you might want to download the corresponding CUDA Toolkit version, including NPPI library. In the following table you can see which one you need. Click on the link and follow the selection menu.
Jetpack Release CUDA Toolkit version
JetPack 4.x Get CUDA 10.2 Toolkit
JetPack 5.x Get CUDA 11.4 Toolkit

x86 platforms

3. Select the version depending on the lsb_release command executed above. We recommend using the deb (local) option for the installation.

4. Once you have selected your system setup, NVIDIA will show you the installation instructions for those requirements.

GstCUDA

GstCUDA is another RigdeRun product. This product is required for CUDA ISP if you want to use it with GStreamer applications. You can see more about this product in this link: Get GstCUDA

Custom v4l2src element

To capture from a camera in raw format with a bits per pixel different from 0, you may require to recompile the GStreamer Plugins Good. Please, follow these steps.

Documentation (optional)

For the documentation, consider the following dependency:

  • doxygen

Please, install it using (in Debian-based systems):

sudo apt install -y     \
    doxygen             \

Meson building system

At the building system level:

  • ninja-build
  • python3-pip
  • pkg-config
  • meson

Please, install them using (in Debian-based systems):

sudo apt install -y \
     python3        \
     python3-pip    \
     ninja-build    \
     pkg-config

The process should be similar in other systems, not based on Debian.

Building the project

Once fulfilled the dependencies, you can run a default compilation with:

meson build --optimization 3 --prefix /usr -Denable-docs=disabled -Ddeveloper-mode=false
ninja -C build
sudo ninja -C build install

For additional customization, you may refer to the following table of options:


`
Configure Option Description
-Ddeveloper-mode=false Disable developer mode. Enabled by default.
-Denable-docs=disabled Skip documentation generation. Enabled by default.
-Denable-gst=disabled Skip building for GStreamer elements. Enabled by default.
-Denable-tests=disabled Skip building tests. Enabled by default.
--prefix /usr Set the installation path of the library.
--optimization 3 Set the optimization level to the maximum

Table 1. CUDA ISP configuration options (Meson)




Previous: Getting Started/Getting the code Index Next: Getting Started/Building custom v4l2src element