LiteRT Dispatch API für die NPU-Laufzeitintegration

Wann sollte ich die Dispatch API implementieren?

Eine LiteRT Dispatch API ist erforderlich, wenn Sie eine bestimmte Hardwarebeschleuniger-Laufzeit in das LiteRT-Framework einbinden müssen. Es funktioniert mit dem Compiler-Plug-in, um die vom Compiler-Plug-in ausgegebenen kompilierten Untergraphen auszuführen.

Die Dispatch API ist eine Reihe von vom Anbieter implementierten Funktionen, die LiteRT verwendet, um eine Sitzung mit der Laufzeit eines Beschleunigers zu verwalten. Diese Funktionen umfassen Gerätesitzungen, die Ausführung von Teilgraphen und das Verschieben von Puffern zwischen Host und Gerät. Implementierungen der Dispatch-API in Verbindung mit einem Compiler-Plug-in ermöglichen es LiteRT, die Funktionen eines Beschleunigers für effiziente Inferenz vollständig zu nutzen.

Weitere Informationen dazu, wann die Dispatch API (und das Compiler-Plug-in) implementiert werden sollte, finden Sie auf der Seite LiteRT Compiler Plugin.

Wie funktioniert die Dispatch API?

Die Dispatch API wird von CompiledModel über NpuAccelerator verwendet. Dadurch wird intern ein DispatchDelegate erstellt, das die Dispatch API verwendet, um die in der laufenden Hardware eingebettete NPU zu nutzen.DispatchDelegate

Dispatch API-Datentypen

In der Dispatch API werden die folgenden Datentypen verwendet, um ein Modell auf NPUs auszuführen.

  • DispatchDeviceContext

    Sie wird zum Verwalten von Puffern verwendet, die für die NPU-Inferenz verwendet werden.

  • DispatchInvocationContext

    Dies ist die Datenstruktur, die zum Ausführen des Modells verwendet wird. Dazu werden der in DispatchDeviceContext registrierte tatsächliche Ein- und Ausgabespeicher mit dem generierten DispatchGraph verknüpft.

Dispatch APIs

Die vollständige Definition der Dispatch API finden Sie in der Datei vendors/c/litert_dispatch.h.