Holoscan 和 GXF
Holoscan 和 GXF 设计的核心有两个主要要素
如何定义和执行应用程序图。
如何定义节点的功能。
Holoscan SDK 在这些主题上与 GXF 交互的方式随着 Holoscan SDK 的发展而变化,如下所述
Holoscan SDK v0.2
Holoscan SDK 与 GXF 现有的接口紧密耦合
GXF 应用程序图在 YAML 配置文件中定义。GXE(图执行引擎)用于执行 AI 应用程序图。它的输入是 YAML 配置文件和要作为插件加载的 GXF 扩展列表(清单 YAML 文件)。这种设计允许实体被交换或更新,而无需重新编译应用程序。
组件通过在 GXF 扩展中注册来提供,每个扩展都映射到一个共享库和头文件。
这些概念在 GXF 示例 部分中进行了说明。
Holoscan 在 GXF 之上提供的唯一新增功能是
特定领域的参考应用程序
新的扩展
用于构建扩展和应用程序的 CMake 配置
Holoscan SDK v0.3
Holoscan SDK 转向提供更友好的 C++ 开发者接口
GXF 应用程序图、内存分配、调度和消息路由可以使用 C++ API 定义,并能够从 YAML 配置文件中读取参数和所需的 GXF 扩展名称。使用的后端仍然是 GXF,因为 Holoscan 使用 GXF C API,但这绕过了 GXE 和完整的 YAML 定义。
添加了 C++ Operator 类来包装和向新的应用程序接口公开 GXF 扩展(参见 开发指南)。
Holoscan SDK v0.4
Holoscan SDK 添加了 Python 封装和原生算子,以进一步提高易用性
C++ API 也被封装在 Python 中。GXF 仍然用作后端。
Operator 类支持原生算子,即不需要您实现和注册 GXF 扩展的算子。一个重要的特性是能够在原生算子和 GXF 算子之间支持消息传递,而不会有任何性能损失(即,张量的零拷贝通信)。
Holoscan SDK v0.5
内置的 Holoscan GXF 扩展会自动加载,无需在 Holoscan 应用程序的 YAML 配置文件中列出。这允许在不需要 YAML 配置文件的情况下定义 Holoscan 应用程序。
构建算子没有重大变化。但是,大多数内置算子都切换到原生实现,并且能够为 GXF 应用程序开发者将原生算子转换为 GXF 代码小组件。
Holoscan SDK v1.0
剩余的基于 GXF 的 DemosaicOp 算子已切换到原生实现。现在 SDK 提供的所有算子都是原生算子。
Holoscan SDK v2.9
Holoscan SDK 引入了一种方法来包装 Holoscan SDK 原生算子、资源和类型作为 GXF 代码小组件、组件和类型,从而使其能够在 GXF 应用程序中使用。有关更多详细信息,GXF 应用程序开发者可以参考 在 GXF 应用程序中使用 Holoscan 算子/资源/类型。