Jetson软件架构
下图显示了NVIDIA®Jetson™Linux架构。
以下部分描述了每个模块的组件。在本开发人员指南或其他地方,许多组件的名称是指向组件主留档的链接。一些组件具有带有附加描述的单独链接。
文档
本开发人员指南是JetsonLinux留档的核心组件。它描述了JetsonLinux的体系结构,并提供了有关如何使用其功能的信息。
的 Jetson Linux API 参考 提供有关JetsonLinuxAPI和API扩展的详细留档,可用于帮助您开发应用程序。
许多其他文档提供了与使用JetsonLinux进行应用程序开发有关的其他事项的信息,例如各种Jetson处理模块的数据表和模块开发工具包的用户指南。大多数这些文档和其他文档可以通过以下一个或多个访问:
-
本开发者指南的相关文档部分
-
Jetson下载中心,提供支持NVIDIA Jetson系列产品的软件和文档资源
-
Jetson软件文档NVIDIA文档网站的Jetson软件文档 部分
示例应用程序
-
多媒体示例源代码和应用程序 : 在JetsonLinux中执行多媒体处理的示例源代码。
-
本开发人员指南中提到了其他示例应用程序。
深度学习组件
Jetson系列产品专为深度学习而设计,深度学习是一种人工智能,它使计算设备能够通过经验“学习”如何最好地处理特定类别的问题。
-
NVIDIA® TensorRT ™ : NVIDIA英伟达TensorRT 为深度学习应用的生产部署提供高性能的神经网络推理引擎,可用于优化、验证和部署经过训练的神经网络,用于对Jetson平台进行推理,Multimedia API提供了使用该引擎的示例。
-
NVIDIA® CuDNN ™ : NVIDIA英伟达cuDNN 为深度神经网络提供GPU加速的原语库。cuDNN为标准例程提供高度调整的实现,例如前向和后向卷积、池化、归一化和激活层。
-
NVIDIA® Triton™ : 英伟达 TritonNVIDIA英伟达 Triton 是一种开源推理服务软件,有助于标准化模型部署和执行,并在生产中提供快速且可扩展的AI。
计算机视觉
计算机视觉涉及捕获和处理来自传感器(摄像头)的图像和视频流、跟踪特征以及执行各种类型的转换,例如去扭曲和颜色转换。
-
视觉编程接口 (VPI):一个软件库,可在Jetson模块中存在的多个硬件加速器上实现计算机视觉和图像处理算法。
-
OpenCV : 提供NVIDIA专门为Jetson平台优化的OpenCV版本。它包含特定于Jetson的优化,使其能够比OpenCV实现运行得更快。
OpenCV文档wed 可以在 OpenCV文档网站 .一般信息在opencv.org主要网站上。
加速计算
加速计算提供了高度优化的库,应用程序可以使用这些库在GPU上并行执行计算密集型的原语。
图形学
JetsonLinux为应用程序中的图形提供多种类型的支持。
-
Vulkan ® :一个低级API,为开发者提供直接访问GPU的能力。
-
OpenGL®ES :用于嵌入式系统上全功能2D和3D图形的跨平台API。
-
X_Driver : X驱动程序的GPU加速实现。
-
Wayland: Weston的GPU加速实现,Weston是一个基于Wayland协议的合成器。
-
LibDRM : 一个提供对Linux直接渲染管理器(DRM)访问的库。它包括一个驱动程序和一个用户空间库。Jetson Linux实现使用GPU来加速其操作。参见Jetson Linux API参考中 drm-nvdc-docs. h 的描述。
多媒体
多媒体组件支持视频流处理和其他类型的多媒体处理。
-
GStreamer : 提供更高级别的多媒体API。此框架提供与多媒体API相同类型的功能,但级别更高。
GStreamer框架包含在JetsonLinux发行版中。它由SDK管理器安装。
-
V4L2库 : 支持V4L2(Linux视频,版本2)API作为多媒体API的扩展;包括视频转换器、解码器和编码器。
传感器
传感器组件捕获来自传感器(摄像头)的输入并对其执行处理的初始阶段。它们为实现传感器处理提供高级构建块,并为许多步骤提供GPU加速。
-
Camera(Libargus/V4L2) : 基于相机核心堆栈的低级API。
SDK Manager将此组件作为多媒体API的一部分安装,该API提供了一组API,支持灵活的应用程序开发,并更好地控制底层硬件块。
-
SPE RTOS : 提供对 传感器处理引擎 (SPE),Jetson模块ARM的组件 ® 皮质 ™ 支持hardware-accelerated 传感器输入处理的R5微控制器。
-
PCI/以太网:
-
SPI/CAN/I 2 S API:
CUDA-X
NVIDIA®CUDA®是一个并行计算平台,可以轻松地将GPU用于通用计算,对于实现图形应用程序特别有用,它可以与几种编程语言中的任何一种一起使用。
CUDA-X是一个包,包括几个常见的面向图形的任务的基于CUDA和CUDA的实现。
板载支持包
JetsonLinux 板载支持包 (BSP)包含使用JetsonLinux开发和运行应用程序所需的所有软件。当前的JetsonLinuxBSP可从 JetsonLinux页面 在 NVIDIA开发者网站 . 它包括:
-
来源:捷信Linux是一个开源产品,源代码包含在捷信Linux发行版中。
-
示例根文件系统:源自Ubuntu发行版的根文件系统。您可以使用此根文件系统作为开发为您的应用程序量身定制的基础。
-
Jetson Linux 工具链 : 一套用于开发JetsonLinux应用程序的软件组件。
-
Jetson Linux 内核 : NVIDIA为在Jetson设备上使用而优化的UbuntuLinux内核版本。
-
Bootloader :为Jetson设备上的操作系统启动软件。
开发者工具
NVIDIA提供了一整套开发人员工具,用于编写、构建和调试JetsonLinux应用程序。
-
NVIDIA ® Nsight ™ : 英伟达Nsight 跨多个CPU内核配置应用程序执行情况,并通过识别代码的缓慢部分来帮助您提高应用程序性能。
在Linux主机上运行。支持所有Jetson产品。
-
Nsight Graphics : 通过控制台界面调试和配置OpenGL和OpenGL ES图形程序。
-
Nsight Systems Compute : 交互式配置CUDA应用程序的内核操作。通过用户交互界面和命令行工具提供详细的性能指标和API调试。
-
交叉编译器和诊断实用程序:JetsonLinuxBSP包括一个 工具链 用于在Ubuntu主机系统上编译应用程序,以及一套 开发工具 用于调试和优化它们。
-
Flashing 支持 : 用于帮助将软件刷新到Jetson设备的脚本和相关工具。
其他组件
-
JetsonLinux用户空间驱动程序:在用户空间中运行的NVIDIA驱动程序。
-
多媒体API(MMAPI):支持灵活应用程序开发的低级API的集合。多媒体API包括:
-
Libargus 用于成像应用
-
Buffer API 用于缓冲区分配、管理和共享
-
用于屏幕显示的NVOSD
-
应用程序框架API (可选)
MMAPI还包括演示使用CUDA进行图像处理以及使用cuDNN、TensorRT和OpenCV4Tegra进行目标检测和分类的示例。
MMAPI适用于使用自定义框架或希望避免使用GStreamer等框架的开发人员。
MMAPI必须从NVIDIA Jetson下载中心单独下载。它不包含在JetsonLinuxBSP中。
-
CUDA工具包
-
具有跨部署支持的Ubuntu主机工具包:主机的CUDA工具包。
-
CUDA工具包 : 用于Jetson开发工具包的CUDA工具包。
图形学
JetPack SDK
-
NVIDIA JetPack™ SDK 文档 : 提供您在Jetson平台上的开发详细信息。
-
示例:旨在为您提供使用Jetson开发平台的实践示例。