NPU ランタイム統合用の LiteRT Dispatch API

Dispatch API を実装するタイミング

LiteRT Dispatch API は、特定のハードウェア アクセラレータのランタイムを LiteRT フレームワークに統合する必要がある場合に必要です。コンパイラ プラグインと連携して、コンパイラ プラグインによって出力されたコンパイル済みサブグラフを実行します。

ディスパッチ API は、ベンダーが実装した一連の関数で、LiteRT がアクセラレータのランタイムとのセッションを管理するために使用します。これらの関数は、デバイス セッション、サブグラフの実行、ホストとデバイス間のバッファ移動を対象としています。ディスパッチ API の実装は、コンパイラ プラグインと連携して、LiteRT がアクセラレータの機能を最大限に活用して効率的な推論を行えるようにします。

ディスパッチ API(およびコンパイラ プラグイン)を実装する「タイミング」について詳しくは、LiteRT コンパイラ プラグインのページをご覧ください。

Dispatch API の仕組み

Dispatch API は、NpuAccelerator を使用する CompiledModel によって使用されます。これにより、内部的に DispatchDelegate が作成されます。この DispatchDelegate が Dispatch API を使用して、実行中のハードウェアに埋め込まれた NPU を使用します。

Dispatch API のデータ型

Dispatch API では、次のデータ型を使用して NPU でモデルを実行します。

  • DispatchDeviceContext

    NPU 推論で使用されるバッファの管理に使用されます。

  • DispatchInvocationContext

    これは、モデルの実行に使用されるデータ構造です。これは、DispatchDeviceContext に登録された実際の入力メモリと出力メモリを生成された DispatchGraph に関連付けることで機能します。

Dispatch API

Dispatch API の定義の全文については、vendors/c/litert_dispatch.h ファイルをご覧ください。