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 でモデルを実行します。
DispatchDeviceContextNPU 推論で使用されるバッファの管理に使用されます。
DispatchInvocationContextこれは、モデルの実行に使用されるデータ構造です。これは、
DispatchDeviceContextに登録された実際の入力メモリと出力メモリを生成されたDispatchGraphに関連付けることで機能します。
Dispatch API
Dispatch API の定義の全文については、vendors/c/litert_dispatch.h ファイルをご覧ください。