用于 NPU 运行时集成的 LiteRT 调度 API

我应该在什么情况下实现 Dispatch API?

当您需要将特定的硬件加速器运行时集成到 LiteRT 框架中时,需要使用 LiteRT 调度 API。它与编译器插件协同工作,以执行编译器插件发出的已编译子图。

调度 API 是一组供应商实现的功能,LiteRT 将使用这些功能来管理与加速器运行时的会话。这些函数涵盖设备会话、子图执行以及主机和设备之间的缓冲区移动。调度 API 的实现与编译器插件相结合,可让 LiteRT 充分利用加速器的功能,实现高效推理。

如需详细了解“何时”实现调度 API(和编译器插件),请参阅 LiteRT 编译器插件页面。

Dispatch API 的运作方式

调度 API 由 CompiledModel 使用 NpuAccelerator。这会在内部创建一个 DispatchDelegate,而正是这个 DispatchDelegate 使用 Dispatch API 来调用嵌入在运行硬件中的 NPU。

Dispatch API 数据类型

在 Dispatch API 中,以下数据类型用于在 NPU 上执行模型。

  • DispatchDeviceContext

    用于管理 NPU 推理所用的缓冲区。

  • DispatchInvocationContext

    这是用于执行模型的数据结构。其工作原理是将 DispatchDeviceContext 中注册的实际输入和输出内存与生成的 DispatchGraph 相关联。

调度 API

如需了解 Dispatch API 的完整定义,请参阅 vendors/c/litert_dispatch.h 文件。