Xavier/JetPack 5.0.2/Getting Started/Components: Difference between revisions

no edit summary
No edit summary
Line 3: Line 3:
</noinclude>
</noinclude>


== JetPack Components ==
This section provides an overview of some of the main software components provided in Jetpack 5.0 for the Orin AGX.


{| class="wikitable" style="margin-right: 22em;"
 
==Jetpack Components==
Table 1 provides the versions of the key packages included in Jetpack 5.0, and the version previously available in Jetpack 4.6.1:
<br>
 
 
{| class="wikitable" style="margin: auto;"
|+ Table 1: Version of Jetpack components
|-
|-
! Package  
! Package  
! Version
! Jetpack 5.0 Version
! Description
! Jetpack 4.6.1 Version
|-
| Linux for Tegra (L4T)
| 31.0.2
| Operative System, includes toolchain, u-boot, kernel and filesystem (Reference filesystem is now derived from Ubuntu 18.04),
NVIDIA Tegra User Space Drivers and sample applications.
|-
|-
| L4T Multimedia API
| '''Linux for Tegra'''
| Argus 0.97
| 34.1
| Multimedia API is a collection of lower-level APIs that support flexible application development providing better control over the underlying hardware blocks.
| 32.7.1
|-
|-
| TensorRT
| '''CUDA'''
| 5.0 RC
| 11.4
| A platform for high-performance deep learning inference. It includes a deep learning inference optimizer and runtime that delivers low latency and high-throughput for deep learning inference applications.  
| 10.2
|-
|-
| cuDNN  
| '''cuDNN'''
| 7.3
| 8.3.2 
| The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalization, and activation layers.
| 8.2.1
|-
|-
| CUDA
| '''TensorRT'''
| 10
| 8.4.0 Early Access
| CUDA Toolkit is a software development platform for building GPU-accelerated applications. The toolkit includes a compiler for NVIDIA GPUs, math libraries, and tools for debugging and optimizing the performance of your applications.
| 8.2.1
|-  
| '''OpenCV'''
| 4.5.4 (Developer Preview)
| 4.1.1
|-
|-
| VisionWorks
| ''' Vision Programing Interface (VPI) '''
| 1.6
| 2.0
| VisionWorks is a software development package for computer vision (CV) and image processing.
| 1.2
|-
|-
| OpenCV
| 3.3.1
| Computer vision library for C++.
|}
|}
<br>


== L4T ==


L4T (Linux for Tegra) is the NVIDIA Linux OS version, with changes to support its platforms and integrate custom functionalities to manage Kernel, Device Tree and User Space features. It also includes all the drivers and device tree changes to support the EVM carrier boards. Additional libraries and support to easily use the display and image processing capabilities are added, in order to use the GPU force exposed by the NVIDIA platforms.
=== Linux for Tegra===


Features:
Linux for Tegra (L4T) is the component that provides the OS components (kernel, file system, drivers, firmware) and the bootloader. Jetpack 5.0 comes with L4T version 34.1, featuring:
* Kernel version 4.9
* Support for 64-bit userspace and runtime libraries
* Vulkan Support
* V4L2 media-controller driver support for camera sensors (bypassing ISP)
* libargus provides low-level frame-synchronous API for camera applications
** RAW output CSI cameras needing ISP can be used with either libargus or GStreamer plugin
* Media APIs:
** OpenGL 4.6 Beta
** OpenGL ES 3.2
** OpenGL ES path extensions
** EGL 1.5 with EGLImage
* X Resize, Rotate and Reflect Extension (RandR) 1.4
* X11 Support


== Multimedia API ==
* '''Linux Kernel version 5.10''': the previous Jetpack version (4.6) came with Linux Kernel version 4.9.
Multimedia API also is known as MMAPI is a collection of lower-level APIs that support application development. MMAPI is for developers who use a custom framework or wish to avoid a framework like GStreamer.  
* '''Ubuntu 20.04-based root file system''': the previous Jetpack version (4.6) came with Ubuntu 18.04-based root file system.
* '''UEFI-based bootloader''': CBoot was used prior to L4T 34.1.
<!--* '''Jetson Orin NX performance emulation on Jetson AGX Orin''':-->
* '''Support for NVSCI''': Provides utilities for streaming data packets between different applications and for inter-process communication (IPC).
* '''Toolchain''': aarch64  gcc-9.3-glibc-2.31 for 64-bit Kernel and user space.
* '''Jetson Power GUI''': a new tool for monitoring the power and thermal status of the Jetson platform.
<br>


MMAPI should be downloaded separately from the NVIDIA Jetson Download Center [https://developer.nvidia.com/embedded/dlc/l4t-multimedia-api-31-0-1 L4T Multimedia API 31.0.1 ]
==== Multimedia API ====
Included as part of L4T, the Multimedia API allows developers to develop camera-based multimedia applications. It has two main components:
<br>


Components:


* '''Libargus''' for imaging applications.
* V4L2 Sensor driver API: the V4L2 API that enables the capture devices, codecs, and scaling functionality.
* '''Buffer utility''' for buffer allocation, management, and sharing.
* Libargus: the proprietary NVIDIA library that allows using the Jetson Image Signal Processor (ISP).
* '''NVOSD''' for On-Screen display.
<br>
* '''V4l2 API extensions''' for video converter, decoder and encoder support.
* '''Aplication framework'''
* '''Samples''' that demonstrate image processing with CUDA, object detection, and classification with cuDNN, TensorRT, and OpenCV4Tegra usage.


== TensorRT ==
TensorRT is a C++ library that facilitates high-performance inference on NVIDIA platforms. It is designed to work with the most popular deep learning frameworks, such as TensorFlow, Caffe, PyTorch, etc. It focuses specifically on running an already trained model, to train the model, other libraries like cuDNN are more suitable. Some frameworks like TensorFlow have integrated TensorRT so that it can be used to accelerate inference within the framework. For other frameworks like Caffe, a parser is provided to generate a model that can be imported on TensorRT. For more information on using this library read our wiki [[Xavier/Deep_Learning/TensorRT|here]]


== CUDA ==
JetPack 5.0 Multimedia API features new NVUtils Multimedia buffer management and buffer transformation API. Previous nvbuf_utils is deprecated in this release.
<br>


CUDA is a parallel computing platform and programming model developed by NVIDIA for general computing on graphical processing units (GPUs). With CUDA developers are able to dramatically speed up computing applications by harnessing the power of GPUs.


You can learn more about the Volta GPU characteristics and CUDA support on our [[Xavier/Processors/GPU|Volta GPU]] wiki page.
=== CUDA ===
Jetpack 5.0 includes CUDA 11.4 support. CUDA is a parallel computing API for NVIDIA GPUs. NVIDIA's CUDA Toolkit provides the development environment for creating GPU-accelerated applications in C/C++. Starting with CUDA 11, the various components in the toolkit are versioned independently. Table 2 provides the CUDA 11.4 components version information:
<br>


For a complete summary of the samples go to the [[Xavier/Processors/GPU/CUDA|CUDA]] section.


==VisionWorks==
{| class="wikitable" style="margin: auto;"
VisionWorks is a software development package for computer vision (CV) and image processing. It implements and extends the Khronos OpenVX standard and has optimizations using the Xavier's GPU.
|+ Table 2: CUDA 11.4 components version
 
|-
VisionWorks is installed with the JetPack and includes samples that can be used as a starting point for development. The source code is located in <code>/usr/share/visionworks/sources/</code> and should be moved using the following commands
! Component Name
 
! Version Information
<syntaxhighlight lang=bash>
! Supported Architectures
/usr/share/visionworks/sources/install-samples.sh ~/
|-
cd ~/VisionWorks-1.6-Samples/
| CUDA Runtime (cudart)
make -j4 # add dbg=1 to make debug build
| 11.4.148
</syntaxhighlight>
| x86_64, POWER, Arm64
 
|-
this will compile all the samples and save them into the <code>~/VisionWorks-1.6-Samples/bin</code> directory, individual samples can be compiled from their own directory but the executable will be stored in the same directory as when all samples are built from the top directory.
|cuobjdump
 
|11.4.120
{| class="wikitable"
|x86_64, POWER, Arm64
|-
|CUPTI
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA cuxxfilt (demangler)
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA Demo Suite
|11.4.100
|x86_64
|-
|CUDA GDB
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA Memcheck
|11.4.120
|x86_64, POWER
|-
|CUDA NVCC
|11.4.152
|x86_64, POWER, Arm64
|-
|CUDA nvdisasm
|11.4.152
|x86_64, POWER, Arm64
|-
|CUDA NVML Headers
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA nvprof
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA nvprune
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA NVRTC
|11.4.152
|x86_64, POWER, Arm64
|-
|CUDA NVTX
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA NVVP
|11.4.193
|x86_64, POWER
|-
|CUDA Samples
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA Compute Sanitizer API
|11.4.120
|x86_64, POWER, Arm64
|-
|CUDA Thrust
|11.4.122
|x86_64, POWER, Arm64
|-
|CUDA cuBLAS
|11.6.5.2
|x86_64, POWER, Arm64
|-
|CUDA cuFFT
|10.5.2.100
|x86_64, POWER, Arm64
|-
|CUDA cuFile
|1.0.2.10
|x86_64
|-
|CUDA cuRAND
|10.2.5.120
|x86_64, POWER, Arm64
|-
|CUDA cuSOLVER
|11.2.0.120
|x86_64, POWER, Arm64
|-
|CUDA cuSPARSE
|11.6.0.120
|x86_64, POWER, Arm64
|-
|-
! Sample !! Description
|CUDA NPP
|11.4.0.110
|x86_64, POWER, Arm64
|-
|-
| Feature Tracker || A local feature tracking demo using the Harris or FAST feature detector and tracks them using Lucas-Kanade algorithm.
|CUDA nvJPEG
|11.5.2.120
|x86_64, POWER, Arm64
|-
|-
| Stereo Matching || Uses the Semi-Global Matching algorithm to evaluate disparity and display the stereo matching.
|Nsight Compute
|2021.2.2.1
|x86_64, POWER, Arm64 (CLI only)
|-
|-
| CUDA Layer Object Tracker || Uses pyramidal Optical Flow to perform object tracking.
|NVTX
|1.21018621
|x86_64, POWER, Arm64
|-
|-
| Hough Transform || Detects circles and lines via the Hough Transform.
|Nsight Systems
|2021.3.2.4
|x86_64, POWER, Arm64 (CLI only)
|-
|-
| Video Stabilizer || Uses the Harris feature detector and sparse pyramidal optical flow to estimate and stabilize a frame's motion.
|Nsight Visual Studio Edition (VSE)
|2021.2.1.21205
|x86_64 (Windows)
|-
|-
| Motion Estimation || Implements the NVIDIA Iterative Motion Estimation algorithm to estimate motion in a frame.
|nvidia_fs1
|2.7.53
|x86_64
|-
|-
| OpenCV and NPP Interop || Shows interoperability of VisionWorks with the NPP and OpenCV library. It takes two images, blurs them, and performs alpha blending between them.
|Visual Studio Integration
|11.4.120
|x86_64 (Windows)
|-
|-
| OpenGL Interop || Shows interoperability of VisionWorks and OpenGL.
|NVIDIA Linux Driver
|470.82.01
|x86_64, POWER, Arm64
|-
|-
| Video Playback || Shows basic image and video I/O.
|NVIDIA Windows Driver
|472.50
|x86_64 (Windows)
|-
|-
| NVIDIA Gstreamer Camera Capture || Shows NVIDIA GStreamer camera access.
|}
|}
<!--The last update of CUDA 11.4 is Update 4, in which the Linux x86_64 Driver Version is >=470.82.01.-->
<br>
===CUDA Deep Neural Network (cuDNN)===
cuDNN is an NVIDIA library used by deep learning frameworks to accelerate common components, such as pooling, normalization, and backward convolution. Jetpack 5.0 comes with cuDNN 8.3.2, including bugfixes and new enhancements.
<br>
=== TensorRT ===
TensorRT is a framework created and published by NVIDIA for deep learning inference runtime. Jetpack 5.0 Developer Preview includes TensorRT 8.4.0 Early Access (EA). This EA is for early testing and feedback. For production, the documentation recommends continuing to use TensorRT 8.2.3 or later TensorRT 8.2.x patch. This version of TensorRT has support for CUDA 11.x.
TensorRT 8.4.0 EA has been tested with the following dependencies versions:
* cuDNN 8.3.2
* TensorFlow 1.15.5
* PyTorch 1.9.0
<br>
=== OpenCV ===
OpenCV is an Open Source library for computer vision tasks. Jetpack 5.0 supports OpenCV version 4.5.4.
<br>
=== Vision Programming Intervace (VPI) ===
VPI is a library provided by NVIDIA to easily take advantage of the power of the Programmable Vision Accelerator and the GPU. It brings Computer Vision and Image Processing algorithms implemented to run the PVA, OFA (Optical Flow Accelerator), GPU, and CPU. Jetpack 5.0 comes with VPI 2.0 version. To learn more about how you can use VPI along with GStreamer, visit our [[NVIDIA_Jetson_Orin/RidgeRun_Products/GstVPI|GstVPI]] section.
<br>


<noinclude>
<noinclude>
{{Xavier/Foot|JetPack 4.1‎/Getting Started/Wizard Flashing|JetPack 4.1‎/Compiling_Code}}
{{Xavier/Foot|JetPack 4.1‎/Getting Started/Wizard Flashing|JetPack 4.1‎/Compiling_Code}}
</noinclude>
</noinclude>
227

edits