Dans Android 10, l' API Neural Networks (NNAPI) introduit des fonctions qui permettent aux bibliothèques et aux applications du cadre d'apprentissage automatique d'obtenir des informations sur les appareils disponibles et de spécifier sur quels appareils exécuter un modèle. Fournir des informations sur les appareils disponibles permet aux applications d'obtenir la version exacte des pilotes trouvés sur l'appareil afin d'éviter les incompatibilités connues. En donnant aux applications la possibilité de spécifier quels appareils doivent exécuter différentes sections d'un modèle, les applications peuvent être optimisées pour le produit sur lequel elles sont déployées.
La prise en charge de la découverte et de l'affectation des appareils est requise pour les implémentations de NN HAL 1.2.
Mise en œuvre
Pour prendre en charge les fonctionnalités de découverte et d'attribution de périphériques dans NNAPI, implémentez getType
et getVersionString
dans IDevice.hal
pour permettre à l'infrastructure d'obtenir le type de périphérique et la version du pilote.
Pour chaque appareil, spécifiez le type dans l'une des catégories suivantes, comme spécifié dans DeviceType
dans types.hal
.
-
OTHER
: Un appareil qui n'entre dans aucune des autres catégories, y compris une interface hétérogène, qui est une interfaceIDevice
unique qui gère plusieurs appareils, éventuellement de types différents. Un pilote avec une interface hétérogène doit également exposer des interfacesIDevice
distinctes qui correspondent à des appareils individuels pour permettre à une application de choisir parmi ces appareils. -
CPU
: Un processeur monocœur ou multicœur. -
GPU
: Un GPU capable d'exécuter des modèles NNAPI et d'accélérer les API graphiques telles que OpenGL ES et Vulkan. -
ACCELERATOR
: Une unité de traitement neuronal dédiée (NPU).
Implémentez getVersionString
dans IDevice.hal
pour obtenir la chaîne de version de l'implémentation du périphérique. Cette méthode doit renvoyer une chaîne lisible par l’homme. Le format de la chaîne dépend du fournisseur. La chaîne de version doit être différente pour chaque nouvelle version d'un pilote.
Le nom de l'interface IDevice
doit suivre le format {VENDOR}-{DEVICE_NAME}
.