Holoscan SDK 概述

📅 2026/7/4 3:20:36 👁️ 阅读次数 📝 编程学习
Holoscan SDK 概述

Holoscan SDK 概述

原文来源:NVIDIA Holoscan SDK 文档

翻译日期:2026年7月2日


平台简介

NVIDIA Holoscan是 AI 传感器处理平台,它整合了用于低延迟传感器和网络连接的硬件系统、用于数据处理和 AI 的优化库,以及用于运行流式、成像和其他应用的核心微服务——从嵌入式设备到边缘再到云端。它可用于构建面向多种领域的流式 AI 流水线(pipeline),包括医疗设备、边缘高性能计算、工业检测等。


Holoscan SDK 为开发者提供的能力

Holoscan SDK 通过以下方面为开发者提供支持:

1. 多种安装策略

从容器(containers)到 Python wheels,再到源码编译,从开发环境到部署环境,Holoscan SDK 提供了多种封装形式以适应不同需求。更多信息请参阅 SDK 安装 章节。

2. C++ 和 Python API

这些 API 现在是 Holoscan SDK 中创建应用流水线的推荐接口。请参阅 使用 SDK 章节了解如何利用这些 API,或查看 Doxygen 页面获取具体的 API 文档(C++ / Python)。

3. 内置 Operators(算子)

Holoscan 应用中的工作单元在Operators内实现,如 SDK 的 核心概念 所述。SDK 中包含的 operators 提供了领域无关的功能,如 IO、机器学习推理、处理和可视化——针对 AI 流式流水线进行了优化,并依托一系列 核心技术。本指南 此处 提供了 SDK 内置 operators 的更多信息。

4. 最小示例

Holoscan SDK 提供了一系列示例来展示 SDK 的特定功能。它们的源代码可在 GitHub 仓库 中找到。Holoscan 示例详解 章节对这些示例中的部分进行了逐步分析,以阐明 Holoscan SDK 的内部工作原理。

5. Operators 和 Applications 仓库

HoloHub是用户和开发者与 Holoscan 社区共享可复用 operators 和示例应用的中心仓库。作为开源项目,这些 operators 和应用也可用作参考实现,以补充 SDK 中提供的内置 operators 和示例。

6. 性能工具

正如相关技术章节所强调的,Holoscan 项目的灵魂是通过利用 NVIDIA 开发或第三方提供的硬件和软件来达到峰值性能。为验证这一点,Holoscan 提供了性能工具来帮助用户和开发者追踪其应用性能。目前包括:

  • 数据流追踪(Data Flow Tracking)功能——用于分析您的应用性能并剖析其计算图中 operators 之间的数据流。

7. 文档

Holoscan SDK 文档由以下部分组成:

  • 本用户指南,以 网页 格式提供
  • 针对每种 安装策略 的构建和运行说明
  • GitHub 上的 发行说明

文档结构导航

Holoscan SDK 文档 ├── 简介 │ ├── 概述(本文档) │ ├── 相关技术 │ └── 入门指南 ├── 环境搭建 │ ├── 搭建指南 │ ├── SDK 安装 │ ├── 额外设置 │ └── 第三方硬件设置 ├── 使用 SDK │ ├── Holoscan 核心 │ ├── GPU 驻留执行 │ ├── Holoscan 示例详解 │ │ ├── 创建应用 │ │ ├── 创建分布式应用 │ │ ├── 创建 Operator │ │ ├── 通过装饰器创建 Operator │ │ ├── 创建 Condition │ │ ├── 动态流控制 │ │ ├── CUDA 流处理 │ │ ├── 日志记录 │ │ └── 数据日志 │ ├── 调试 │ ├── Python Operator 绑定 │ └── ... ├── Operators │ ├── Operators 和扩展 │ ├── 可视化 │ ├── 推理 │ └── 测试 ├── 组件 │ ├── 调度器(Schedulers) │ ├── 条件(Conditions) │ ├── 资源(Resources) │ └── 分析(Analytics) ├── AI 技能 ├── API 参考 └── 性能 └── 数据流追踪

Holoscan 核心概念

原文来源:NVIDIA Holoscan SDK 文档 - Holoscan Core

翻译日期:2026年7月2日


架构概览

一个Application(应用)Fragments(片段)组成,每个 Fragment 运行一组Operators(算子)构成的计算图。该图的实现有时被称为pipeline(流水线)workflow(工作流),如下图所示:

核心概念:Application(应用)
核心概念:Port(端口)

Holoscan API 的核心概念

Application(应用)

一个Application(应用)负责采集和处理流式数据。应用是 Fragments 的集合,其中每个 Fragment 可以被分配到 Holoscan 集群的独占或共享物理节点上执行。

  • API 参考holoscan::Application(C++) /holoscan.core.Application(Python)

Fragment(片段)

Fragment(片段)是应用的构建块。它是一个Operators 的有向图。一个 Fragment 在执行期间可以被分配到 Holoscan 集群的一个物理节点上。运行时执行负责管理跨 Fragments 的通信。在 Fragment 中,Operators(图节点)通过flows(数据流,即图的边)相互连接。

  • API 参考holoscan::Fragment(C++) /holoscan.core.Fragment(Python)

Operator(算子)

Operator(算子)是本框架中最基本的工作单元。一个 Operator 在输入端口(input port)接收流式数据,对其进行处理,并将结果发布到其输出端口(output port)之一。

在由holoscan::gxf::GXFExecutor执行的应用中,Operator 对应于 GXF 特有的Codelet概念。

  • API 参考holoscan::Operator(C++) /holoscan.core.Operator(Python)

Port(端口)

Port(端口)是两个 Operators 之间的交互点。Operators 在Input ports(输入端口)接收数据,在Output ports(输出端口)发布数据。

Port是 Holoscan 概念,被holoscan::gxf::GXFExecutorholoscan::GPUResidentExecutor两者共同使用。

holoscan::gxf::GXFExecutor中,端口映射到 GXF 特有的Receiver(接收器)、Transmitter(发射器)和MessageRouter(消息路由器)概念,用于在连接的 Operators 之间传输数据。

  • API 参考holoscan::Port/holoscan::Input/holoscan::Output(C++) /holoscan.core.Input/holoscan.core.Output(Python)

Executor(执行器)

Executor(执行器)负责管理 Fragment 在物理节点上的执行。框架提供了执行器实现,如holoscan::gxf::GXFExecutorholoscan::GPUResidentExecutor,用于执行应用。

  • API 参考holoscan::Executor(C++) /holoscan.core.Executor(Python)

Scheduler(调度器)

Scheduler(调度器)决定 Fragment 中每个 Operator何时运行。

SDK 内置了三种调度器:

调度器说明适用场景
GreedyScheduler贪婪调度器简单的串行流水线
MultiThreadScheduler多线程调度器需要多线程并行
EventBasedScheduler事件驱动调度器推荐默认选项,适合具有并行性的流水线

推荐:对于具有并行性的流水线,推荐使用EventBasedScheduler

请参阅 选择调度器 获取决策表和配置指南。

  • API 参考holoscan::Scheduler(C++) /holoscan.core.Scheduler(Python)

GXF 执行器特有概念

以下概念特定于由holoscan::gxf::GXFExecutor执行的应用:

Codelet

Codelet是 GXF 特有的执行单元。在 Holoscan SDK 中,这一角色由Operator来表示。


(Operator) Resource(资源)

Resource(资源)是 Operator 执行工作所需的资源,如系统内存或 GPU 内存池。资源在应用的初始化阶段分配。

这对应于 GXF 的内存Allocator,或 GXF 中从Component类派生的任何其他组件。

  • API 参考holoscan::Resource(C++) /holoscan.core.Resource(Python)

Condition(条件)

Condition(条件)是一个可以在运行时求值以确定 Operator 是否应该执行的谓词。

  • API 参考holoscan::Condition(C++) /holoscan.core.Condition(Python)

Message(消息)

Message(消息)是 Operators 用来相互通信信息的通用数据对象。

  • API 参考holoscan::Message(C++) /holoscan.core.Message(Python)

Flow Graph API(数据流图 API)

Holoscan 4.1 使用FlowGraphFlowGraphImpl实现现有的面向数据流的图 API,以及 Python 模块holoscan.flow_graphs


概念关系总结

Application(应用) │ ├── Fragment(片段)→ 部署到物理节点 │ │ │ └── Operator Graph(算子图) │ │ │ ├── Operator(算子/工作单元) │ │ ├── Input Port(输入端口)← 接收数据 │ │ └── Output Port(输出端口)→ 发送数据 │ │ │ ├── Flow(数据流/边)→ 连接 Operators │ │ │ └── Scheduler(调度器)→ 控制执行时机 │ └── Executor(执行器)→ 管理运行时执行 │ ├── GXFExecutor → GXF 运行时 │ ├── Codelet ← Operator 的 GXF 映射 │ ├── Receiver/Transmitter ← Port 的 GXF 映射 │ └── Allocator ← Resource 的 GXF 映射 │ └── GPUResidentExecutor → GPU 驻留执行

关键术语表

英文术语中文翻译说明
Application应用由 Fragments 组成的顶层实体,负责采集和处理流式数据
Fragment片段应用的构建块,是 Operators 的有向图,可部署到物理节点
Operator算子最基本的工作单元,接收输入、处理数据、发布输出
Port端口Operators 之间的交互/连接点,分为 Input 和 Output
Flow数据流连接两个 Operators 的数据通路(图的边)
Executor执行器管理 Fragment 在物理节点上执行的运行时
Scheduler调度器决定 Operators 何时执行的调度策略
Condition条件运行时决定 Operator 是否执行的谓词
Message消息Operators 之间通信的通用数据对象
Resource资源Operator 执行所需的系统资源(内存、GPU 等)
Codelet代码片段GXF 特有的执行单元概念,对应 Holoscan 的 Operator
Receiver接收器GXF 中对应 Input Port 的概念
Transmitter发射器GXF 中对应 Output Port 的概念
Pipeline / Workflow流水线 / 工作流Operators 图的不同称呼

本翻译基于 NVIDIA Holoscan SDK 4.3 (Latest) 版本文档


关键术语表

英文术语中文翻译说明
Holoscan SDKHoloscan 软件开发工具包NVIDIA 的 AI 传感器处理平台 SDK
Operator算子 / 操作符Holoscan 应用中的工作单元
Pipeline流水线由多个 operators 组成的数据处理链
Streaming流式处理实时连续数据处理方式
Sensor Processing传感器处理对传感器输入数据进行采集、处理和 AI 推理
Edge Computing边缘计算在靠近数据源的边缘设备上进行计算
Data Flow Tracking数据流追踪用于性能分析的数据流剖析工具
Condition条件控制 operator 执行时机的机制
Scheduler调度器管理 operators 执行顺序的组件
HoloHubHoloHubHoloscan 社区共享 operators 和应用的开源仓库
CUDA StreamCUDA 流GPU 上的异步执行流
Python WheelPython Wheel 包Python 的一种二进制分发格式

本翻译基于 NVIDIA Holoscan SDK 4.3 (Latest) 版本文档