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.
DispatchDeviceContextSie wird zum Verwalten von Puffern verwendet, die für die NPU-Inferenz verwendet werden.
DispatchInvocationContextDies ist die Datenstruktur, die zum Ausführen des Modells verwendet wird. Dazu werden der in
DispatchDeviceContextregistrierte tatsächliche Ein- und Ausgabespeicher mit dem generiertenDispatchGraphverknüpft.
Dispatch APIs
Die vollständige Definition der Dispatch API finden Sie in der Datei vendors/c/litert_dispatch.h.