Quand dois-je implémenter l'API Dispatch ?
Une API LiteRT Dispatch est nécessaire lorsque vous devez intégrer un environnement d'exécution d'accélérateur matériel spécifique dans le framework LiteRT. Il fonctionne avec le plug-in du compilateur pour exécuter les sous-graphiques compilés émis par le plug-in du compilateur.
L'API Dispatch est un ensemble de fonctions implémentées par le fournisseur que LiteRT utilisera pour gérer une session avec le temps d'exécution d'un accélérateur. Ces fonctions couvrent les sessions d'appareil, l'exécution de sous-graphiques et le déplacement de mémoire tampon entre l'hôte et l'appareil. Les implémentations de l'API Dispatch, associées à un plug-in de compilation, permettent à LiteRT d'utiliser pleinement les capacités d'un accélérateur pour une inférence efficace.
Pour en savoir plus sur le moment où implémenter l'API de répartition (et le plug-in du compilateur), consultez la page Plug-in du compilateur LiteRT.
Comment fonctionne l'API Dispatch ?
L'API Dispatch est utilisée par CompiledModel à l'aide de NpuAccelerator. Cela crée en interne un DispatchDelegate. C'est ce DispatchDelegate qui utilise l'API Dispatch pour engager l'unité de traitement neuronal (NPU) intégrée au matériel en cours d'exécution.
Types de données de l'API Dispatch
Dans l'API Dispatch, les types de données suivants sont utilisés pour exécuter un modèle sur les NPU.
DispatchDeviceContextIl est utilisé pour gérer les tampons utilisés par l'inférence NPU.
DispatchInvocationContextIl s'agit de la structure de données utilisée pour exécuter le modèle. Pour ce faire, elle associe la mémoire d'entrée et de sortie réelle enregistrée dans
DispatchDeviceContextauDispatchGraphgénéré.
API Dispatch
Pour connaître la définition complète de l'API Dispatch, veuillez consulter le fichier vendors/c/litert_dispatch.h.