NVIDIA DRIVE OS
NVIDIA DRIVE ® OS 是参考操作系统和相关软件堆栈,专为在基于DRIVE AGX 的硬件上开发和部署自动驾驶汽车应用程序而设计。 NVIDIA DRIVE OS 为安全关键型应用程序提供安全可靠的执行环境,并提供安全启动、安全服务、防火墙和无线 (OTA) 更新等服务。
该自动驾驶汽车 (AV) 基础软件堆栈由嵌入式实时操作系统 (RTOS)、NVIDIA Hypervisor、 NVIDIA ® CUDA ® 库、 NVIDIA TensorRT™ 和其他经过优化的组件组成,可提供对 DRIVE AGX 硬件加速引擎的直接访问。
NVIDIA DRIVE OS 软件开发套件 (SDK) 包含跨 CPU、GPU 和其他 DRIVE AGX 硬件加速引擎构建、调试、分析和部署自动驾驶汽车和自动驾驶汽车应用程序所需的所有软件、库和工具。这些开发工具为并行计算和深度学习开发提供了优化的工作流程。
为了最大限度地提高生产力,NVIDIA DRIVE OS SDK 利用行业标准工具、技术和 API 来提供熟悉且舒适的高生产力开发环境。
DRIVE OS QNX for Safety 利用 Blackberry QNX OS for Safety 来满足功能安全 (FuSa) 要求。
具体技术
DriveWorks
NVIDIA ® DriveWorks SDK 通过提供利用 NVIDIA DRIVE 平台计算能力的综合模块库、开发人员工具和参考应用程序,使开发人员能够实施自动驾驶汽车 (AV) 解决方案。它旨在实现计算机的全部吞吐量限制,从而实现实时自动驾驶应用。
涉及技术:
- 高效利用 NVIDIA DRIVE 平台内的众多处理器。
- 优化硬件引擎之间的数据通信格式。
- 最小化数据副本。
- 最有效算法的实现和利用。
CUDA
CUDA® 是 NVIDIA 开发的并行计算平台和编程模型,用于 GPU 上的通用计算。 CUDA 支持 aarch64(armv8-A 架构中引入的 64 位状态)平台,并且通过可并行计算工作负载,开发人员可以在 NVIDIA DRIVE AGX 上实现显着的加速。
TensorRT
NVIDIA TensorRT™ 是一个高性能深度学习推理平台。它包括硬件感知的深度学习推理优化器和运行时,可为深度学习推理应用程序提供低延迟和高吞吐量。在 NVIDIA DRIVE AGX 上, TensorRT 针对 Xavier SoC 上的专用深度学习加速器 (DLA)。
自动驾驶车辆非常复杂,需要快速准确地感知周围环境才能实时做出决策。此功能需要高性能人工智能计算来实现自动驾驶所需的各种任务,包括多级传感器数据处理、障碍物检测以及交通标志和车道识别。
CUDA 和 TensorRT 的结合使车辆上运行的 DNN 能够高速处理传感器输入。这使得车辆能够实时处理来自各种传感器的数据,从而实现 4 级和 5 级自动驾驶能力,无需人类驾驶员的监督。
NvMedia
NvMedia 是一组高度优化的 API,可直接访问硬件加速的计算引擎和传感器,包括编码器/解码器、传感器输入处理、图像处理等。
NvMedia 提供以下主要优势:- 捕获多达 16 个相机传感器
- 最多两个来自 Xavier ISP 硬件和原始捕获的已处理输出
- 针对 NVIDIA 推荐的相机模块优化的专有自动曝光 (AE) 和自动白平衡 (AWB) 算法
- 同一四/三/双 SERDES 内的异构传感器配置
NVStreams
NvStreams 是一种高效的 API,可提供对高速数据传输的访问,从而实现自动驾驶车辆所需的复杂处理工作流。
NvStreams 提供以下主要优势:- 在引擎及其各自的 API 之间高效共享缓冲区
- 同步和数据流控制
- 数据依赖性输入和输出缓冲区可用性
- 控制依赖任务排序、互不干扰、时间同步
- 线程内、线程间、进程间和虚拟机间
开发者工具
Nsight™ 系统
该系统范围的性能分析工具旨在可视化应用程序算法,选择最大的优化机会,并进行调整以在 DRIVE 平台上跨 CPU 和 GPU 高效扩展。
Nsight Graphics
一款独立的开发人员工具,可让您调试、分析和导出使用 Direct3D(11、12、DXR)、Vulkan(1.1、NV Vulkan 光线追踪扩展)、OpenGL、OpenVR 和 Oculus SDK 构建的帧。
Nsight Eclipse 版
Nsight IDE可用于开发CUDA应用程序并为异构平台创建同构开发环境。它使用户能够无缝调试 CPU 和 CUDA 代码、分析 CUDA 内核并有效重构代码以利用 GPU。
Nsight Compute
Nsight Compute是一款适用于 CUDA 应用程序的交互式内核分析器,可通过用户界面和命令行工具提供详细的性能指标和 API 调试。此外,其基线功能允许用户在工具内比较结果。
CUDA GDB
CUDA-GDB 提供基于控制台的调试界面,可在本地系统或通过 Telnet 或 SSH 访问的远程系统上的命令行使用。它提供了无缝的调试体验,可同时调试应用程序的 CPU 和 GPU 部分。
CUDA 内存检查
CUDA-MEMCHECK 检测 GPU 代码中内存访问错误的来源和原因,允许快速定位错误并报告运行时执行错误,以识别应用程序运行时可能导致“未指定的启动失败”错误的情况。
CUPTI
NVIDIA CUDA Profiler Tools Interface (CUPTI) 是一个动态库,可用于创建针对 CUDA 应用程序的分析和跟踪工具。 CUPTI提供了一组针对 ISV 创建分析器和其他性能优化工具的 API。
为 DRIVE OS 开发软件
DRIVE OS提供多种开发路径,包括桌面和嵌入式 Linux 以及嵌入式 QNX。 DRIVE OS Linux 和 DRIVE OS QNX SDK 主要用于使用上面列出的开发工具套件进行开发和原型设计。 DRIVE OS QNX for Safety 利用 Blackberry QNX for Safety 提供经过安全认证的生产。请参阅 NVIDIA DRIVE Safety 了解更多信息
下图展示了 DRIVE OS开发流程: